From 07ef76dd471a0892a893c90e0ab06713aee34be1 Mon Sep 17 00:00:00 2001 From: ss412g Date: Mon, 12 Aug 2019 17:26:40 +0300 Subject: [PATCH] push code back with legal issues fix Change-Id: I0fb323d1dedea5c1c219949684031430e7f7455e Signed-off-by: ss412g --- .gitignore | 13 + .gitreview | 5 + Automation/Dockerfile | 17 + Automation/Scripts/docker_ms.sh | 62 + Automation/Scripts/k8s_ms.py | 43 + Automation/Scripts/ric_ms.sh | 29 + Automation/Scripts/run.sh | 58 + .../ENDC-Setup/ENDC-setup_1_setup_request.robot | 29 + .../ENDC-Setup/ENDC-setup_2_get_nodeb_gnb.robot | 43 + Automation/Tests/ENDC-Setup/__init__.robot | 2 + Automation/Tests/ENDC-Setup/log.html | 2125 + Automation/Tests/ENDC-Setup/output.xml | 85 + Automation/Tests/ENDC-Setup/report.html | 2431 + Automation/Tests/ENDC-Setup/router.txt | 10 + .../Get_nodes_Add_nodes_and_get.robot | 42 + .../Tests/Get-All-Nodes/Get_nodes_flush.robot | 11 + Automation/Tests/Get-All-Nodes/__init__.robot | 2 + Automation/Tests/Get-All-Nodes/addtoredis.py | 32 + Automation/Tests/Get-All-Nodes/flush.py | 7 + Automation/Tests/Health/__init__.robot | 2 + Automation/Tests/Health/get_health_check.robot | 21 + Automation/Tests/Resource/resource.robot | 10 + Automation/Tests/Unhappy/Resource_not_found.robot | 20 + Automation/Tests/Unhappy/Response400.robot | 20 + Automation/Tests/Unhappy/Response500.robot | 18 + Automation/Tests/Unhappy/Setup_failure.robot | 32 + Automation/Tests/Unhappy/log.html | 2125 + Automation/Tests/Unhappy/output.xml | 155 + Automation/Tests/Unhappy/report.html | 2431 + Automation/Tests/Unhappy/router.txt | 10 + .../Tests/X2-Setup/X2-setup_1_send_request.robot | 29 + .../Tests/X2-Setup/X2-setup_2_get_nodeb_enb.robot | 42 + Automation/Tests/X2-Setup/__init__.robot | 2 + Automation/Tests/log.html | 2125 + Automation/Tests/output.xml | 79 + Automation/Tests/report.html | 2431 + Automation/Tests/router.txt | 17 + Automation/run_tests.sh | 4 + E2Manager/Dockerfile | 48 + E2Manager/asn1codec/.cproject | 124 + E2Manager/asn1codec/.project | 27 + E2Manager/asn1codec/Makefile | 54 + E2Manager/asn1codec/e2ap_engine/ABS-Status.c | 92 + E2Manager/asn1codec/e2ap_engine/ABS-Status.h | 69 + E2Manager/asn1codec/e2ap_engine/ABSInformation.c | 93 + E2Manager/asn1codec/e2ap_engine/ABSInformation.h | 83 + .../asn1codec/e2ap_engine/ABSInformationFDD.c | 224 + .../asn1codec/e2ap_engine/ABSInformationFDD.h | 81 + .../asn1codec/e2ap_engine/ABSInformationTDD.c | 224 + .../asn1codec/e2ap_engine/ABSInformationTDD.h | 81 + E2Manager/asn1codec/e2ap_engine/ANY.c | 451 + E2Manager/asn1codec/e2ap_engine/ANY.h | 66 + .../asn1codec/e2ap_engine/AS-SecurityInformation.c | 92 + .../asn1codec/e2ap_engine/AS-SecurityInformation.h | 69 + .../asn1codec/e2ap_engine/ActionParameter-ID.c | 80 + .../asn1codec/e2ap_engine/ActionParameter-ID.h | 63 + .../asn1codec/e2ap_engine/ActionParameter-Item.c | 79 + .../asn1codec/e2ap_engine/ActionParameter-Item.h | 65 + .../asn1codec/e2ap_engine/ActionParameter-Value.c | 121 + .../asn1codec/e2ap_engine/ActionParameter-Value.h | 89 + .../asn1codec/e2ap_engine/ActivatedCellList-Item.c | 82 + .../asn1codec/e2ap_engine/ActivatedCellList-Item.h | 67 + .../asn1codec/e2ap_engine/ActivatedCellList.c | 69 + .../asn1codec/e2ap_engine/ActivatedCellList.h | 60 + .../e2ap_engine/ActivatedNRCellList-Item.c | 82 + .../e2ap_engine/ActivatedNRCellList-Item.h | 67 + .../asn1codec/e2ap_engine/ActivatedNRCellList.c | 69 + .../asn1codec/e2ap_engine/ActivatedNRCellList.h | 60 + E2Manager/asn1codec/e2ap_engine/ActivationID.c | 80 + E2Manager/asn1codec/e2ap_engine/ActivationID.h | 63 + .../e2ap_engine/AdditionalSpecialSubframe-Info.c | 102 + .../e2ap_engine/AdditionalSpecialSubframe-Info.h | 71 + .../AdditionalSpecialSubframeExtension-Info.c | 102 + .../AdditionalSpecialSubframeExtension-Info.h | 71 + .../AdditionalSpecialSubframePatterns.c | 90 + .../AdditionalSpecialSubframePatterns.h | 81 + .../AdditionalSpecialSubframePatternsExtension.c | 72 + .../AdditionalSpecialSubframePatternsExtension.h | 72 + .../e2ap_engine/AerialUEsubscriptionInformation.c | 74 + .../e2ap_engine/AerialUEsubscriptionInformation.h | 73 + .../e2ap_engine/AllocationAndRetentionPriority.c | 102 + .../e2ap_engine/AllocationAndRetentionPriority.h | 71 + E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.c | 104 + E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.h | 85 + E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.c | 105 + E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.h | 86 + E2Manager/asn1codec/e2ap_engine/BIT_STRING.c | 657 + E2Manager/asn1codec/e2ap_engine/BIT_STRING.h | 49 + E2Manager/asn1codec/e2ap_engine/BOOLEAN.c | 493 + E2Manager/asn1codec/e2ap_engine/BOOLEAN.h | 46 + E2Manager/asn1codec/e2ap_engine/BandInfo.c | 82 + E2Manager/asn1codec/e2ap_engine/BandInfo.h | 67 + .../asn1codec/e2ap_engine/BandwidthReducedSI.c | 72 + .../asn1codec/e2ap_engine/BandwidthReducedSI.h | 72 + E2Manager/asn1codec/e2ap_engine/BearerType.c | 72 + E2Manager/asn1codec/e2ap_engine/BearerType.h | 72 + E2Manager/asn1codec/e2ap_engine/BenefitMetric.c | 80 + E2Manager/asn1codec/e2ap_engine/BenefitMetric.h | 63 + E2Manager/asn1codec/e2ap_engine/BitRate.c | 86 + E2Manager/asn1codec/e2ap_engine/BitRate.h | 63 + .../asn1codec/e2ap_engine/BluetoothMeasConfig.c | 72 + .../asn1codec/e2ap_engine/BluetoothMeasConfig.h | 72 + .../e2ap_engine/BluetoothMeasConfigNameList.c | 68 + .../e2ap_engine/BluetoothMeasConfigNameList.h | 61 + .../BluetoothMeasurementConfiguration.c | 149 + .../BluetoothMeasurementConfiguration.h | 80 + E2Manager/asn1codec/e2ap_engine/BluetoothName.c | 81 + E2Manager/asn1codec/e2ap_engine/BluetoothName.h | 63 + .../asn1codec/e2ap_engine/BroadcastPLMNs-Item.c | 68 + .../asn1codec/e2ap_engine/BroadcastPLMNs-Item.h | 61 + .../asn1codec/e2ap_engine/CNTypeRestrictions.c | 69 + .../asn1codec/e2ap_engine/CNTypeRestrictions.h | 63 + .../asn1codec/e2ap_engine/CNTypeRestrictionsItem.c | 138 + .../asn1codec/e2ap_engine/CNTypeRestrictionsItem.h | 78 + .../asn1codec/e2ap_engine/COUNTValueExtended.c | 92 + .../asn1codec/e2ap_engine/COUNTValueExtended.h | 69 + E2Manager/asn1codec/e2ap_engine/COUNTvalue.c | 92 + E2Manager/asn1codec/e2ap_engine/COUNTvalue.h | 69 + .../e2ap_engine/COUNTvaluePDCP-SNlength18.c | 92 + .../e2ap_engine/COUNTvaluePDCP-SNlength18.h | 69 + E2Manager/asn1codec/e2ap_engine/CRNTI.c | 86 + E2Manager/asn1codec/e2ap_engine/CRNTI.h | 63 + E2Manager/asn1codec/e2ap_engine/CSG-Id.c | 86 + E2Manager/asn1codec/e2ap_engine/CSG-Id.h | 63 + .../asn1codec/e2ap_engine/CSGMembershipStatus.c | 72 + .../asn1codec/e2ap_engine/CSGMembershipStatus.h | 70 + E2Manager/asn1codec/e2ap_engine/CSIReportList.c | 133 + E2Manager/asn1codec/e2ap_engine/CSIReportList.h | 80 + .../asn1codec/e2ap_engine/CSIReportPerCSIProcess.c | 163 + .../asn1codec/e2ap_engine/CSIReportPerCSIProcess.h | 80 + .../e2ap_engine/CSIReportPerCSIProcessItem.c | 184 + .../e2ap_engine/CSIReportPerCSIProcessItem.h | 84 + E2Manager/asn1codec/e2ap_engine/CallProcess-ID.c | 50 + E2Manager/asn1codec/e2ap_engine/CallProcess-ID.h | 62 + E2Manager/asn1codec/e2ap_engine/CapacityValue.c | 80 + E2Manager/asn1codec/e2ap_engine/CapacityValue.h | 63 + E2Manager/asn1codec/e2ap_engine/Cause.c | 101 + E2Manager/asn1codec/e2ap_engine/Cause.h | 84 + E2Manager/asn1codec/e2ap_engine/CauseMisc.c | 80 + E2Manager/asn1codec/e2ap_engine/CauseMisc.h | 76 + E2Manager/asn1codec/e2ap_engine/CauseProtocol.c | 84 + E2Manager/asn1codec/e2ap_engine/CauseProtocol.h | 78 + E2Manager/asn1codec/e2ap_engine/CauseRIC.c | 96 + E2Manager/asn1codec/e2ap_engine/CauseRIC.h | 84 + .../asn1codec/e2ap_engine/CauseRadioNetwork.c | 172 + .../asn1codec/e2ap_engine/CauseRadioNetwork.h | 122 + E2Manager/asn1codec/e2ap_engine/CauseTransport.c | 74 + E2Manager/asn1codec/e2ap_engine/CauseTransport.h | 73 + E2Manager/asn1codec/e2ap_engine/Cell-Size.c | 78 + E2Manager/asn1codec/e2ap_engine/Cell-Size.h | 75 + .../asn1codec/e2ap_engine/CellActivationFailure.c | 69 + .../asn1codec/e2ap_engine/CellActivationFailure.h | 61 + .../asn1codec/e2ap_engine/CellActivationRequest.c | 69 + .../asn1codec/e2ap_engine/CellActivationRequest.h | 61 + .../asn1codec/e2ap_engine/CellActivationResponse.c | 69 + .../asn1codec/e2ap_engine/CellActivationResponse.h | 61 + .../e2ap_engine/CellAssistanceInformation.c | 128 + .../e2ap_engine/CellAssistanceInformation.h | 84 + E2Manager/asn1codec/e2ap_engine/CellBasedMDT.c | 82 + E2Manager/asn1codec/e2ap_engine/CellBasedMDT.h | 67 + E2Manager/asn1codec/e2ap_engine/CellBasedQMC.c | 82 + E2Manager/asn1codec/e2ap_engine/CellBasedQMC.h | 67 + .../asn1codec/e2ap_engine/CellCapacityClassValue.c | 80 + .../asn1codec/e2ap_engine/CellCapacityClassValue.h | 63 + .../e2ap_engine/CellDeploymentStatusIndicator.c | 72 + .../e2ap_engine/CellDeploymentStatusIndicator.h | 72 + E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.c | 69 + E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.h | 63 + E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.c | 69 + E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.h | 63 + .../asn1codec/e2ap_engine/CellInformation-Item.c | 115 + .../asn1codec/e2ap_engine/CellInformation-Item.h | 71 + .../asn1codec/e2ap_engine/CellInformation-List.c | 69 + .../asn1codec/e2ap_engine/CellInformation-List.h | 60 + .../e2ap_engine/CellMeasurementResult-Item.c | 115 + .../e2ap_engine/CellMeasurementResult-Item.h | 71 + .../e2ap_engine/CellMeasurementResult-List.c | 69 + .../e2ap_engine/CellMeasurementResult-List.h | 60 + .../asn1codec/e2ap_engine/CellReplacingInfo.c | 82 + .../asn1codec/e2ap_engine/CellReplacingInfo.h | 67 + .../asn1codec/e2ap_engine/CellReportingIndicator.c | 72 + .../asn1codec/e2ap_engine/CellReportingIndicator.h | 72 + .../asn1codec/e2ap_engine/CellToReport-Item.c | 82 + .../asn1codec/e2ap_engine/CellToReport-Item.h | 65 + .../asn1codec/e2ap_engine/CellToReport-List.c | 69 + .../asn1codec/e2ap_engine/CellToReport-List.h | 60 + E2Manager/asn1codec/e2ap_engine/CellType.c | 82 + E2Manager/asn1codec/e2ap_engine/CellType.h | 67 + .../asn1codec/e2ap_engine/CoMPHypothesisSet.c | 69 + .../asn1codec/e2ap_engine/CoMPHypothesisSet.h | 63 + .../asn1codec/e2ap_engine/CoMPHypothesisSetItem.c | 128 + .../asn1codec/e2ap_engine/CoMPHypothesisSetItem.h | 69 + E2Manager/asn1codec/e2ap_engine/CoMPInformation.c | 92 + E2Manager/asn1codec/e2ap_engine/CoMPInformation.h | 69 + .../asn1codec/e2ap_engine/CoMPInformationItem.c | 133 + .../asn1codec/e2ap_engine/CoMPInformationItem.h | 80 + .../e2ap_engine/CoMPInformationStartTime.c | 193 + .../e2ap_engine/CoMPInformationStartTime.h | 79 + .../CompleteFailureCauseInformation-Item.c | 92 + .../CompleteFailureCauseInformation-Item.h | 67 + .../CompleteFailureCauseInformation-List.c | 69 + .../CompleteFailureCauseInformation-List.h | 60 + .../e2ap_engine/CompositeAvailableCapacity.c | 92 + .../e2ap_engine/CompositeAvailableCapacity.h | 69 + .../e2ap_engine/CompositeAvailableCapacityGroup.c | 92 + .../e2ap_engine/CompositeAvailableCapacityGroup.h | 68 + E2Manager/asn1codec/e2ap_engine/Correlation-ID.c | 81 + E2Manager/asn1codec/e2ap_engine/Correlation-ID.h | 63 + .../e2ap_engine/CoverageModification-Item.c | 132 + .../e2ap_engine/CoverageModification-Item.h | 71 + .../e2ap_engine/CoverageModificationList.c | 69 + .../e2ap_engine/CoverageModificationList.h | 63 + E2Manager/asn1codec/e2ap_engine/Criticality.c | 74 + E2Manager/asn1codec/e2ap_engine/Criticality.h | 71 + .../e2ap_engine/CriticalityDiagnostics-IE-List.c | 143 + .../e2ap_engine/CriticalityDiagnostics-IE-List.h | 82 + .../asn1codec/e2ap_engine/CriticalityDiagnostics.c | 113 + .../asn1codec/e2ap_engine/CriticalityDiagnostics.h | 73 + E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.c | 74 + E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.h | 73 + E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.c | 74 + E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.h | 73 + E2Manager/asn1codec/e2ap_engine/DL-ABS-status.c | 80 + E2Manager/asn1codec/e2ap_engine/DL-ABS-status.h | 63 + E2Manager/asn1codec/e2ap_engine/DL-Forwarding.c | 72 + E2Manager/asn1codec/e2ap_engine/DL-Forwarding.h | 72 + E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c | 80 + E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h | 63 + .../asn1codec/e2ap_engine/DL-Total-PRB-usage.c | 80 + .../asn1codec/e2ap_engine/DL-Total-PRB-usage.h | 63 + .../asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c | 80 + .../asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h | 63 + .../e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c | 80 + .../e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h | 63 + .../e2ap_engine/DLResourceBitmapULandDLSharing.c | 86 + .../e2ap_engine/DLResourceBitmapULandDLSharing.h | 63 + .../e2ap_engine/DLResourcesULandDLSharing.c | 81 + .../e2ap_engine/DLResourcesULandDLSharing.h | 78 + E2Manager/asn1codec/e2ap_engine/DRB-ID.c | 80 + E2Manager/asn1codec/e2ap_engine/DRB-ID.h | 63 + .../e2ap_engine/DataForwardingAddressIndication.c | 69 + .../e2ap_engine/DataForwardingAddressIndication.h | 61 + .../e2ap_engine/DataTrafficResourceIndication.c | 133 + .../e2ap_engine/DataTrafficResourceIndication.h | 71 + .../asn1codec/e2ap_engine/DataTrafficResources.c | 86 + .../asn1codec/e2ap_engine/DataTrafficResources.h | 63 + .../asn1codec/e2ap_engine/DeactivationIndication.c | 72 + .../asn1codec/e2ap_engine/DeactivationIndication.h | 72 + E2Manager/asn1codec/e2ap_engine/DeliveryStatus.c | 112 + E2Manager/asn1codec/e2ap_engine/DeliveryStatus.h | 67 + .../asn1codec/e2ap_engine/DuplicationActivation.c | 74 + .../asn1codec/e2ap_engine/DuplicationActivation.h | 73 + .../e2ap_engine/DynamicDLTransmissionInformation.c | 82 + .../e2ap_engine/DynamicDLTransmissionInformation.h | 80 + .../e2ap_engine/DynamicNAICSInformation.c | 241 + .../e2ap_engine/DynamicNAICSInformation.h | 78 + E2Manager/asn1codec/e2ap_engine/E-RAB-ID.c | 80 + E2Manager/asn1codec/e2ap_engine/E-RAB-ID.h | 63 + E2Manager/asn1codec/e2ap_engine/E-RAB-Item.c | 92 + E2Manager/asn1codec/e2ap_engine/E-RAB-Item.h | 69 + .../e2ap_engine/E-RAB-Level-QoS-Parameters.c | 103 + .../e2ap_engine/E-RAB-Level-QoS-Parameters.h | 71 + E2Manager/asn1codec/e2ap_engine/E-RAB-List.c | 69 + E2Manager/asn1codec/e2ap_engine/E-RAB-List.h | 63 + .../asn1codec/e2ap_engine/E-RABUsageReport-Item.c | 316 + .../asn1codec/e2ap_engine/E-RABUsageReport-Item.h | 73 + .../asn1codec/e2ap_engine/E-RABUsageReportList.c | 69 + .../asn1codec/e2ap_engine/E-RABUsageReportList.h | 63 + .../asn1codec/e2ap_engine/E-RABs-Admitted-Item.c | 103 + .../asn1codec/e2ap_engine/E-RABs-Admitted-Item.h | 68 + .../asn1codec/e2ap_engine/E-RABs-Admitted-List.c | 69 + .../asn1codec/e2ap_engine/E-RABs-Admitted-List.h | 60 + .../E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c | 113 + .../E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h | 72 + .../E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c | 92 + .../E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h | 69 + .../e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c | 83 + .../e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h | 77 + .../e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c | 69 + .../e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h | 60 + ...RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c | 113 + ...RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h | 72 + ...Bs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c | 92 + ...Bs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h | 69 + .../E-RABs-Admitted-ToBeAdded-ModAckItem.c | 83 + .../E-RABs-Admitted-ToBeAdded-ModAckItem.h | 77 + .../E-RABs-Admitted-ToBeAdded-ModAckList.c | 69 + .../E-RABs-Admitted-ToBeAdded-ModAckList.h | 60 + ...BeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c | 93 + ...BeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h | 69 + ...-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c | 145 + ...-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h | 77 + .../E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c | 158 + .../E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h | 93 + .../E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c | 69 + .../E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h | 60 + ...-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c | 93 + ...-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h | 69 + ...ted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c | 145 + ...ted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h | 77 + .../E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c | 158 + .../E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h | 93 + .../E-RABs-Admitted-ToBeAdded-SgNBModAckList.c | 69 + .../E-RABs-Admitted-ToBeAdded-SgNBModAckList.h | 60 + ...s-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c | 93 + ...s-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h | 69 + ...Admitted-ToBeModified-ModAckItem-Split-Bearer.c | 93 + ...Admitted-ToBeModified-ModAckItem-Split-Bearer.h | 69 + .../E-RABs-Admitted-ToBeModified-ModAckItem.c | 83 + .../E-RABs-Admitted-ToBeModified-ModAckItem.h | 77 + .../E-RABs-Admitted-ToBeModified-ModAckList.c | 69 + .../E-RABs-Admitted-ToBeModified-ModAckList.h | 60 + ...BeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c | 83 + ...BeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h | 67 + ...-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c | 115 + ...-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h | 72 + .../E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c | 158 + .../E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h | 93 + .../E-RABs-Admitted-ToBeModified-SgNBModAckList.c | 69 + .../E-RABs-Admitted-ToBeModified-SgNBModAckList.h | 60 + ...s-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c | 82 + ...s-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h | 67 + ...Admitted-ToBeReleased-ModAckItem-Split-Bearer.c | 82 + ...Admitted-ToBeReleased-ModAckItem-Split-Bearer.h | 67 + .../E-RABs-Admitted-ToBeReleased-ModAckList.c | 69 + .../E-RABs-Admitted-ToBeReleased-ModAckList.h | 60 + ...BeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c | 72 + ...BeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h | 65 + ...-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c | 72 + ...-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h | 65 + .../E-RABs-Admitted-ToBeReleased-SgNBModAckList.c | 69 + .../E-RABs-Admitted-ToBeReleased-SgNBModAckList.h | 60 + ...RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c | 92 + ...RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h | 67 + ...-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c | 69 + ...-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h | 60 + .../E-RABs-Admitted-ToReleased-ModAckItem.c | 83 + .../E-RABs-Admitted-ToReleased-ModAckItem.h | 77 + .../E-RABs-Admitted-ToReleased-SgNBModAck-Item.c | 158 + .../E-RABs-Admitted-ToReleased-SgNBModAck-Item.h | 93 + ...eModified-SgNBModConf-Item-SgNBPDCPnotpresent.c | 83 + ...eModified-SgNBModConf-Item-SgNBPDCPnotpresent.h | 67 + ...ToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c | 72 + ...ToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h | 65 + .../E-RABs-AdmittedToBeModified-SgNBModConf-Item.c | 158 + .../E-RABs-AdmittedToBeModified-SgNBModConf-Item.h | 93 + .../E-RABs-AdmittedToBeModified-SgNBModConfList.c | 69 + .../E-RABs-AdmittedToBeModified-SgNBModConfList.h | 60 + .../E-RABs-DataForwardingAddress-Item.c | 92 + .../E-RABs-DataForwardingAddress-Item.h | 67 + .../E-RABs-DataForwardingAddress-List.c | 69 + .../E-RABs-DataForwardingAddress-List.h | 60 + .../E-RABs-SubjectToCounterCheck-List.c | 69 + .../E-RABs-SubjectToCounterCheck-List.h | 60 + .../e2ap_engine/E-RABs-SubjectToCounterCheckItem.c | 244 + .../e2ap_engine/E-RABs-SubjectToCounterCheckItem.h | 70 + .../E-RABs-SubjectToSgNBCounterCheck-Item.c | 244 + .../E-RABs-SubjectToSgNBCounterCheck-Item.h | 70 + .../E-RABs-SubjectToSgNBCounterCheck-List.c | 69 + .../E-RABs-SubjectToSgNBCounterCheck-List.h | 60 + .../E-RABs-SubjectToStatusTransfer-Item.c | 112 + .../E-RABs-SubjectToStatusTransfer-Item.h | 70 + .../E-RABs-SubjectToStatusTransfer-List.c | 69 + .../E-RABs-SubjectToStatusTransfer-List.h | 60 + .../e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c | 112 + .../e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h | 73 + .../E-RABs-ToBeAdded-Item-Split-Bearer.c | 102 + .../E-RABs-ToBeAdded-Item-Split-Bearer.h | 71 + .../asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c | 83 + .../asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h | 77 + .../e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c | 69 + .../e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h | 63 + .../asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c | 69 + .../asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h | 60 + .../E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c | 112 + .../E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h | 73 + .../E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c | 102 + .../E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h | 71 + .../e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c | 83 + .../e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h | 77 + ...-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c | 124 + ...-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h | 75 + ...ABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c | 124 + ...ABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h | 75 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c | 168 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h | 95 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c | 69 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h | 60 + ...-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c | 124 + ...-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h | 75 + ...ABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c | 124 + ...ABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h | 75 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c | 168 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h | 95 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c | 69 + .../e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h | 63 + .../e2ap_engine/E-RABs-ToBeModified-List-ModReq.c | 69 + .../e2ap_engine/E-RABs-ToBeModified-List-ModReq.h | 63 + .../E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c | 104 + .../E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h | 71 + .../E-RABs-ToBeModified-ModReqItem-Split-Bearer.c | 104 + .../E-RABs-ToBeModified-ModReqItem-Split-Bearer.h | 71 + .../e2ap_engine/E-RABs-ToBeModified-ModReqItem.c | 83 + .../e2ap_engine/E-RABs-ToBeModified-ModReqItem.h | 77 + ...BeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c | 105 + ...BeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h | 71 + ...-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c | 115 + ...-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h | 72 + .../E-RABs-ToBeModified-SgNBModReq-Item.c | 158 + .../E-RABs-ToBeModified-SgNBModReq-Item.h | 93 + .../E-RABs-ToBeModified-SgNBModReq-List.c | 69 + .../E-RABs-ToBeModified-SgNBModReq-List.h | 63 + ...eModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c | 93 + ...eModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h | 68 + ...ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c | 115 + ...ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h | 72 + .../E-RABs-ToBeModified-SgNBModReqd-Item.c | 158 + .../E-RABs-ToBeModified-SgNBModReqd-Item.h | 93 + .../E-RABs-ToBeModified-SgNBModReqdList.c | 69 + .../E-RABs-ToBeModified-SgNBModReqdList.h | 60 + .../e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c | 69 + .../e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h | 63 + .../e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c | 69 + .../e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h | 60 + .../e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c | 69 + .../e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h | 60 + .../E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c | 103 + .../E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h | 70 + .../E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c | 93 + .../E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h | 69 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c | 83 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h | 77 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqd.c | 69 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqd.h | 60 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c | 92 + .../e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h | 67 + .../E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c | 103 + .../E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h | 70 + .../E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c | 93 + .../E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h | 69 + .../e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c | 83 + .../e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h | 77 + .../E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c | 103 + .../E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h | 70 + .../E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c | 93 + .../E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h | 69 + .../e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c | 83 + .../e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h | 77 + ...eReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c | 72 + ...eReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h | 65 + ...ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c | 93 + ...ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h | 68 + .../E-RABs-ToBeReleased-SgNBChaConf-Item.c | 158 + .../E-RABs-ToBeReleased-SgNBChaConf-Item.h | 93 + .../E-RABs-ToBeReleased-SgNBChaConfList.c | 69 + .../E-RABs-ToBeReleased-SgNBChaConfList.h | 60 + ...BeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c | 72 + ...BeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h | 65 + ...-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c | 93 + ...-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h | 68 + .../E-RABs-ToBeReleased-SgNBModReq-Item.c | 158 + .../E-RABs-ToBeReleased-SgNBModReq-Item.h | 93 + .../E-RABs-ToBeReleased-SgNBModReq-List.c | 69 + .../E-RABs-ToBeReleased-SgNBModReq-List.h | 63 + .../E-RABs-ToBeReleased-SgNBModReqd-Item.c | 92 + .../E-RABs-ToBeReleased-SgNBModReqd-Item.h | 67 + .../E-RABs-ToBeReleased-SgNBModReqdList.c | 69 + .../E-RABs-ToBeReleased-SgNBModReqdList.h | 60 + ...eReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c | 72 + ...eReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h | 65 + ...ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c | 93 + ...ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h | 68 + .../E-RABs-ToBeReleased-SgNBRelConf-Item.c | 158 + .../E-RABs-ToBeReleased-SgNBRelConf-Item.h | 93 + .../E-RABs-ToBeReleased-SgNBRelConfList.c | 69 + .../E-RABs-ToBeReleased-SgNBRelConfList.h | 60 + ...BeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c | 72 + ...BeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h | 65 + ...-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c | 93 + ...-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h | 68 + .../E-RABs-ToBeReleased-SgNBRelReq-Item.c | 158 + .../E-RABs-ToBeReleased-SgNBRelReq-Item.h | 93 + .../E-RABs-ToBeReleased-SgNBRelReqList.c | 69 + .../E-RABs-ToBeReleased-SgNBRelReqList.h | 60 + .../E-RABs-ToBeReleased-SgNBRelReqd-Item.c | 92 + .../E-RABs-ToBeReleased-SgNBRelReqd-Item.h | 67 + .../E-RABs-ToBeReleased-SgNBRelReqdList.c | 69 + .../E-RABs-ToBeReleased-SgNBRelReqdList.h | 60 + .../asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c | 112 + .../asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h | 71 + .../asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c | 69 + .../asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h | 63 + .../e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c | 69 + .../e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h | 63 + .../e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c | 102 + .../e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h | 69 + E2Manager/asn1codec/e2ap_engine/E2AP-PDU.c | 94 + E2Manager/asn1codec/e2ap_engine/E2AP-PDU.h | 80 + .../e2ap_engine/E2SM-gNB-X2-actionDefinition.c | 155 + .../e2ap_engine/E2SM-gNB-X2-actionDefinition.h | 72 + .../e2ap_engine/E2SM-gNB-X2-callProcessID.c | 69 + .../e2ap_engine/E2SM-gNB-X2-callProcessID.h | 61 + .../e2ap_engine/E2SM-gNB-X2-controlHeader.c | 79 + .../e2ap_engine/E2SM-gNB-X2-controlHeader.h | 63 + .../e2ap_engine/E2SM-gNB-X2-controlMessage.c | 69 + .../e2ap_engine/E2SM-gNB-X2-controlMessage.h | 61 + .../E2SM-gNB-X2-eventTriggerDefinition.c | 175 + .../E2SM-gNB-X2-eventTriggerDefinition.h | 76 + .../e2ap_engine/E2SM-gNB-X2-indicationHeader.c | 91 + .../e2ap_engine/E2SM-gNB-X2-indicationHeader.h | 65 + .../e2ap_engine/E2SM-gNB-X2-indicationMessage.c | 69 + .../e2ap_engine/E2SM-gNB-X2-indicationMessage.h | 61 + E2Manager/asn1codec/e2ap_engine/EARFCN.c | 80 + E2Manager/asn1codec/e2ap_engine/EARFCN.h | 63 + E2Manager/asn1codec/e2ap_engine/EARFCNExtension.c | 80 + E2Manager/asn1codec/e2ap_engine/EARFCNExtension.h | 63 + E2Manager/asn1codec/e2ap_engine/ECGI.c | 92 + E2Manager/asn1codec/e2ap_engine/ECGI.h | 69 + .../e2ap_engine/EN-DC-ResourceConfiguration.c | 246 + .../e2ap_engine/EN-DC-ResourceConfiguration.h | 95 + E2Manager/asn1codec/e2ap_engine/ENB-ID.c | 245 + E2Manager/asn1codec/e2ap_engine/ENB-ID.h | 80 + .../asn1codec/e2ap_engine/ENBConfigurationUpdate.c | 69 + .../asn1codec/e2ap_engine/ENBConfigurationUpdate.h | 63 + .../ENBConfigurationUpdateAcknowledge.c | 69 + .../ENBConfigurationUpdateAcknowledge.h | 63 + .../e2ap_engine/ENBConfigurationUpdateFailure.c | 69 + .../e2ap_engine/ENBConfigurationUpdateFailure.h | 63 + .../e2ap_engine/ENDCCellActivationFailure.c | 69 + .../e2ap_engine/ENDCCellActivationFailure.h | 61 + .../e2ap_engine/ENDCCellActivationRequest.c | 69 + .../e2ap_engine/ENDCCellActivationRequest.h | 61 + .../e2ap_engine/ENDCCellActivationResponse.c | 69 + .../e2ap_engine/ENDCCellActivationResponse.h | 61 + .../e2ap_engine/ENDCConfigurationUpdate.c | 69 + .../e2ap_engine/ENDCConfigurationUpdate.h | 63 + .../ENDCConfigurationUpdateAcknowledge.c | 69 + .../ENDCConfigurationUpdateAcknowledge.h | 63 + .../e2ap_engine/ENDCConfigurationUpdateFailure.c | 69 + .../e2ap_engine/ENDCConfigurationUpdateFailure.h | 63 + .../e2ap_engine/ENDCPartialResetConfirm.c | 69 + .../e2ap_engine/ENDCPartialResetConfirm.h | 61 + .../e2ap_engine/ENDCPartialResetRequired.c | 69 + .../e2ap_engine/ENDCPartialResetRequired.h | 61 + .../asn1codec/e2ap_engine/ENDCX2RemovalFailure.c | 69 + .../asn1codec/e2ap_engine/ENDCX2RemovalFailure.h | 61 + .../asn1codec/e2ap_engine/ENDCX2RemovalRequest.c | 69 + .../asn1codec/e2ap_engine/ENDCX2RemovalRequest.h | 61 + .../asn1codec/e2ap_engine/ENDCX2RemovalResponse.c | 69 + .../asn1codec/e2ap_engine/ENDCX2RemovalResponse.h | 61 + .../asn1codec/e2ap_engine/ENDCX2SetupFailure.c | 69 + .../asn1codec/e2ap_engine/ENDCX2SetupFailure.h | 63 + .../asn1codec/e2ap_engine/ENDCX2SetupRequest.c | 69 + .../asn1codec/e2ap_engine/ENDCX2SetupRequest.h | 63 + .../asn1codec/e2ap_engine/ENDCX2SetupResponse.c | 69 + .../asn1codec/e2ap_engine/ENDCX2SetupResponse.h | 63 + E2Manager/asn1codec/e2ap_engine/EPLMNs.c | 68 + E2Manager/asn1codec/e2ap_engine/EPLMNs.h | 61 + .../asn1codec/e2ap_engine/ERABActivityNotifyItem.c | 92 + .../asn1codec/e2ap_engine/ERABActivityNotifyItem.h | 69 + .../e2ap_engine/ERABActivityNotifyItemList.c | 69 + .../e2ap_engine/ERABActivityNotifyItemList.h | 63 + E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.c | 83 + E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.h | 80 + .../asn1codec/e2ap_engine/EUTRANCellIdentifier.c | 86 + .../asn1codec/e2ap_engine/EUTRANCellIdentifier.h | 63 + .../EUTRANRCellResourceCoordinationRequest.c | 69 + .../EUTRANRCellResourceCoordinationRequest.h | 61 + .../EUTRANRCellResourceCoordinationResponse.c | 69 + .../EUTRANRCellResourceCoordinationResponse.h | 61 + E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.c | 81 + E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.h | 63 + .../asn1codec/e2ap_engine/EncryptionAlgorithms.c | 86 + .../asn1codec/e2ap_engine/EncryptionAlgorithms.h | 63 + E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.c | 139 + E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.h | 71 + .../asn1codec/e2ap_engine/EnhancedRNTPStartTime.c | 152 + .../asn1codec/e2ap_engine/EnhancedRNTPStartTime.h | 68 + E2Manager/asn1codec/e2ap_engine/ErrorIndication.c | 69 + E2Manager/asn1codec/e2ap_engine/ErrorIndication.h | 63 + E2Manager/asn1codec/e2ap_engine/EventType.c | 72 + E2Manager/asn1codec/e2ap_engine/EventType.h | 72 + .../asn1codec/e2ap_engine/ExpectedActivityPeriod.c | 80 + .../asn1codec/e2ap_engine/ExpectedActivityPeriod.h | 63 + .../asn1codec/e2ap_engine/ExpectedHOInterval.c | 84 + .../asn1codec/e2ap_engine/ExpectedHOInterval.h | 78 + .../asn1codec/e2ap_engine/ExpectedIdlePeriod.c | 80 + .../asn1codec/e2ap_engine/ExpectedIdlePeriod.h | 63 + .../e2ap_engine/ExpectedUEActivityBehaviour.c | 102 + .../e2ap_engine/ExpectedUEActivityBehaviour.h | 71 + .../asn1codec/e2ap_engine/ExpectedUEBehaviour.c | 93 + .../asn1codec/e2ap_engine/ExpectedUEBehaviour.h | 69 + E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.c | 86 + E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.h | 63 + .../ExtendedULInterferenceOverloadInfo.c | 128 + .../ExtendedULInterferenceOverloadInfo.h | 69 + E2Manager/asn1codec/e2ap_engine/FDD-Info.c | 112 + E2Manager/asn1codec/e2ap_engine/FDD-Info.h | 71 + .../FDD-InfoNeighbourServedNRCell-Information.c | 92 + .../FDD-InfoNeighbourServedNRCell-Information.h | 68 + .../e2ap_engine/FDD-InfoServedNRCell-Information.c | 112 + .../e2ap_engine/FDD-InfoServedNRCell-Information.h | 71 + E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.c | 81 + E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.h | 63 + .../asn1codec/e2ap_engine/ForbiddenInterRATs.c | 82 + .../asn1codec/e2ap_engine/ForbiddenInterRATs.h | 77 + E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.c | 68 + E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.h | 61 + .../asn1codec/e2ap_engine/ForbiddenLAs-Item.c | 92 + .../asn1codec/e2ap_engine/ForbiddenLAs-Item.h | 69 + E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.c | 69 + E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.h | 63 + E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.c | 68 + E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.h | 61 + .../asn1codec/e2ap_engine/ForbiddenTAs-Item.c | 92 + .../asn1codec/e2ap_engine/ForbiddenTAs-Item.h | 69 + E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.c | 69 + E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.h | 63 + E2Manager/asn1codec/e2ap_engine/Fourframes.c | 86 + E2Manager/asn1codec/e2ap_engine/Fourframes.h | 63 + .../asn1codec/e2ap_engine/FreqBandIndicator.c | 80 + .../asn1codec/e2ap_engine/FreqBandIndicator.h | 63 + .../e2ap_engine/FreqBandIndicatorPriority.c | 74 + .../e2ap_engine/FreqBandIndicatorPriority.h | 73 + E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.c | 196 + E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.h | 76 + .../asn1codec/e2ap_engine/GBR-QosInformation.c | 112 + .../asn1codec/e2ap_engine/GBR-QosInformation.h | 70 + E2Manager/asn1codec/e2ap_engine/GNB-ID.c | 107 + E2Manager/asn1codec/e2ap_engine/GNB-ID.h | 75 + .../asn1codec/e2ap_engine/GNBOverloadInformation.c | 74 + .../asn1codec/e2ap_engine/GNBOverloadInformation.h | 73 + .../asn1codec/e2ap_engine/GNBStatusIndication.c | 69 + .../asn1codec/e2ap_engine/GNBStatusIndication.h | 63 + E2Manager/asn1codec/e2ap_engine/GTP-TEI.c | 81 + E2Manager/asn1codec/e2ap_engine/GTP-TEI.h | 63 + .../asn1codec/e2ap_engine/GTPtunnelEndpoint.c | 92 + .../asn1codec/e2ap_engine/GTPtunnelEndpoint.h | 69 + E2Manager/asn1codec/e2ap_engine/GU-Group-ID.c | 92 + E2Manager/asn1codec/e2ap_engine/GU-Group-ID.h | 69 + E2Manager/asn1codec/e2ap_engine/GUGroupIDList.c | 69 + E2Manager/asn1codec/e2ap_engine/GUGroupIDList.h | 63 + E2Manager/asn1codec/e2ap_engine/GUMMEI.c | 92 + E2Manager/asn1codec/e2ap_engine/GUMMEI.h | 69 + E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.c | 92 + E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.h | 69 + E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.c | 92 + E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.h | 69 + E2Manager/asn1codec/e2ap_engine/HFN.c | 80 + E2Manager/asn1codec/e2ap_engine/HFN.h | 63 + E2Manager/asn1codec/e2ap_engine/HFNModified.c | 80 + E2Manager/asn1codec/e2ap_engine/HFNModified.h | 63 + .../asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c | 80 + .../asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h | 63 + E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.c | 92 + E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.h | 68 + E2Manager/asn1codec/e2ap_engine/HandoverCancel.c | 69 + E2Manager/asn1codec/e2ap_engine/HandoverCancel.h | 61 + .../e2ap_engine/HandoverPreparationFailure.c | 69 + .../e2ap_engine/HandoverPreparationFailure.h | 61 + E2Manager/asn1codec/e2ap_engine/HandoverReport.c | 69 + E2Manager/asn1codec/e2ap_engine/HandoverReport.h | 61 + .../asn1codec/e2ap_engine/HandoverReportType.c | 76 + .../asn1codec/e2ap_engine/HandoverReportType.h | 74 + E2Manager/asn1codec/e2ap_engine/HandoverRequest.c | 69 + E2Manager/asn1codec/e2ap_engine/HandoverRequest.h | 61 + .../e2ap_engine/HandoverRequestAcknowledge.c | 69 + .../e2ap_engine/HandoverRequestAcknowledge.h | 61 + .../e2ap_engine/HandoverRestrictionList.c | 125 + .../e2ap_engine/HandoverRestrictionList.h | 75 + E2Manager/asn1codec/e2ap_engine/INTEGER.c | 1736 + E2Manager/asn1codec/e2ap_engine/INTEGER.h | 109 + .../asn1codec/e2ap_engine/InitiatingMessage.c | 527 + .../asn1codec/e2ap_engine/InitiatingMessage.h | 145 + .../InitiatingNodeType-EndcConfigUpdate.c | 82 + .../InitiatingNodeType-EndcConfigUpdate.h | 76 + .../e2ap_engine/InitiatingNodeType-EndcX2Removal.c | 82 + .../e2ap_engine/InitiatingNodeType-EndcX2Removal.h | 76 + .../e2ap_engine/InitiatingNodeType-EndcX2Setup.c | 82 + .../e2ap_engine/InitiatingNodeType-EndcX2Setup.h | 76 + ...atingNodeType-EutranrCellResourceCoordination.c | 82 + ...atingNodeType-EutranrCellResourceCoordination.h | 76 + .../e2ap_engine/IntegrityProtectionAlgorithms.c | 86 + .../e2ap_engine/IntegrityProtectionAlgorithms.h | 63 + E2Manager/asn1codec/e2ap_engine/Interface-ID.c | 83 + E2Manager/asn1codec/e2ap_engine/Interface-ID.h | 80 + .../asn1codec/e2ap_engine/InterfaceDirection.c | 74 + .../asn1codec/e2ap_engine/InterfaceDirection.h | 73 + E2Manager/asn1codec/e2ap_engine/InterfaceMessage.c | 50 + E2Manager/asn1codec/e2ap_engine/InterfaceMessage.h | 62 + .../asn1codec/e2ap_engine/InterfaceMessageType.c | 79 + .../asn1codec/e2ap_engine/InterfaceMessageType.h | 65 + .../asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c | 80 + .../asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h | 63 + .../e2ap_engine/InterfaceProtocolIE-Item.c | 89 + .../e2ap_engine/InterfaceProtocolIE-Item.h | 67 + .../e2ap_engine/InterfaceProtocolIE-Test.c | 80 + .../e2ap_engine/InterfaceProtocolIE-Test.h | 76 + .../e2ap_engine/InterfaceProtocolIE-Value.c | 111 + .../e2ap_engine/InterfaceProtocolIE-Value.h | 86 + .../asn1codec/e2ap_engine/InterfacesToTrace.c | 86 + .../asn1codec/e2ap_engine/InterfacesToTrace.h | 63 + E2Manager/asn1codec/e2ap_engine/InvokeIndication.c | 76 + E2Manager/asn1codec/e2ap_engine/InvokeIndication.h | 74 + E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.c | 86 + E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.h | 63 + E2Manager/asn1codec/e2ap_engine/LAC.c | 81 + E2Manager/asn1codec/e2ap_engine/LAC.h | 63 + E2Manager/asn1codec/e2ap_engine/LCID.c | 80 + E2Manager/asn1codec/e2ap_engine/LCID.h | 63 + E2Manager/asn1codec/e2ap_engine/LHN-ID.c | 81 + E2Manager/asn1codec/e2ap_engine/LHN-ID.h | 63 + .../asn1codec/e2ap_engine/LastVisitedCell-Item.c | 103 + .../asn1codec/e2ap_engine/LastVisitedCell-Item.h | 85 + .../e2ap_engine/LastVisitedEUTRANCellInformation.c | 102 + .../e2ap_engine/LastVisitedEUTRANCellInformation.h | 71 + .../e2ap_engine/LastVisitedGERANCellInformation.c | 71 + .../e2ap_engine/LastVisitedGERANCellInformation.h | 75 + .../e2ap_engine/LastVisitedNGRANCellInformation.c | 50 + .../e2ap_engine/LastVisitedNGRANCellInformation.h | 62 + .../e2ap_engine/LastVisitedUTRANCellInformation.c | 50 + .../e2ap_engine/LastVisitedUTRANCellInformation.h | 62 + E2Manager/asn1codec/e2ap_engine/Limited-list.c | 123 + E2Manager/asn1codec/e2ap_engine/Limited-list.h | 78 + E2Manager/asn1codec/e2ap_engine/Links-to-log.c | 76 + E2Manager/asn1codec/e2ap_engine/Links-to-log.h | 74 + .../ListofEUTRACellsinEUTRACoordinationReq.c | 69 + .../ListofEUTRACellsinEUTRACoordinationReq.h | 60 + .../ListofEUTRACellsinEUTRACoordinationResp.c | 69 + .../ListofEUTRACellsinEUTRACoordinationResp.h | 60 + .../ListofEUTRACellsinNRCoordinationReq.c | 69 + .../ListofEUTRACellsinNRCoordinationReq.h | 60 + .../e2ap_engine/ListofNRCellsinNRCoordinationReq.c | 69 + .../e2ap_engine/ListofNRCellsinNRCoordinationReq.h | 60 + .../ListofNRCellsinNRCoordinationResp.c | 69 + .../ListofNRCellsinNRCoordinationResp.h | 60 + E2Manager/asn1codec/e2ap_engine/LoadIndicator.c | 78 + E2Manager/asn1codec/e2ap_engine/LoadIndicator.h | 75 + E2Manager/asn1codec/e2ap_engine/LoadInformation.c | 69 + E2Manager/asn1codec/e2ap_engine/LoadInformation.h | 63 + .../e2ap_engine/LocationReportingInformation.c | 92 + .../e2ap_engine/LocationReportingInformation.h | 69 + .../asn1codec/e2ap_engine/M1PeriodicReporting.c | 92 + .../asn1codec/e2ap_engine/M1PeriodicReporting.h | 69 + .../asn1codec/e2ap_engine/M1ReportingTrigger.c | 76 + .../asn1codec/e2ap_engine/M1ReportingTrigger.h | 74 + .../asn1codec/e2ap_engine/M1ThresholdEventA2.c | 82 + .../asn1codec/e2ap_engine/M1ThresholdEventA2.h | 67 + E2Manager/asn1codec/e2ap_engine/M3Configuration.c | 82 + E2Manager/asn1codec/e2ap_engine/M3Configuration.h | 67 + E2Manager/asn1codec/e2ap_engine/M3period.c | 76 + E2Manager/asn1codec/e2ap_engine/M3period.h | 74 + E2Manager/asn1codec/e2ap_engine/M4Configuration.c | 92 + E2Manager/asn1codec/e2ap_engine/M4Configuration.h | 69 + E2Manager/asn1codec/e2ap_engine/M4period.c | 80 + E2Manager/asn1codec/e2ap_engine/M4period.h | 76 + E2Manager/asn1codec/e2ap_engine/M5Configuration.c | 92 + E2Manager/asn1codec/e2ap_engine/M5Configuration.h | 69 + E2Manager/asn1codec/e2ap_engine/M5period.c | 80 + E2Manager/asn1codec/e2ap_engine/M5period.h | 76 + E2Manager/asn1codec/e2ap_engine/M6Configuration.c | 102 + E2Manager/asn1codec/e2ap_engine/M6Configuration.h | 71 + .../asn1codec/e2ap_engine/M6delay-threshold.c | 94 + .../asn1codec/e2ap_engine/M6delay-threshold.h | 83 + .../asn1codec/e2ap_engine/M6report-interval.c | 78 + .../asn1codec/e2ap_engine/M6report-interval.h | 75 + E2Manager/asn1codec/e2ap_engine/M7Configuration.c | 92 + E2Manager/asn1codec/e2ap_engine/M7Configuration.h | 69 + E2Manager/asn1codec/e2ap_engine/M7period.c | 80 + E2Manager/asn1codec/e2ap_engine/M7period.h | 63 + .../e2ap_engine/MBMS-Service-Area-Identity-List.c | 68 + .../e2ap_engine/MBMS-Service-Area-Identity-List.h | 61 + .../e2ap_engine/MBMS-Service-Area-Identity.c | 81 + .../e2ap_engine/MBMS-Service-Area-Identity.h | 63 + .../asn1codec/e2ap_engine/MBSFN-Subframe-Info.c | 102 + .../asn1codec/e2ap_engine/MBSFN-Subframe-Info.h | 71 + .../e2ap_engine/MBSFN-Subframe-Infolist.c | 69 + .../e2ap_engine/MBSFN-Subframe-Infolist.h | 63 + E2Manager/asn1codec/e2ap_engine/MDT-Activation.c | 74 + E2Manager/asn1codec/e2ap_engine/MDT-Activation.h | 73 + .../asn1codec/e2ap_engine/MDT-Configuration.c | 134 + .../asn1codec/e2ap_engine/MDT-Configuration.h | 77 + .../asn1codec/e2ap_engine/MDT-Location-Info.c | 86 + .../asn1codec/e2ap_engine/MDT-Location-Info.h | 63 + E2Manager/asn1codec/e2ap_engine/MDTPLMNList.c | 68 + E2Manager/asn1codec/e2ap_engine/MDTPLMNList.h | 61 + E2Manager/asn1codec/e2ap_engine/MME-Code.c | 81 + E2Manager/asn1codec/e2ap_engine/MME-Code.h | 63 + E2Manager/asn1codec/e2ap_engine/MME-Group-ID.c | 81 + E2Manager/asn1codec/e2ap_engine/MME-Group-ID.h | 63 + .../e2ap_engine/MakeBeforeBreakIndicator.c | 72 + .../e2ap_engine/MakeBeforeBreakIndicator.h | 72 + .../asn1codec/e2ap_engine/Makefile.am.asn1convert | 14 + .../asn1codec/e2ap_engine/Makefile.am.libasncodec | 1575 + .../e2ap_engine/ManagementBasedMDTallowed.c | 72 + .../e2ap_engine/ManagementBasedMDTallowed.h | 72 + E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.c | 86 + E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.h | 63 + .../MeNBCoordinationAssistanceInformation.c | 72 + .../MeNBCoordinationAssistanceInformation.h | 72 + .../MeNBResourceCoordinationInformation.c | 174 + .../MeNBResourceCoordinationInformation.h | 70 + .../asn1codec/e2ap_engine/MeNBtoSeNBContainer.c | 50 + .../asn1codec/e2ap_engine/MeNBtoSeNBContainer.h | 62 + .../asn1codec/e2ap_engine/MeNBtoSgNBContainer.c | 50 + .../asn1codec/e2ap_engine/MeNBtoSgNBContainer.h | 62 + E2Manager/asn1codec/e2ap_engine/Measurement-ID.c | 80 + E2Manager/asn1codec/e2ap_engine/Measurement-ID.h | 63 + .../e2ap_engine/MeasurementFailureCause-Item.c | 92 + .../e2ap_engine/MeasurementFailureCause-Item.h | 67 + .../e2ap_engine/MeasurementFailureCause-List.c | 69 + .../e2ap_engine/MeasurementFailureCause-List.h | 63 + .../e2ap_engine/MeasurementInitiationResult-Item.c | 93 + .../e2ap_engine/MeasurementInitiationResult-Item.h | 67 + .../e2ap_engine/MeasurementInitiationResult-List.c | 69 + .../e2ap_engine/MeasurementInitiationResult-List.h | 60 + .../asn1codec/e2ap_engine/MeasurementThresholdA2.c | 81 + .../asn1codec/e2ap_engine/MeasurementThresholdA2.h | 78 + .../asn1codec/e2ap_engine/MeasurementsToActivate.c | 86 + .../asn1codec/e2ap_engine/MeasurementsToActivate.h | 63 + .../e2ap_engine/MobilityChangeAcknowledge.c | 69 + .../e2ap_engine/MobilityChangeAcknowledge.h | 61 + .../asn1codec/e2ap_engine/MobilityChangeFailure.c | 69 + .../asn1codec/e2ap_engine/MobilityChangeFailure.h | 61 + .../asn1codec/e2ap_engine/MobilityChangeRequest.c | 69 + .../asn1codec/e2ap_engine/MobilityChangeRequest.h | 61 + .../asn1codec/e2ap_engine/MobilityInformation.c | 86 + .../asn1codec/e2ap_engine/MobilityInformation.h | 62 + .../e2ap_engine/MobilityParametersInformation.c | 99 + .../e2ap_engine/MobilityParametersInformation.h | 63 + .../MobilityParametersModificationRange.c | 139 + .../MobilityParametersModificationRange.h | 64 + .../asn1codec/e2ap_engine/MultibandInfoList.c | 69 + .../asn1codec/e2ap_engine/MultibandInfoList.h | 63 + E2Manager/asn1codec/e2ap_engine/NR-TxBW.c | 92 + E2Manager/asn1codec/e2ap_engine/NR-TxBW.h | 69 + E2Manager/asn1codec/e2ap_engine/NRCGI.c | 92 + E2Manager/asn1codec/e2ap_engine/NRCGI.h | 69 + E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.c | 86 + E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.h | 63 + E2Manager/asn1codec/e2ap_engine/NRFreqInfo.c | 207 + E2Manager/asn1codec/e2ap_engine/NRFreqInfo.h | 78 + E2Manager/asn1codec/e2ap_engine/NRNRB.c | 128 + E2Manager/asn1codec/e2ap_engine/NRNRB.h | 100 + .../e2ap_engine/NRNeighbour-Information.c | 229 + .../e2ap_engine/NRNeighbour-Information.h | 112 + E2Manager/asn1codec/e2ap_engine/NRPCI.c | 80 + E2Manager/asn1codec/e2ap_engine/NRPCI.h | 63 + .../asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c | 76 + .../asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h | 74 + E2Manager/asn1codec/e2ap_engine/NRSCS.c | 78 + E2Manager/asn1codec/e2ap_engine/NRSCS.h | 75 + .../e2ap_engine/NRUESecurityCapabilities.c | 92 + .../e2ap_engine/NRUESecurityCapabilities.h | 69 + .../asn1codec/e2ap_engine/NRencryptionAlgorithms.c | 86 + .../asn1codec/e2ap_engine/NRencryptionAlgorithms.h | 63 + .../e2ap_engine/NRintegrityProtectionAlgorithms.c | 86 + .../e2ap_engine/NRintegrityProtectionAlgorithms.h | 63 + .../asn1codec/e2ap_engine/NRrestrictionin5GS.c | 72 + .../asn1codec/e2ap_engine/NRrestrictionin5GS.h | 72 + .../e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c | 72 + .../e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h | 72 + .../NSSS-NumOccasionDifferentPrecoder.c | 76 + .../NSSS-NumOccasionDifferentPrecoder.h | 74 + E2Manager/asn1codec/e2ap_engine/NULL.c | 300 + E2Manager/asn1codec/e2ap_engine/NULL.h | 46 + E2Manager/asn1codec/e2ap_engine/NativeEnumerated.c | 368 + E2Manager/asn1codec/e2ap_engine/NativeEnumerated.h | 46 + E2Manager/asn1codec/e2ap_engine/NativeInteger.c | 551 + E2Manager/asn1codec/e2ap_engine/NativeInteger.h | 47 + .../asn1codec/e2ap_engine/Neighbour-Information.c | 143 + .../asn1codec/e2ap_engine/Neighbour-Information.h | 82 + E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.c | 72 + E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.h | 72 + .../asn1codec/e2ap_engine/NextHopChainingCount.c | 80 + .../asn1codec/e2ap_engine/NextHopChainingCount.h | 63 + .../asn1codec/e2ap_engine/Number-of-Antennaports.c | 76 + .../asn1codec/e2ap_engine/Number-of-Antennaports.h | 74 + .../asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c | 657 + .../asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h | 157 + E2Manager/asn1codec/e2ap_engine/OCTET_STRING.c | 2410 + E2Manager/asn1codec/e2ap_engine/OCTET_STRING.h | 103 + E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.c | 510 + E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.h | 78 + .../OffsetOfNbiotChannelNumberToEARFCN.c | 112 + .../OffsetOfNbiotChannelNumberToEARFCN.h | 92 + E2Manager/asn1codec/e2ap_engine/Old-ECGIs.c | 69 + E2Manager/asn1codec/e2ap_engine/Old-ECGIs.h | 60 + E2Manager/asn1codec/e2ap_engine/Oneframe.c | 86 + E2Manager/asn1codec/e2ap_engine/Oneframe.h | 63 + E2Manager/asn1codec/e2ap_engine/PA-Values.c | 86 + E2Manager/asn1codec/e2ap_engine/PA-Values.h | 79 + E2Manager/asn1codec/e2ap_engine/PCI.c | 80 + E2Manager/asn1codec/e2ap_engine/PCI.h | 63 + E2Manager/asn1codec/e2ap_engine/PDCP-SN.c | 80 + E2Manager/asn1codec/e2ap_engine/PDCP-SN.h | 63 + E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.c | 80 + E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.h | 63 + E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.c | 80 + E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.h | 63 + .../asn1codec/e2ap_engine/PDCPChangeIndication.c | 74 + .../asn1codec/e2ap_engine/PDCPChangeIndication.h | 73 + E2Manager/asn1codec/e2ap_engine/PDCPSnLength.c | 74 + E2Manager/asn1codec/e2ap_engine/PDCPSnLength.h | 73 + E2Manager/asn1codec/e2ap_engine/PLMN-Identity.c | 81 + E2Manager/asn1codec/e2ap_engine/PLMN-Identity.h | 63 + E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c | 82 + E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h | 67 + E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.c | 68 + E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.h | 61 + .../asn1codec/e2ap_engine/PRACH-Configuration.c | 242 + .../asn1codec/e2ap_engine/PRACH-Configuration.h | 72 + E2Manager/asn1codec/e2ap_engine/Packet-LossRate.c | 80 + E2Manager/asn1codec/e2ap_engine/Packet-LossRate.h | 63 + .../e2ap_engine/PartialSuccessIndicator.c | 72 + .../e2ap_engine/PartialSuccessIndicator.h | 70 + E2Manager/asn1codec/e2ap_engine/PedestrianUE.c | 74 + E2Manager/asn1codec/e2ap_engine/PedestrianUE.h | 73 + E2Manager/asn1codec/e2ap_engine/Port-Number.c | 81 + E2Manager/asn1codec/e2ap_engine/Port-Number.h | 63 + .../asn1codec/e2ap_engine/Pre-emptionCapability.c | 72 + .../asn1codec/e2ap_engine/Pre-emptionCapability.h | 70 + .../e2ap_engine/Pre-emptionVulnerability.c | 72 + .../e2ap_engine/Pre-emptionVulnerability.h | 70 + E2Manager/asn1codec/e2ap_engine/Presence.c | 74 + E2Manager/asn1codec/e2ap_engine/Presence.h | 71 + E2Manager/asn1codec/e2ap_engine/PrintableString.c | 131 + E2Manager/asn1codec/e2ap_engine/PrintableString.h | 38 + E2Manager/asn1codec/e2ap_engine/PriorityLevel.c | 80 + E2Manager/asn1codec/e2ap_engine/PriorityLevel.h | 71 + .../asn1codec/e2ap_engine/PrivateIE-Container.c | 69 + .../asn1codec/e2ap_engine/PrivateIE-Container.h | 63 + E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.c | 185 + E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.h | 79 + E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.c | 111 + E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.h | 72 + E2Manager/asn1codec/e2ap_engine/PrivateMessage.c | 69 + E2Manager/asn1codec/e2ap_engine/PrivateMessage.h | 61 + E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.c | 92 + E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.h | 69 + .../e2ap_engine/ProSeDirectCommunication.c | 74 + .../e2ap_engine/ProSeDirectCommunication.h | 73 + .../asn1codec/e2ap_engine/ProSeDirectDiscovery.c | 74 + .../asn1codec/e2ap_engine/ProSeDirectDiscovery.h | 73 + .../e2ap_engine/ProSeUEtoNetworkRelaying.c | 74 + .../e2ap_engine/ProSeUEtoNetworkRelaying.h | 73 + E2Manager/asn1codec/e2ap_engine/ProcedureCode.c | 80 + E2Manager/asn1codec/e2ap_engine/ProcedureCode.h | 115 + .../e2ap_engine/ProtectedEUTRAResourceIndication.c | 202 + .../e2ap_engine/ProtectedEUTRAResourceIndication.h | 71 + .../e2ap_engine/ProtectedFootprintTimePattern.c | 152 + .../e2ap_engine/ProtectedFootprintTimePattern.h | 68 + .../e2ap_engine/ProtectedResourceList-Item.c | 184 + .../e2ap_engine/ProtectedResourceList-Item.h | 72 + .../asn1codec/e2ap_engine/ProtectedResourceList.c | 69 + .../asn1codec/e2ap_engine/ProtectedResourceList.h | 63 + .../e2ap_engine/ProtocolExtensionContainer.c | 8949 ++++ .../e2ap_engine/ProtocolExtensionContainer.h | 2505 + .../asn1codec/e2ap_engine/ProtocolExtensionField.c | 40928 ++++++++++++++++ .../asn1codec/e2ap_engine/ProtocolExtensionField.h | 5182 ++ .../asn1codec/e2ap_engine/ProtocolIE-Container.c | 4829 ++ .../asn1codec/e2ap_engine/ProtocolIE-Container.h | 1372 + .../e2ap_engine/ProtocolIE-ContainerList.c | 28 + .../e2ap_engine/ProtocolIE-ContainerList.h | 42 + .../e2ap_engine/ProtocolIE-ContainerPair.c | 28 + .../e2ap_engine/ProtocolIE-ContainerPair.h | 42 + .../e2ap_engine/ProtocolIE-ContainerPairList.c | 28 + .../e2ap_engine/ProtocolIE-ContainerPairList.h | 42 + E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.c | 48582 +++++++++++++++++++ E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.h | 4904 ++ .../asn1codec/e2ap_engine/ProtocolIE-FieldPair.c | 28 + .../asn1codec/e2ap_engine/ProtocolIE-FieldPair.h | 42 + E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.c | 80 + E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.h | 415 + .../e2ap_engine/ProtocolIE-Single-Container.c | 1155 + .../e2ap_engine/ProtocolIE-Single-Container.h | 686 + E2Manager/asn1codec/e2ap_engine/QCI.c | 80 + E2Manager/asn1codec/e2ap_engine/QCI.h | 63 + E2Manager/asn1codec/e2ap_engine/RANfunction-Item.c | 79 + E2Manager/asn1codec/e2ap_engine/RANfunction-Item.h | 63 + .../asn1codec/e2ap_engine/RANfunctionDefinition.c | 50 + .../asn1codec/e2ap_engine/RANfunctionDefinition.h | 62 + .../asn1codec/e2ap_engine/RANfunctionID-Item.c | 69 + .../asn1codec/e2ap_engine/RANfunctionID-Item.h | 61 + E2Manager/asn1codec/e2ap_engine/RANfunctionID.c | 80 + E2Manager/asn1codec/e2ap_engine/RANfunctionID.h | 63 + .../e2ap_engine/RANfunctionIDcause-Item.c | 79 + .../e2ap_engine/RANfunctionIDcause-Item.h | 63 + .../asn1codec/e2ap_engine/RANfunctions-List.c | 69 + .../asn1codec/e2ap_engine/RANfunctions-List.h | 60 + .../asn1codec/e2ap_engine/RANfunctionsID-List.c | 69 + .../asn1codec/e2ap_engine/RANfunctionsID-List.h | 60 + .../e2ap_engine/RANfunctionsIDcause-List.c | 69 + .../e2ap_engine/RANfunctionsIDcause-List.h | 60 + .../e2ap_engine/RICaction-Admitted-Item.c | 69 + .../e2ap_engine/RICaction-Admitted-Item.h | 61 + .../e2ap_engine/RICaction-Admitted-List.c | 69 + .../e2ap_engine/RICaction-Admitted-List.h | 60 + .../e2ap_engine/RICaction-NotAdmitted-Item.c | 79 + .../e2ap_engine/RICaction-NotAdmitted-Item.h | 63 + .../e2ap_engine/RICaction-NotAdmitted-List.c | 69 + .../e2ap_engine/RICaction-NotAdmitted-List.h | 60 + .../e2ap_engine/RICaction-ToBeSetup-Item.c | 102 + .../e2ap_engine/RICaction-ToBeSetup-Item.h | 69 + .../asn1codec/e2ap_engine/RICactionDefinition.c | 50 + .../asn1codec/e2ap_engine/RICactionDefinition.h | 62 + E2Manager/asn1codec/e2ap_engine/RICactionID.c | 80 + E2Manager/asn1codec/e2ap_engine/RICactionID.h | 63 + E2Manager/asn1codec/e2ap_engine/RICactionType.c | 76 + E2Manager/asn1codec/e2ap_engine/RICactionType.h | 74 + .../e2ap_engine/RICactions-ToBeSetup-List.c | 69 + .../e2ap_engine/RICactions-ToBeSetup-List.h | 63 + E2Manager/asn1codec/e2ap_engine/RICcallProcessID.c | 50 + E2Manager/asn1codec/e2ap_engine/RICcallProcessID.h | 62 + E2Manager/asn1codec/e2ap_engine/RICcause.c | 111 + E2Manager/asn1codec/e2ap_engine/RICcause.h | 87 + .../asn1codec/e2ap_engine/RICcontrolAckRequest.c | 76 + .../asn1codec/e2ap_engine/RICcontrolAckRequest.h | 72 + .../asn1codec/e2ap_engine/RICcontrolAcknowledge.c | 69 + .../asn1codec/e2ap_engine/RICcontrolAcknowledge.h | 63 + .../asn1codec/e2ap_engine/RICcontrolFailure.c | 69 + .../asn1codec/e2ap_engine/RICcontrolFailure.h | 63 + E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.c | 50 + E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.h | 62 + .../asn1codec/e2ap_engine/RICcontrolMessage.c | 50 + .../asn1codec/e2ap_engine/RICcontrolMessage.h | 62 + .../asn1codec/e2ap_engine/RICcontrolRequest.c | 69 + .../asn1codec/e2ap_engine/RICcontrolRequest.h | 63 + E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.c | 76 + E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.h | 72 + .../e2ap_engine/RICeventTriggerDefinition.c | 50 + .../e2ap_engine/RICeventTriggerDefinition.h | 62 + E2Manager/asn1codec/e2ap_engine/RICindication.c | 69 + E2Manager/asn1codec/e2ap_engine/RICindication.h | 63 + .../asn1codec/e2ap_engine/RICindicationHeader.c | 50 + .../asn1codec/e2ap_engine/RICindicationHeader.h | 62 + .../asn1codec/e2ap_engine/RICindicationMessage.c | 50 + .../asn1codec/e2ap_engine/RICindicationMessage.h | 62 + E2Manager/asn1codec/e2ap_engine/RICindicationSN.c | 80 + E2Manager/asn1codec/e2ap_engine/RICindicationSN.h | 62 + .../asn1codec/e2ap_engine/RICindicationType.c | 74 + .../asn1codec/e2ap_engine/RICindicationType.h | 71 + E2Manager/asn1codec/e2ap_engine/RICrequestID.c | 139 + E2Manager/asn1codec/e2ap_engine/RICrequestID.h | 62 + E2Manager/asn1codec/e2ap_engine/RICserviceQuery.c | 69 + E2Manager/asn1codec/e2ap_engine/RICserviceQuery.h | 63 + E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.c | 69 + E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.h | 63 + .../e2ap_engine/RICserviceUpdateAcknowledge.c | 69 + .../e2ap_engine/RICserviceUpdateAcknowledge.h | 63 + .../e2ap_engine/RICserviceUpdateFailure.c | 69 + .../e2ap_engine/RICserviceUpdateFailure.h | 63 + E2Manager/asn1codec/e2ap_engine/RICsubscription.c | 79 + E2Manager/asn1codec/e2ap_engine/RICsubscription.h | 63 + .../e2ap_engine/RICsubscriptionDeleteFailure.c | 69 + .../e2ap_engine/RICsubscriptionDeleteFailure.h | 63 + .../e2ap_engine/RICsubscriptionDeleteRequest.c | 69 + .../e2ap_engine/RICsubscriptionDeleteRequest.h | 63 + .../e2ap_engine/RICsubscriptionDeleteResponse.c | 69 + .../e2ap_engine/RICsubscriptionDeleteResponse.h | 63 + .../asn1codec/e2ap_engine/RICsubscriptionFailure.c | 69 + .../asn1codec/e2ap_engine/RICsubscriptionFailure.h | 63 + .../asn1codec/e2ap_engine/RICsubscriptionRequest.c | 69 + .../asn1codec/e2ap_engine/RICsubscriptionRequest.h | 63 + .../e2ap_engine/RICsubscriptionResponse.c | 69 + .../e2ap_engine/RICsubscriptionResponse.h | 63 + .../asn1codec/e2ap_engine/RICsubsequentAction.c | 79 + .../asn1codec/e2ap_engine/RICsubsequentAction.h | 65 + .../e2ap_engine/RICsubsequentActionType.c | 74 + .../e2ap_engine/RICsubsequentActionType.h | 73 + E2Manager/asn1codec/e2ap_engine/RICtimeToWait.c | 106 + E2Manager/asn1codec/e2ap_engine/RICtimeToWait.h | 89 + E2Manager/asn1codec/e2ap_engine/RLC-Status.c | 82 + E2Manager/asn1codec/e2ap_engine/RLC-Status.h | 67 + E2Manager/asn1codec/e2ap_engine/RLCMode.c | 78 + E2Manager/asn1codec/e2ap_engine/RLCMode.h | 75 + E2Manager/asn1codec/e2ap_engine/RLFIndication.c | 69 + E2Manager/asn1codec/e2ap_engine/RLFIndication.h | 61 + E2Manager/asn1codec/e2ap_engine/RNL-Header.c | 93 + E2Manager/asn1codec/e2ap_engine/RNL-Header.h | 67 + E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.c | 102 + E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.h | 87 + E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.c | 74 + E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.h | 73 + E2Manager/asn1codec/e2ap_engine/RRC-Context.c | 50 + E2Manager/asn1codec/e2ap_engine/RRC-Context.h | 62 + .../e2ap_engine/RRCConnReestabIndicator.c | 76 + .../e2ap_engine/RRCConnReestabIndicator.h | 74 + .../asn1codec/e2ap_engine/RRCConnSetupIndicator.c | 72 + .../asn1codec/e2ap_engine/RRCConnSetupIndicator.h | 72 + E2Manager/asn1codec/e2ap_engine/RRCContainer.c | 50 + E2Manager/asn1codec/e2ap_engine/RRCContainer.h | 62 + E2Manager/asn1codec/e2ap_engine/RRCTransfer.c | 69 + E2Manager/asn1codec/e2ap_engine/RRCTransfer.h | 61 + E2Manager/asn1codec/e2ap_engine/RSRPMRList.c | 123 + E2Manager/asn1codec/e2ap_engine/RSRPMRList.h | 78 + .../asn1codec/e2ap_engine/RSRPMeasurementResult.c | 163 + .../asn1codec/e2ap_engine/RSRPMeasurementResult.h | 80 + .../asn1codec/e2ap_engine/RadioResourceStatus.c | 132 + .../asn1codec/e2ap_engine/RadioResourceStatus.h | 77 + .../e2ap_engine/RadioframeAllocationOffset.c | 80 + .../e2ap_engine/RadioframeAllocationOffset.h | 63 + .../e2ap_engine/RadioframeAllocationPeriod.c | 82 + .../e2ap_engine/RadioframeAllocationPeriod.h | 77 + .../ReceiveStatusOfULPDCPSDUsExtended.c | 86 + .../ReceiveStatusOfULPDCPSDUsExtended.h | 63 + .../ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c | 86 + .../ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h | 63 + .../e2ap_engine/ReceiveStatusofULPDCPSDUs.c | 86 + .../e2ap_engine/ReceiveStatusofULPDCPSDUs.h | 63 + .../e2ap_engine/Reestablishment-Indication.c | 72 + .../e2ap_engine/Reestablishment-Indication.h | 72 + .../asn1codec/e2ap_engine/Registration-Request.c | 78 + .../asn1codec/e2ap_engine/Registration-Request.h | 75 + .../e2ap_engine/RelativeNarrowbandTxPower.c | 268 + .../e2ap_engine/RelativeNarrowbandTxPower.h | 85 + .../e2ap_engine/ReplacingCellsList-Item.c | 69 + .../e2ap_engine/ReplacingCellsList-Item.h | 63 + .../asn1codec/e2ap_engine/ReplacingCellsList.c | 69 + .../asn1codec/e2ap_engine/ReplacingCellsList.h | 63 + E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.c | 84 + E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.h | 76 + E2Manager/asn1codec/e2ap_engine/ReportArea.c | 72 + E2Manager/asn1codec/e2ap_engine/ReportArea.h | 72 + .../asn1codec/e2ap_engine/ReportCharacteristics.c | 86 + .../asn1codec/e2ap_engine/ReportCharacteristics.h | 63 + .../asn1codec/e2ap_engine/ReportIntervalMDT.c | 94 + .../asn1codec/e2ap_engine/ReportIntervalMDT.h | 81 + .../asn1codec/e2ap_engine/ReportingPeriodicity.c | 78 + .../asn1codec/e2ap_engine/ReportingPeriodicity.h | 73 + .../e2ap_engine/ReportingPeriodicityCSIR.c | 80 + .../e2ap_engine/ReportingPeriodicityCSIR.h | 76 + .../e2ap_engine/ReportingPeriodicityRSRPMR.c | 78 + .../e2ap_engine/ReportingPeriodicityRSRPMR.h | 75 + .../e2ap_engine/ReservedSubframePattern.c | 168 + .../e2ap_engine/ReservedSubframePattern.h | 71 + E2Manager/asn1codec/e2ap_engine/ResetRequest.c | 69 + E2Manager/asn1codec/e2ap_engine/ResetRequest.h | 63 + E2Manager/asn1codec/e2ap_engine/ResetResponse.c | 69 + E2Manager/asn1codec/e2ap_engine/ResetResponse.h | 63 + .../asn1codec/e2ap_engine/ResourceStatusFailure.c | 69 + .../asn1codec/e2ap_engine/ResourceStatusFailure.h | 63 + .../asn1codec/e2ap_engine/ResourceStatusRequest.c | 69 + .../asn1codec/e2ap_engine/ResourceStatusRequest.h | 63 + .../asn1codec/e2ap_engine/ResourceStatusResponse.c | 69 + .../asn1codec/e2ap_engine/ResourceStatusResponse.h | 63 + .../asn1codec/e2ap_engine/ResourceStatusUpdate.c | 69 + .../asn1codec/e2ap_engine/ResourceStatusUpdate.h | 63 + E2Manager/asn1codec/e2ap_engine/ResourceType.c | 76 + E2Manager/asn1codec/e2ap_engine/ResourceType.h | 74 + .../RespondingNodeType-EndcConfigUpdate.c | 82 + .../RespondingNodeType-EndcConfigUpdate.h | 76 + .../e2ap_engine/RespondingNodeType-EndcX2Removal.c | 82 + .../e2ap_engine/RespondingNodeType-EndcX2Removal.h | 76 + .../e2ap_engine/RespondingNodeType-EndcX2Setup.c | 82 + .../e2ap_engine/RespondingNodeType-EndcX2Setup.h | 76 + ...ndingNodeType-EutranrCellResourceCoordination.c | 82 + ...ndingNodeType-EutranrCellResourceCoordination.h | 76 + ...nseInformationSeNBReconfComp-RejectByMeNBItem.c | 92 + ...nseInformationSeNBReconfComp-RejectByMeNBItem.h | 69 + ...ResponseInformationSeNBReconfComp-SuccessItem.c | 82 + ...ResponseInformationSeNBReconfComp-SuccessItem.h | 67 + .../ResponseInformationSeNBReconfComp.c | 83 + .../ResponseInformationSeNBReconfComp.h | 77 + ...nseInformationSgNBReconfComp-RejectByMeNBItem.c | 82 + ...nseInformationSgNBReconfComp-RejectByMeNBItem.h | 67 + ...ResponseInformationSgNBReconfComp-SuccessItem.c | 82 + ...ResponseInformationSgNBReconfComp-SuccessItem.h | 67 + .../ResponseInformationSgNBReconfComp.c | 83 + .../ResponseInformationSgNBReconfComp.h | 77 + E2Manager/asn1codec/e2ap_engine/ResumeID.c | 153 + E2Manager/asn1codec/e2ap_engine/ResumeID.h | 77 + .../e2ap_engine/RetrieveUEContextFailure.c | 69 + .../e2ap_engine/RetrieveUEContextFailure.h | 61 + .../e2ap_engine/RetrieveUEContextRequest.c | 69 + .../e2ap_engine/RetrieveUEContextRequest.h | 61 + .../e2ap_engine/RetrieveUEContextResponse.c | 69 + .../e2ap_engine/RetrieveUEContextResponse.h | 61 + .../asn1codec/e2ap_engine/S1TNLLoadIndicator.c | 92 + .../asn1codec/e2ap_engine/S1TNLLoadIndicator.h | 68 + .../asn1codec/e2ap_engine/SCGChangeIndication.c | 76 + .../asn1codec/e2ap_engine/SCGChangeIndication.h | 74 + .../asn1codec/e2ap_engine/SCGConfigurationQuery.c | 72 + .../asn1codec/e2ap_engine/SCGConfigurationQuery.h | 72 + .../e2ap_engine/SGNB-Addition-Trigger-Ind.c | 76 + .../e2ap_engine/SGNB-Addition-Trigger-Ind.h | 74 + .../SIPTOBearerDeactivationIndication.c | 72 + .../SIPTOBearerDeactivationIndication.h | 72 + E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.c | 69 + E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.h | 61 + E2Manager/asn1codec/e2ap_engine/SRBType.c | 74 + E2Manager/asn1codec/e2ap_engine/SRBType.h | 73 + .../asn1codec/e2ap_engine/SRVCCOperationPossible.c | 72 + .../asn1codec/e2ap_engine/SRVCCOperationPossible.h | 72 + E2Manager/asn1codec/e2ap_engine/SULInformation.c | 122 + E2Manager/asn1codec/e2ap_engine/SULInformation.h | 69 + .../e2ap_engine/ScheduledCommunicationTime.c | 198 + .../e2ap_engine/ScheduledCommunicationTime.h | 70 + .../asn1codec/e2ap_engine/SeNBAdditionRequest.c | 69 + .../asn1codec/e2ap_engine/SeNBAdditionRequest.h | 61 + .../e2ap_engine/SeNBAdditionRequestAcknowledge.c | 69 + .../e2ap_engine/SeNBAdditionRequestAcknowledge.h | 61 + .../e2ap_engine/SeNBAdditionRequestReject.c | 69 + .../e2ap_engine/SeNBAdditionRequestReject.h | 61 + .../e2ap_engine/SeNBCounterCheckRequest.c | 69 + .../e2ap_engine/SeNBCounterCheckRequest.h | 61 + .../e2ap_engine/SeNBModificationConfirm.c | 69 + .../e2ap_engine/SeNBModificationConfirm.h | 61 + .../asn1codec/e2ap_engine/SeNBModificationRefuse.c | 69 + .../asn1codec/e2ap_engine/SeNBModificationRefuse.h | 61 + .../e2ap_engine/SeNBModificationRequest.c | 69 + .../e2ap_engine/SeNBModificationRequest.h | 61 + .../SeNBModificationRequestAcknowledge.c | 69 + .../SeNBModificationRequestAcknowledge.h | 61 + .../e2ap_engine/SeNBModificationRequestReject.c | 69 + .../e2ap_engine/SeNBModificationRequestReject.h | 61 + .../e2ap_engine/SeNBModificationRequired.c | 69 + .../e2ap_engine/SeNBModificationRequired.h | 61 + .../e2ap_engine/SeNBReconfigurationComplete.c | 69 + .../e2ap_engine/SeNBReconfigurationComplete.h | 61 + .../asn1codec/e2ap_engine/SeNBReleaseConfirm.c | 69 + .../asn1codec/e2ap_engine/SeNBReleaseConfirm.h | 61 + .../asn1codec/e2ap_engine/SeNBReleaseRequest.c | 69 + .../asn1codec/e2ap_engine/SeNBReleaseRequest.h | 61 + .../asn1codec/e2ap_engine/SeNBReleaseRequired.c | 69 + .../asn1codec/e2ap_engine/SeNBReleaseRequired.h | 61 + E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.c | 86 + E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.h | 63 + .../asn1codec/e2ap_engine/SeNBtoMeNBContainer.c | 50 + .../asn1codec/e2ap_engine/SeNBtoMeNBContainer.h | 62 + .../e2ap_engine/SecondaryRATDataUsageReport.c | 69 + .../e2ap_engine/SecondaryRATDataUsageReport.h | 61 + .../e2ap_engine/SecondaryRATUsageReport-Item.c | 148 + .../e2ap_engine/SecondaryRATUsageReport-Item.h | 80 + .../e2ap_engine/SecondaryRATUsageReportList.c | 69 + .../e2ap_engine/SecondaryRATUsageReportList.h | 63 + .../asn1codec/e2ap_engine/ServedCell-Information.c | 122 + .../asn1codec/e2ap_engine/ServedCell-Information.h | 75 + E2Manager/asn1codec/e2ap_engine/ServedCells.c | 134 + E2Manager/asn1codec/e2ap_engine/ServedCells.h | 80 + .../e2ap_engine/ServedCellsToActivate-Item.c | 82 + .../e2ap_engine/ServedCellsToActivate-Item.h | 67 + .../asn1codec/e2ap_engine/ServedCellsToActivate.c | 69 + .../asn1codec/e2ap_engine/ServedCellsToActivate.h | 60 + .../e2ap_engine/ServedCellsToModify-Item.c | 103 + .../e2ap_engine/ServedCellsToModify-Item.h | 71 + .../asn1codec/e2ap_engine/ServedCellsToModify.c | 69 + .../asn1codec/e2ap_engine/ServedCellsToModify.h | 60 + .../ServedEUTRAcellsENDCX2ManagementList.c | 134 + .../ServedEUTRAcellsENDCX2ManagementList.h | 77 + .../ServedEUTRAcellsToDeleteListENDCConfUpd.c | 69 + .../ServedEUTRAcellsToDeleteListENDCConfUpd.h | 60 + .../ServedEUTRAcellsToModifyListENDCConfUpd.c | 144 + .../ServedEUTRAcellsToModifyListENDCConfUpd.h | 79 + .../e2ap_engine/ServedNRCell-Information.c | 198 + .../e2ap_engine/ServedNRCell-Information.h | 103 + .../e2ap_engine/ServedNRCellsToActivate-Item.c | 82 + .../e2ap_engine/ServedNRCellsToActivate-Item.h | 67 + .../e2ap_engine/ServedNRCellsToActivate.c | 69 + .../e2ap_engine/ServedNRCellsToActivate.h | 60 + .../e2ap_engine/ServedNRCellsToModify-Item.c | 113 + .../e2ap_engine/ServedNRCellsToModify-Item.h | 73 + .../ServedNRcellsENDCX2ManagementList.c | 134 + .../ServedNRcellsENDCX2ManagementList.h | 77 + .../ServedNRcellsToDeleteENDCConfUpdList.c | 69 + .../ServedNRcellsToDeleteENDCConfUpdList.h | 60 + .../ServedNRcellsToModifyENDCConfUpdList.c | 69 + .../ServedNRcellsToModifyENDCConfUpdList.h | 60 + E2Manager/asn1codec/e2ap_engine/ServiceType.c | 74 + E2Manager/asn1codec/e2ap_engine/ServiceType.h | 73 + E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c | 76 + E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h | 64 + .../e2ap_engine/SgNBActivityNotification.c | 69 + .../e2ap_engine/SgNBActivityNotification.h | 61 + .../asn1codec/e2ap_engine/SgNBAdditionRequest.c | 69 + .../asn1codec/e2ap_engine/SgNBAdditionRequest.h | 61 + .../e2ap_engine/SgNBAdditionRequestAcknowledge.c | 69 + .../e2ap_engine/SgNBAdditionRequestAcknowledge.h | 61 + .../e2ap_engine/SgNBAdditionRequestReject.c | 69 + .../e2ap_engine/SgNBAdditionRequestReject.h | 61 + .../asn1codec/e2ap_engine/SgNBChangeConfirm.c | 69 + .../asn1codec/e2ap_engine/SgNBChangeConfirm.h | 61 + E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.c | 69 + E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.h | 61 + .../asn1codec/e2ap_engine/SgNBChangeRequired.c | 69 + .../asn1codec/e2ap_engine/SgNBChangeRequired.h | 61 + .../SgNBCoordinationAssistanceInformation.c | 72 + .../SgNBCoordinationAssistanceInformation.h | 72 + .../e2ap_engine/SgNBCounterCheckRequest.c | 69 + .../e2ap_engine/SgNBCounterCheckRequest.h | 61 + .../e2ap_engine/SgNBModificationConfirm.c | 69 + .../e2ap_engine/SgNBModificationConfirm.h | 61 + .../asn1codec/e2ap_engine/SgNBModificationRefuse.c | 69 + .../asn1codec/e2ap_engine/SgNBModificationRefuse.h | 61 + .../e2ap_engine/SgNBModificationRequest.c | 69 + .../e2ap_engine/SgNBModificationRequest.h | 61 + .../SgNBModificationRequestAcknowledge.c | 69 + .../SgNBModificationRequestAcknowledge.h | 61 + .../e2ap_engine/SgNBModificationRequestReject.c | 69 + .../e2ap_engine/SgNBModificationRequestReject.h | 61 + .../e2ap_engine/SgNBModificationRequired.c | 69 + .../e2ap_engine/SgNBModificationRequired.h | 61 + .../e2ap_engine/SgNBReconfigurationComplete.c | 69 + .../e2ap_engine/SgNBReconfigurationComplete.h | 61 + .../asn1codec/e2ap_engine/SgNBReleaseConfirm.c | 69 + .../asn1codec/e2ap_engine/SgNBReleaseConfirm.h | 61 + .../asn1codec/e2ap_engine/SgNBReleaseRequest.c | 69 + .../asn1codec/e2ap_engine/SgNBReleaseRequest.h | 61 + .../e2ap_engine/SgNBReleaseRequestAcknowledge.c | 69 + .../e2ap_engine/SgNBReleaseRequestAcknowledge.h | 61 + .../e2ap_engine/SgNBReleaseRequestReject.c | 69 + .../e2ap_engine/SgNBReleaseRequestReject.h | 61 + .../asn1codec/e2ap_engine/SgNBReleaseRequired.c | 69 + .../asn1codec/e2ap_engine/SgNBReleaseRequired.h | 61 + .../SgNBResourceCoordinationInformation.c | 174 + .../SgNBResourceCoordinationInformation.h | 70 + E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.c | 86 + E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.h | 63 + .../asn1codec/e2ap_engine/SgNBtoMeNBContainer.c | 50 + .../asn1codec/e2ap_engine/SgNBtoMeNBContainer.h | 62 + .../asn1codec/e2ap_engine/SharedResourceType.c | 83 + .../asn1codec/e2ap_engine/SharedResourceType.h | 80 + E2Manager/asn1codec/e2ap_engine/ShortMAC-I.c | 86 + E2Manager/asn1codec/e2ap_engine/ShortMAC-I.h | 63 + .../SourceOfUEActivityBehaviourInformation.c | 74 + .../SourceOfUEActivityBehaviourInformation.h | 73 + .../asn1codec/e2ap_engine/SpecialSubframe-Info.c | 102 + .../asn1codec/e2ap_engine/SpecialSubframe-Info.h | 71 + .../e2ap_engine/SpecialSubframePatterns.c | 88 + .../e2ap_engine/SpecialSubframePatterns.h | 80 + .../asn1codec/e2ap_engine/SpectrumSharingGroupID.c | 80 + .../asn1codec/e2ap_engine/SpectrumSharingGroupID.h | 63 + E2Manager/asn1codec/e2ap_engine/SplitSRB.c | 103 + E2Manager/asn1codec/e2ap_engine/SplitSRB.h | 71 + E2Manager/asn1codec/e2ap_engine/SplitSRBs.c | 76 + E2Manager/asn1codec/e2ap_engine/SplitSRBs.h | 74 + E2Manager/asn1codec/e2ap_engine/Style-ID.c | 50 + E2Manager/asn1codec/e2ap_engine/Style-ID.h | 62 + E2Manager/asn1codec/e2ap_engine/SubbandCQI.c | 93 + E2Manager/asn1codec/e2ap_engine/SubbandCQI.h | 69 + .../asn1codec/e2ap_engine/SubbandCQICodeword0.c | 181 + .../asn1codec/e2ap_engine/SubbandCQICodeword0.h | 79 + .../asn1codec/e2ap_engine/SubbandCQICodeword1.c | 221 + .../asn1codec/e2ap_engine/SubbandCQICodeword1.h | 81 + E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.c | 122 + E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.h | 69 + E2Manager/asn1codec/e2ap_engine/SubbandCQIList.c | 69 + E2Manager/asn1codec/e2ap_engine/SubbandCQIList.h | 63 + E2Manager/asn1codec/e2ap_engine/SubbandSize.c | 80 + E2Manager/asn1codec/e2ap_engine/SubbandSize.h | 76 + .../asn1codec/e2ap_engine/SubframeAllocation.c | 81 + .../asn1codec/e2ap_engine/SubframeAllocation.h | 78 + .../asn1codec/e2ap_engine/SubframeAssignment.c | 84 + .../asn1codec/e2ap_engine/SubframeAssignment.h | 78 + E2Manager/asn1codec/e2ap_engine/SubframeType.c | 74 + E2Manager/asn1codec/e2ap_engine/SubframeType.h | 73 + .../e2ap_engine/SubscriberProfileIDforRFP.c | 80 + .../e2ap_engine/SubscriberProfileIDforRFP.h | 63 + .../Subscription-Based-UE-DifferentiationInfo.c | 359 + .../Subscription-Based-UE-DifferentiationInfo.h | 110 + .../asn1codec/e2ap_engine/SuccessfulOutcome.c | 467 + .../asn1codec/e2ap_engine/SuccessfulOutcome.h | 133 + .../e2ap_engine/SupportedSULFreqBandItem.c | 112 + .../e2ap_engine/SupportedSULFreqBandItem.h | 67 + E2Manager/asn1codec/e2ap_engine/TABasedMDT.c | 82 + E2Manager/asn1codec/e2ap_engine/TABasedMDT.h | 67 + E2Manager/asn1codec/e2ap_engine/TABasedQMC.c | 82 + E2Manager/asn1codec/e2ap_engine/TABasedQMC.h | 67 + E2Manager/asn1codec/e2ap_engine/TAC.c | 81 + E2Manager/asn1codec/e2ap_engine/TAC.h | 63 + E2Manager/asn1codec/e2ap_engine/TAI-Item.c | 92 + E2Manager/asn1codec/e2ap_engine/TAI-Item.h | 69 + E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.c | 82 + E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.h | 67 + E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.c | 82 + E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.h | 67 + E2Manager/asn1codec/e2ap_engine/TAIListforMDT.c | 69 + E2Manager/asn1codec/e2ap_engine/TAIListforMDT.h | 63 + E2Manager/asn1codec/e2ap_engine/TAIListforQMC.c | 69 + E2Manager/asn1codec/e2ap_engine/TAIListforQMC.h | 63 + E2Manager/asn1codec/e2ap_engine/TAListforMDT.c | 68 + E2Manager/asn1codec/e2ap_engine/TAListforMDT.h | 61 + E2Manager/asn1codec/e2ap_engine/TAListforQMC.c | 68 + E2Manager/asn1codec/e2ap_engine/TAListforQMC.h | 61 + E2Manager/asn1codec/e2ap_engine/TDD-Info.c | 112 + E2Manager/asn1codec/e2ap_engine/TDD-Info.h | 73 + .../TDD-InfoNeighbourServedNRCell-Information.c | 82 + .../TDD-InfoNeighbourServedNRCell-Information.h | 67 + .../e2ap_engine/TDD-InfoServedNRCell-Information.c | 92 + .../e2ap_engine/TDD-InfoServedNRCell-Information.h | 69 + .../asn1codec/e2ap_engine/TargetCellInUTRAN.c | 50 + .../asn1codec/e2ap_engine/TargetCellInUTRAN.h | 62 + .../TargeteNBtoSource-eNBTransparentContainer.c | 50 + .../TargeteNBtoSource-eNBTransparentContainer.h | 62 + E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.c | 80 + E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.h | 63 + E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.c | 80 + E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.h | 63 + .../Time-UE-StayedInCell-EnhancedGranularity.c | 80 + .../Time-UE-StayedInCell-EnhancedGranularity.h | 63 + .../asn1codec/e2ap_engine/Time-UE-StayedInCell.c | 80 + .../asn1codec/e2ap_engine/Time-UE-StayedInCell.h | 63 + E2Manager/asn1codec/e2ap_engine/TimeStamp.c | 81 + E2Manager/asn1codec/e2ap_engine/TimeStamp.h | 63 + E2Manager/asn1codec/e2ap_engine/TimeToWait.c | 82 + E2Manager/asn1codec/e2ap_engine/TimeToWait.h | 77 + E2Manager/asn1codec/e2ap_engine/TraceActivation.c | 112 + E2Manager/asn1codec/e2ap_engine/TraceActivation.h | 73 + .../e2ap_engine/TraceCollectionEntityIPAddress.c | 86 + .../e2ap_engine/TraceCollectionEntityIPAddress.h | 63 + E2Manager/asn1codec/e2ap_engine/TraceDepth.c | 82 + E2Manager/asn1codec/e2ap_engine/TraceDepth.h | 77 + .../asn1codec/e2ap_engine/Transmission-Bandwidth.c | 84 + .../asn1codec/e2ap_engine/Transmission-Bandwidth.h | 78 + .../asn1codec/e2ap_engine/TransportLayerAddress.c | 86 + .../asn1codec/e2ap_engine/TransportLayerAddress.h | 63 + .../asn1codec/e2ap_engine/TriggeringMessage.c | 74 + .../asn1codec/e2ap_engine/TriggeringMessage.h | 71 + .../asn1codec/e2ap_engine/TunnelInformation.c | 92 + .../asn1codec/e2ap_engine/TunnelInformation.h | 69 + E2Manager/asn1codec/e2ap_engine/TypeOfError.c | 74 + E2Manager/asn1codec/e2ap_engine/TypeOfError.h | 73 + E2Manager/asn1codec/e2ap_engine/TypeOfMessage.c | 76 + E2Manager/asn1codec/e2ap_engine/TypeOfMessage.h | 72 + .../e2ap_engine/UE-ContextInformation-SgNBModReq.c | 137 + .../e2ap_engine/UE-ContextInformation-SgNBModReq.h | 75 + .../asn1codec/e2ap_engine/UE-ContextInformation.c | 164 + .../asn1codec/e2ap_engine/UE-ContextInformation.h | 81 + .../e2ap_engine/UE-ContextInformationRetrieve.c | 185 + .../e2ap_engine/UE-ContextInformationRetrieve.h | 85 + .../e2ap_engine/UE-ContextInformationSeNBModReq.c | 137 + .../e2ap_engine/UE-ContextInformationSeNBModReq.h | 75 + .../e2ap_engine/UE-ContextKeptIndicator.c | 72 + .../e2ap_engine/UE-ContextKeptIndicator.h | 72 + .../e2ap_engine/UE-ContextReferenceAtSeNB.c | 102 + .../e2ap_engine/UE-ContextReferenceAtSeNB.h | 69 + .../e2ap_engine/UE-ContextReferenceAtSgNB.c | 92 + .../e2ap_engine/UE-ContextReferenceAtSgNB.h | 67 + .../e2ap_engine/UE-ContextReferenceAtWT.c | 92 + .../e2ap_engine/UE-ContextReferenceAtWT.h | 67 + .../asn1codec/e2ap_engine/UE-HistoryInformation.c | 69 + .../asn1codec/e2ap_engine/UE-HistoryInformation.h | 63 + .../e2ap_engine/UE-HistoryInformationFromTheUE.c | 50 + .../e2ap_engine/UE-HistoryInformationFromTheUE.h | 62 + .../UE-RLF-Report-Container-for-extended-bands.c | 50 + .../UE-RLF-Report-Container-for-extended-bands.h | 62 + .../e2ap_engine/UE-RLF-Report-Container.c | 50 + .../e2ap_engine/UE-RLF-Report-Container.h | 62 + E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.c | 76 + E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.h | 64 + .../asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c | 80 + .../asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h | 63 + E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.c | 80 + E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.h | 63 + .../e2ap_engine/UEAggregateMaximumBitRate.c | 92 + .../e2ap_engine/UEAggregateMaximumBitRate.h | 68 + .../asn1codec/e2ap_engine/UEAppLayerMeasConfig.c | 123 + .../asn1codec/e2ap_engine/UEAppLayerMeasConfig.h | 69 + E2Manager/asn1codec/e2ap_engine/UEContextRelease.c | 69 + E2Manager/asn1codec/e2ap_engine/UEContextRelease.h | 61 + E2Manager/asn1codec/e2ap_engine/UEID.c | 86 + E2Manager/asn1codec/e2ap_engine/UEID.h | 63 + E2Manager/asn1codec/e2ap_engine/UENRMeasurement.c | 82 + E2Manager/asn1codec/e2ap_engine/UENRMeasurement.h | 67 + .../asn1codec/e2ap_engine/UESecurityCapabilities.c | 92 + .../asn1codec/e2ap_engine/UESecurityCapabilities.h | 69 + .../UESidelinkAggregateMaximumBitRate.c | 82 + .../UESidelinkAggregateMaximumBitRate.h | 67 + .../asn1codec/e2ap_engine/UEsToBeResetList-Item.c | 102 + .../asn1codec/e2ap_engine/UEsToBeResetList-Item.h | 71 + E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.c | 69 + E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.h | 63 + E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c | 80 + E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h | 63 + .../e2ap_engine/UL-HighInterferenceIndication.c | 86 + .../e2ap_engine/UL-HighInterferenceIndication.h | 63 + .../UL-HighInterferenceIndicationInfo-Item.c | 92 + .../UL-HighInterferenceIndicationInfo-Item.h | 69 + .../UL-HighInterferenceIndicationInfo.c | 69 + .../UL-HighInterferenceIndicationInfo.h | 63 + .../UL-InterferenceOverloadIndication-Item.c | 76 + .../UL-InterferenceOverloadIndication-Item.h | 74 + .../UL-InterferenceOverloadIndication.c | 68 + .../UL-InterferenceOverloadIndication.h | 61 + .../asn1codec/e2ap_engine/UL-Total-PRB-usage.c | 80 + .../asn1codec/e2ap_engine/UL-Total-PRB-usage.h | 63 + .../asn1codec/e2ap_engine/UL-UE-Configuration.c | 76 + .../asn1codec/e2ap_engine/UL-UE-Configuration.h | 74 + .../asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c | 80 + .../asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h | 63 + .../e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c | 80 + .../e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h | 63 + E2Manager/asn1codec/e2ap_engine/ULConfiguration.c | 82 + E2Manager/asn1codec/e2ap_engine/ULConfiguration.h | 67 + E2Manager/asn1codec/e2ap_engine/ULOnlySharing.c | 82 + E2Manager/asn1codec/e2ap_engine/ULOnlySharing.h | 67 + .../e2ap_engine/ULResourceBitmapULandDLSharing.c | 86 + .../e2ap_engine/ULResourceBitmapULandDLSharing.h | 63 + .../e2ap_engine/ULResourcesULandDLSharing.c | 81 + .../e2ap_engine/ULResourcesULandDLSharing.h | 78 + E2Manager/asn1codec/e2ap_engine/ULandDLSharing.c | 92 + E2Manager/asn1codec/e2ap_engine/ULandDLSharing.h | 69 + .../asn1codec/e2ap_engine/UnsuccessfulOutcome.c | 457 + .../asn1codec/e2ap_engine/UnsuccessfulOutcome.h | 131 + .../asn1codec/e2ap_engine/UsableABSInformation.c | 83 + .../asn1codec/e2ap_engine/UsableABSInformation.h | 80 + .../e2ap_engine/UsableABSInformationFDD.c | 118 + .../e2ap_engine/UsableABSInformationFDD.h | 67 + .../e2ap_engine/UsableABSInformationTDD.c | 118 + .../e2ap_engine/UsableABSInformationTDD.h | 67 + .../e2ap_engine/UserPlaneTrafficActivityReport.c | 74 + .../e2ap_engine/UserPlaneTrafficActivityReport.h | 73 + .../asn1codec/e2ap_engine/V2XServicesAuthorized.c | 92 + .../asn1codec/e2ap_engine/V2XServicesAuthorized.h | 69 + E2Manager/asn1codec/e2ap_engine/VehicleUE.c | 74 + E2Manager/asn1codec/e2ap_engine/VehicleUE.h | 73 + E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.c | 72 + E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.h | 72 + .../asn1codec/e2ap_engine/WLANMeasConfigNameList.c | 68 + .../asn1codec/e2ap_engine/WLANMeasConfigNameList.h | 61 + .../e2ap_engine/WLANMeasurementConfiguration.c | 205 + .../e2ap_engine/WLANMeasurementConfiguration.h | 88 + E2Manager/asn1codec/e2ap_engine/WLANName.c | 81 + E2Manager/asn1codec/e2ap_engine/WLANName.h | 63 + E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c | 81 + E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h | 63 + E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.c | 86 + E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.h | 63 + E2Manager/asn1codec/e2ap_engine/WTID-Type1.c | 115 + E2Manager/asn1codec/e2ap_engine/WTID-Type1.h | 65 + E2Manager/asn1codec/e2ap_engine/WTID.c | 82 + E2Manager/asn1codec/e2ap_engine/WTID.h | 80 + E2Manager/asn1codec/e2ap_engine/WidebandCQI.c | 123 + E2Manager/asn1codec/e2ap_engine/WidebandCQI.h | 69 + .../asn1codec/e2ap_engine/WidebandCQICodeword1.c | 141 + .../asn1codec/e2ap_engine/WidebandCQICodeword1.h | 77 + E2Manager/asn1codec/e2ap_engine/X2AP-Message.c | 50 + E2Manager/asn1codec/e2ap_engine/X2AP-Message.h | 62 + .../asn1codec/e2ap_engine/X2APMessageTransfer.c | 69 + .../asn1codec/e2ap_engine/X2APMessageTransfer.h | 61 + E2Manager/asn1codec/e2ap_engine/X2BenefitValue.c | 80 + E2Manager/asn1codec/e2ap_engine/X2BenefitValue.h | 63 + E2Manager/asn1codec/e2ap_engine/X2Release.c | 69 + E2Manager/asn1codec/e2ap_engine/X2Release.h | 61 + E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.c | 69 + E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.h | 61 + E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.c | 69 + E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.h | 61 + .../asn1codec/e2ap_engine/X2RemovalResponse.c | 69 + .../asn1codec/e2ap_engine/X2RemovalResponse.h | 61 + E2Manager/asn1codec/e2ap_engine/X2SetupFailure.c | 69 + E2Manager/asn1codec/e2ap_engine/X2SetupFailure.h | 63 + E2Manager/asn1codec/e2ap_engine/X2SetupRequest.c | 69 + E2Manager/asn1codec/e2ap_engine/X2SetupRequest.h | 63 + E2Manager/asn1codec/e2ap_engine/X2SetupResponse.c | 69 + E2Manager/asn1codec/e2ap_engine/X2SetupResponse.h | 63 + E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c | 42 + E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h | 53 + E2Manager/asn1codec/e2ap_engine/asn_SET_OF.c | 89 + E2Manager/asn1codec/e2ap_engine/asn_SET_OF.h | 73 + E2Manager/asn1codec/e2ap_engine/asn_application.c | 482 + E2Manager/asn1codec/e2ap_engine/asn_application.h | 172 + E2Manager/asn1codec/e2ap_engine/asn_bit_data.c | 334 + E2Manager/asn1codec/e2ap_engine/asn_bit_data.h | 84 + E2Manager/asn1codec/e2ap_engine/asn_codecs.h | 109 + E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.c | 318 + E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.h | 52 + E2Manager/asn1codec/e2ap_engine/asn_constant.h | 88 + E2Manager/asn1codec/e2ap_engine/asn_internal.c | 67 + E2Manager/asn1codec/e2ap_engine/asn_internal.h | 160 + E2Manager/asn1codec/e2ap_engine/asn_ioc.h | 52 + E2Manager/asn1codec/e2ap_engine/asn_random_fill.c | 57 + E2Manager/asn1codec/e2ap_engine/asn_random_fill.h | 52 + E2Manager/asn1codec/e2ap_engine/asn_system.h | 151 + E2Manager/asn1codec/e2ap_engine/ber_decoder.c | 284 + E2Manager/asn1codec/e2ap_engine/ber_decoder.h | 67 + E2Manager/asn1codec/e2ap_engine/ber_tlv_length.c | 169 + E2Manager/asn1codec/e2ap_engine/ber_tlv_length.h | 51 + E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.c | 145 + E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.h | 61 + E2Manager/asn1codec/e2ap_engine/constr_CHOICE.c | 1534 + E2Manager/asn1codec/e2ap_engine/constr_CHOICE.h | 81 + E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.c | 2060 + E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.h | 69 + .../asn1codec/e2ap_engine/constr_SEQUENCE_OF.c | 359 + .../asn1codec/e2ap_engine/constr_SEQUENCE_OF.h | 42 + E2Manager/asn1codec/e2ap_engine/constr_SET_OF.c | 1442 + E2Manager/asn1codec/e2ap_engine/constr_SET_OF.h | 50 + E2Manager/asn1codec/e2ap_engine/constr_TYPE.c | 81 + E2Manager/asn1codec/e2ap_engine/constr_TYPE.h | 263 + E2Manager/asn1codec/e2ap_engine/constraints.c | 112 + E2Manager/asn1codec/e2ap_engine/constraints.h | 63 + .../asn1codec/e2ap_engine/converter-example.c | 1033 + .../asn1codec/e2ap_engine/converter-example.mk | 33 + E2Manager/asn1codec/e2ap_engine/der_encoder.c | 195 + E2Manager/asn1codec/e2ap_engine/der_encoder.h | 69 + E2Manager/asn1codec/e2ap_engine/pdu_collection.c | 190 + E2Manager/asn1codec/e2ap_engine/per_decoder.c | 204 + E2Manager/asn1codec/e2ap_engine/per_decoder.h | 83 + E2Manager/asn1codec/e2ap_engine/per_encoder.c | 283 + E2Manager/asn1codec/e2ap_engine/per_encoder.h | 94 + E2Manager/asn1codec/e2ap_engine/per_opentype.c | 534 + E2Manager/asn1codec/e2ap_engine/per_opentype.h | 45 + E2Manager/asn1codec/e2ap_engine/per_support.c | 490 + E2Manager/asn1codec/e2ap_engine/per_support.h | 128 + E2Manager/asn1codec/e2ap_engine/xer_decoder.c | 370 + E2Manager/asn1codec/e2ap_engine/xer_decoder.h | 107 + E2Manager/asn1codec/e2ap_engine/xer_encoder.c | 238 + E2Manager/asn1codec/e2ap_engine/xer_encoder.h | 84 + E2Manager/asn1codec/e2ap_engine/xer_support.c | 228 + E2Manager/asn1codec/e2ap_engine/xer_support.h | 56 + E2Manager/asn1codec/inc/asn1codec_utils.h | 64 + .../asn1codec/inc/configuration_update_wrapper.h | 59 + E2Manager/asn1codec/inc/x2setup_request_wrapper.h | 77 + E2Manager/asn1codec/inc/x2setup_response_wrapper.h | 51 + E2Manager/asn1codec/src/asn1codec_utils.c | 219 + .../asn1codec/src/configuration_update_wrapper.c | 235 + .../src/tests/configuration_update_wrapper_test.c | 126 + .../src/tests/x2setup_request_wrapper_test.c | 164 + E2Manager/asn1codec/src/x2setup_request_wrapper.c | 327 + E2Manager/configuration/configuration.go | 83 + E2Manager/container-tag.yaml | 4 + E2Manager/controllers/controller.go | 133 + E2Manager/controllers/controller_test.go | 216 + E2Manager/controllers/nodeb_controller.go | 256 + E2Manager/controllers/nodeb_controller_test.go | 378 + E2Manager/cp.out | 601 + E2Manager/e2managererrors/base_error.go | 23 + .../e2managererrors/command_already_in_progress.go | 36 + .../e2managererrors/header_validation_error.go | 35 + E2Manager/e2managererrors/internal_error.go | 35 + E2Manager/e2managererrors/rnib_db_error.go | 35 + E2Manager/go.mod | 21 + E2Manager/go.sum | 219 + E2Manager/handlers/delete_all_request_handler.go | 154 + .../handlers/delete_all_request_handler_test.go | 381 + .../handlers/endc_configuration_update_handler.go | 68 + .../endc_configuration_update_handler_test.go | 71 + E2Manager/handlers/endc_setup_request_handler.go | 76 + .../handlers/endc_setup_request_handler_test.go | 59 + .../endc_setup_response_notification_handler.go | 77 + ...2Setup_failure_response_notification_handler.go | 70 + .../handlers/endc_x2apSetupRequest_asn1_packer.go | 54 + .../endc_x2apSetupRequest_asn1_packer_test.go | 103 + .../endc_x2setupFailureResponseToProtobuf.go | 80 + .../endc_x2setupFailureResponseToProtobuf_test.go | 136 + .../handlers/endc_x2setupResponseToProtobuf.go | 326 + .../endc_x2setupResponseToProtobuf_test.go | 632 + E2Manager/handlers/handler.go | 32 + E2Manager/handlers/notification_handler.go | 28 + E2Manager/handlers/ranLostConnectionHandler.go | 81 + .../handlers/ranLostConnectionHandler_test.go | 328 + E2Manager/handlers/request_handler.go | 27 + ...ic_enb_load_information_notification_handler.go | 23 + E2Manager/handlers/setup_request_handler.go | 151 + E2Manager/handlers/setup_request_handler_test.go | 166 + .../setup_response_notification_handler.go | 51 + .../setup_response_notification_handler_test.go | 60 + ...2Setup_failure_response_notification_handler.go | 67 + E2Manager/handlers/x2apPdu_asn1_unpacker.go | 77 + E2Manager/handlers/x2apPdu_asn1_unpacker_test.go | 128 + E2Manager/handlers/x2apSetupRequest_asn1_packer.go | 54 + .../handlers/x2apSetupRequest_asn1_packer_test.go | 104 + .../x2apSetup_response_notification_handler.go | 75 + .../handlers/x2enb_configuration_update_handler.go | 70 + .../x2enb_configuration_update_handler_test.go | 71 + .../handlers/x2setupFailureResponseToProtobuf.go | 150 + .../x2setupFailureResponseToProtobuf_test.go | 327 + E2Manager/handlers/x2setupResponseToProtobuf.go | 439 + .../handlers/x2setupResponseToProtobuf_test.go | 1217 + E2Manager/logger/logger.go | 184 + E2Manager/logger/logger_test.go | 244 + E2Manager/main/http_server.go | 79 + E2Manager/main/http_server_test.go | 143 + E2Manager/managers/notification_manager.go | 58 + E2Manager/mocks/rmrMessengerMock.go | 60 + E2Manager/mocks/rnibReaderMock.go | 138 + E2Manager/mocks/rnibWriterMock.go | 53 + E2Manager/mocks/sdlInstanceMock.go | 133 + E2Manager/models/e2_request_message.go | 52 + E2Manager/models/e2_request_message_test.go | 48 + E2Manager/models/error_response.go | 23 + E2Manager/models/notification_request.go | 28 + E2Manager/models/notification_response.go | 33 + E2Manager/models/request_details.go | 24 + E2Manager/models/request_interface.go | 22 + .../providers/incoming_request_handler_provider.go | 66 + .../providers/notification_handler_provider.go | 65 + .../notification_handler_provider_test.go | 106 + E2Manager/providers/request_handler_provider.go | 54 + .../providers/request_handler_provider_test.go | 123 + E2Manager/rNibWriter/rNibWriter.go | 210 + E2Manager/rNibWriter/rNibWriter_test.go | 587 + E2Manager/resources/configuration.yaml | 9 + E2Manager/rmrCgo/rmrCgoApi.go | 123 + E2Manager/rmrCgo/rmrCgoApi_test.go | 142 + E2Manager/rmrCgo/rmrCgoTypes.go | 137 + E2Manager/rmrCgo/rmrCgoUtils.go | 107 + E2Manager/rnibBuilders/node_info_builder.go | 35 + E2Manager/rnibBuilders/node_info_builder_test.go | 42 + E2Manager/router.txt | 18 + E2Manager/services/rmr_service.go | 137 + E2Manager/services/rmr_service_test.go | 107 + E2Manager/services/rnib_reader_service.go | 58 + E2Manager/sessions/e2session.go | 45 + .../stateMachine/delete_all_node_state_machine.go | 40 + E2Manager/tests/dataProvider.go | 83 + E2Manager/utils/proto_utils.go | 53 + .../tests/configuration_update_wrapper_test | Bin 0 -> 1210240 bytes E2Manager/x2_setup_message/tests/xsetup_codec_test | Bin 0 -> 1697840 bytes LICENSES.txt | 28 + router.txt | 17 + 1712 files changed, 289953 insertions(+) create mode 100644 .gitignore create mode 100644 .gitreview create mode 100644 Automation/Dockerfile create mode 100644 Automation/Scripts/docker_ms.sh create mode 100644 Automation/Scripts/k8s_ms.py create mode 100644 Automation/Scripts/ric_ms.sh create mode 100644 Automation/Scripts/run.sh create mode 100644 Automation/Tests/ENDC-Setup/ENDC-setup_1_setup_request.robot create mode 100644 Automation/Tests/ENDC-Setup/ENDC-setup_2_get_nodeb_gnb.robot create mode 100644 Automation/Tests/ENDC-Setup/__init__.robot create mode 100644 Automation/Tests/ENDC-Setup/log.html create mode 100644 Automation/Tests/ENDC-Setup/output.xml create mode 100644 Automation/Tests/ENDC-Setup/report.html create mode 100644 Automation/Tests/ENDC-Setup/router.txt create mode 100644 Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot create mode 100644 Automation/Tests/Get-All-Nodes/Get_nodes_flush.robot create mode 100644 Automation/Tests/Get-All-Nodes/__init__.robot create mode 100644 Automation/Tests/Get-All-Nodes/addtoredis.py create mode 100644 Automation/Tests/Get-All-Nodes/flush.py create mode 100644 Automation/Tests/Health/__init__.robot create mode 100644 Automation/Tests/Health/get_health_check.robot create mode 100644 Automation/Tests/Resource/resource.robot create mode 100644 Automation/Tests/Unhappy/Resource_not_found.robot create mode 100644 Automation/Tests/Unhappy/Response400.robot create mode 100644 Automation/Tests/Unhappy/Response500.robot create mode 100644 Automation/Tests/Unhappy/Setup_failure.robot create mode 100644 Automation/Tests/Unhappy/log.html create mode 100644 Automation/Tests/Unhappy/output.xml create mode 100644 Automation/Tests/Unhappy/report.html create mode 100644 Automation/Tests/Unhappy/router.txt create mode 100644 Automation/Tests/X2-Setup/X2-setup_1_send_request.robot create mode 100644 Automation/Tests/X2-Setup/X2-setup_2_get_nodeb_enb.robot create mode 100644 Automation/Tests/X2-Setup/__init__.robot create mode 100644 Automation/Tests/log.html create mode 100644 Automation/Tests/output.xml create mode 100644 Automation/Tests/report.html create mode 100644 Automation/Tests/router.txt create mode 100644 Automation/run_tests.sh create mode 100644 E2Manager/Dockerfile create mode 100644 E2Manager/asn1codec/.cproject create mode 100644 E2Manager/asn1codec/.project create mode 100644 E2Manager/asn1codec/Makefile create mode 100644 E2Manager/asn1codec/e2ap_engine/ABS-Status.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ABS-Status.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ANY.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ANY.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedCellList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedCellList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivationID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ActivationID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BIT_STRING.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BIT_STRING.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BOOLEAN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BOOLEAN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BandInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BandInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BearerType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BearerType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BenefitMetric.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BenefitMetric.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BitRate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BitRate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothName.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BluetoothName.h create mode 100644 E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.c create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.h create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTvalue.c create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTvalue.h create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c create mode 100644 E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CRNTI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CRNTI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CSG-Id.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CSG-Id.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CallProcess-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CallProcess-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CapacityValue.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CapacityValue.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Cause.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Cause.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseMisc.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseMisc.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseProtocol.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseProtocol.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseRIC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseRIC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseTransport.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CauseTransport.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Cell-Size.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Cell-Size.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellActivationResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellBasedMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellBasedMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellBasedQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellBasedQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellInformation-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellInformation-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellInformation-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellInformation-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellToReport-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellToReport-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellToReport-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellToReport-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CellType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CellType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Correlation-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Correlation-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CoverageModificationList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CoverageModificationList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Criticality.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Criticality.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.h create mode 100644 E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.c create mode 100644 E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-ABS-status.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-ABS-status.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-Forwarding.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-Forwarding.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DRB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DRB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DataTrafficResources.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DataTrafficResources.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DeactivationIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DeactivationIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DeliveryStatus.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DeliveryStatus.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DuplicationActivation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DuplicationActivation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RAB-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2AP-PDU.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2AP-PDU.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EARFCN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EARFCN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EARFCNExtension.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EARFCNExtension.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ECGI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ECGI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EPLMNs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EPLMNs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ErrorIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ErrorIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/EventType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/EventType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Fourframes.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Fourframes.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GNB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GNB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GTP-TEI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GTP-TEI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GU-Group-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GU-Group-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GUGroupIDList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GUGroupIDList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GUMMEI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GUMMEI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HFN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HFN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HFNModified.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HFNModified.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverCancel.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverCancel.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverReport.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverReport.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverReportType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverReportType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/INTEGER.c create mode 100644 E2Manager/asn1codec/e2ap_engine/INTEGER.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h create mode 100644 E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c create mode 100644 E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Interface-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Interface-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceDirection.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceDirection.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.h create mode 100644 E2Manager/asn1codec/e2ap_engine/InvokeIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/InvokeIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LAC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LAC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LCID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LCID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LHN-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LHN-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Limited-list.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Limited-list.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Links-to-log.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Links-to-log.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LoadIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LoadIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LoadInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LoadInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M3Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M3Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M3period.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M3period.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M4Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M4Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M4period.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M4period.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M5Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M5Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M5period.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M5period.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M6Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M6Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M6delay-threshold.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M6delay-threshold.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M6report-interval.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M6report-interval.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M7Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M7Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/M7period.c create mode 100644 E2Manager/asn1codec/e2ap_engine/M7period.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Activation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Activation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MDTPLMNList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MDTPLMNList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MME-Code.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MME-Code.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MME-Group-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MME-Group-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Makefile.am.asn1convert create mode 100644 E2Manager/asn1codec/e2ap_engine/Makefile.am.libasncodec create mode 100644 E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Measurement-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Measurement-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.h create mode 100644 E2Manager/asn1codec/e2ap_engine/MultibandInfoList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/MultibandInfoList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NR-TxBW.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NR-TxBW.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRCGI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRCGI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRFreqInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRFreqInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRNRB.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRNRB.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRPCI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRPCI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRSCS.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRSCS.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NULL.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NULL.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NativeEnumerated.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NativeEnumerated.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NativeInteger.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NativeInteger.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Neighbour-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Neighbour-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.c create mode 100644 E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.h create mode 100644 E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c create mode 100644 E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h create mode 100644 E2Manager/asn1codec/e2ap_engine/OCTET_STRING.c create mode 100644 E2Manager/asn1codec/e2ap_engine/OCTET_STRING.h create mode 100644 E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Old-ECGIs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Old-ECGIs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Oneframe.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Oneframe.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PA-Values.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PA-Values.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PCI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PCI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCPSnLength.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PDCPSnLength.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMN-Identity.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMN-Identity.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Packet-LossRate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Packet-LossRate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PedestrianUE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PedestrianUE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Port-Number.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Port-Number.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Presence.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Presence.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PrintableString.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PrintableString.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PriorityLevel.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PriorityLevel.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/PrivateMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProcedureCode.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProcedureCode.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h create mode 100644 E2Manager/asn1codec/e2ap_engine/QCI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/QCI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunction-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunction-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctions-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctions-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionDefinition.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionDefinition.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactionType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcallProcessID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcallProcessID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcause.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcause.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationHeader.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationHeader.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationSN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationSN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICindicationType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICrequestID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICrequestID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceQuery.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceQuery.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscription.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscription.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RICtimeToWait.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RICtimeToWait.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RLC-Status.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RLC-Status.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RLCMode.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RLCMode.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RLFIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RLFIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RNL-Header.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RNL-Header.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRC-Context.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRC-Context.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCTransfer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RRCTransfer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RSRPMRList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RSRPMRList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Registration-Request.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Registration-Request.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportArea.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportArea.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResetRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResetRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResetResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResetResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResourceType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ResumeID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ResumeID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SRBType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SRBType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SULInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SULInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCells.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCells.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ServiceType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ServiceType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SharedResourceType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SharedResourceType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ShortMAC-I.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ShortMAC-I.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SplitSRB.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SplitSRB.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SplitSRBs.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SplitSRBs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Style-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Style-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQIList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandCQIList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandSize.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubbandSize.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeAllocation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeAllocation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeAssignment.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeAssignment.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeType.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubframeType.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.h create mode 100644 E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c create mode 100644 E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TABasedMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TABasedMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TABasedQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TABasedQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAI-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAI-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIListforMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIListforMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIListforQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAIListforQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAListforMDT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAListforMDT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TAListforQMC.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TAListforQMC.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-Info.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-Info.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TimeStamp.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TimeStamp.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TimeToWait.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TimeToWait.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceActivation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceActivation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceDepth.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TraceDepth.h create mode 100644 E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.c create mode 100644 E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TriggeringMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TriggeringMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TunnelInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TunnelInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TypeOfError.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TypeOfError.h create mode 100644 E2Manager/asn1codec/e2ap_engine/TypeOfMessage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/TypeOfMessage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEContextRelease.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEContextRelease.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UENRMeasurement.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UENRMeasurement.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ULConfiguration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ULConfiguration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ULOnlySharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ULOnlySharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ULandDLSharing.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ULandDLSharing.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformation.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformation.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.h create mode 100644 E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c create mode 100644 E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h create mode 100644 E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.c create mode 100644 E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.h create mode 100644 E2Manager/asn1codec/e2ap_engine/VehicleUE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/VehicleUE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANName.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WLANName.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID-Type1.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID-Type1.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WTID.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WidebandCQI.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WidebandCQI.h create mode 100644 E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.c create mode 100644 E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2AP-Message.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2AP-Message.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2BenefitValue.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2BenefitValue.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2Release.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2Release.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupFailure.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupFailure.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupRequest.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupRequest.h create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupResponse.c create mode 100644 E2Manager/asn1codec/e2ap_engine/X2SetupResponse.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_SET_OF.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_SET_OF.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_application.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_application.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_bit_data.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_bit_data.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_codecs.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_constant.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_internal.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_internal.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_ioc.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_random_fill.c create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_random_fill.h create mode 100644 E2Manager/asn1codec/e2ap_engine/asn_system.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_decoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_decoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_tlv_length.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_tlv_length.h create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.c create mode 100644 E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_CHOICE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_CHOICE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SET_OF.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_SET_OF.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_TYPE.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constr_TYPE.h create mode 100644 E2Manager/asn1codec/e2ap_engine/constraints.c create mode 100644 E2Manager/asn1codec/e2ap_engine/constraints.h create mode 100644 E2Manager/asn1codec/e2ap_engine/converter-example.c create mode 100644 E2Manager/asn1codec/e2ap_engine/converter-example.mk create mode 100644 E2Manager/asn1codec/e2ap_engine/der_encoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/der_encoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/pdu_collection.c create mode 100644 E2Manager/asn1codec/e2ap_engine/per_decoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/per_decoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/per_encoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/per_encoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/per_opentype.c create mode 100644 E2Manager/asn1codec/e2ap_engine/per_opentype.h create mode 100644 E2Manager/asn1codec/e2ap_engine/per_support.c create mode 100644 E2Manager/asn1codec/e2ap_engine/per_support.h create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_decoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_decoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_encoder.c create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_encoder.h create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_support.c create mode 100644 E2Manager/asn1codec/e2ap_engine/xer_support.h create mode 100644 E2Manager/asn1codec/inc/asn1codec_utils.h create mode 100644 E2Manager/asn1codec/inc/configuration_update_wrapper.h create mode 100644 E2Manager/asn1codec/inc/x2setup_request_wrapper.h create mode 100644 E2Manager/asn1codec/inc/x2setup_response_wrapper.h create mode 100644 E2Manager/asn1codec/src/asn1codec_utils.c create mode 100644 E2Manager/asn1codec/src/configuration_update_wrapper.c create mode 100644 E2Manager/asn1codec/src/tests/configuration_update_wrapper_test.c create mode 100644 E2Manager/asn1codec/src/tests/x2setup_request_wrapper_test.c create mode 100644 E2Manager/asn1codec/src/x2setup_request_wrapper.c create mode 100644 E2Manager/configuration/configuration.go create mode 100644 E2Manager/container-tag.yaml create mode 100644 E2Manager/controllers/controller.go create mode 100644 E2Manager/controllers/controller_test.go create mode 100644 E2Manager/controllers/nodeb_controller.go create mode 100644 E2Manager/controllers/nodeb_controller_test.go create mode 100644 E2Manager/cp.out create mode 100644 E2Manager/e2managererrors/base_error.go create mode 100644 E2Manager/e2managererrors/command_already_in_progress.go create mode 100644 E2Manager/e2managererrors/header_validation_error.go create mode 100644 E2Manager/e2managererrors/internal_error.go create mode 100644 E2Manager/e2managererrors/rnib_db_error.go create mode 100644 E2Manager/go.mod create mode 100644 E2Manager/go.sum create mode 100644 E2Manager/handlers/delete_all_request_handler.go create mode 100644 E2Manager/handlers/delete_all_request_handler_test.go create mode 100644 E2Manager/handlers/endc_configuration_update_handler.go create mode 100644 E2Manager/handlers/endc_configuration_update_handler_test.go create mode 100644 E2Manager/handlers/endc_setup_request_handler.go create mode 100644 E2Manager/handlers/endc_setup_request_handler_test.go create mode 100644 E2Manager/handlers/endc_setup_response_notification_handler.go create mode 100644 E2Manager/handlers/endc_x2Setup_failure_response_notification_handler.go create mode 100644 E2Manager/handlers/endc_x2apSetupRequest_asn1_packer.go create mode 100644 E2Manager/handlers/endc_x2apSetupRequest_asn1_packer_test.go create mode 100644 E2Manager/handlers/endc_x2setupFailureResponseToProtobuf.go create mode 100644 E2Manager/handlers/endc_x2setupFailureResponseToProtobuf_test.go create mode 100644 E2Manager/handlers/endc_x2setupResponseToProtobuf.go create mode 100644 E2Manager/handlers/endc_x2setupResponseToProtobuf_test.go create mode 100644 E2Manager/handlers/handler.go create mode 100644 E2Manager/handlers/notification_handler.go create mode 100644 E2Manager/handlers/ranLostConnectionHandler.go create mode 100644 E2Manager/handlers/ranLostConnectionHandler_test.go create mode 100644 E2Manager/handlers/request_handler.go create mode 100644 E2Manager/handlers/ric_enb_load_information_notification_handler.go create mode 100644 E2Manager/handlers/setup_request_handler.go create mode 100644 E2Manager/handlers/setup_request_handler_test.go create mode 100644 E2Manager/handlers/setup_response_notification_handler.go create mode 100644 E2Manager/handlers/setup_response_notification_handler_test.go create mode 100644 E2Manager/handlers/x2Setup_failure_response_notification_handler.go create mode 100644 E2Manager/handlers/x2apPdu_asn1_unpacker.go create mode 100644 E2Manager/handlers/x2apPdu_asn1_unpacker_test.go create mode 100644 E2Manager/handlers/x2apSetupRequest_asn1_packer.go create mode 100644 E2Manager/handlers/x2apSetupRequest_asn1_packer_test.go create mode 100644 E2Manager/handlers/x2apSetup_response_notification_handler.go create mode 100644 E2Manager/handlers/x2enb_configuration_update_handler.go create mode 100644 E2Manager/handlers/x2enb_configuration_update_handler_test.go create mode 100644 E2Manager/handlers/x2setupFailureResponseToProtobuf.go create mode 100644 E2Manager/handlers/x2setupFailureResponseToProtobuf_test.go create mode 100644 E2Manager/handlers/x2setupResponseToProtobuf.go create mode 100644 E2Manager/handlers/x2setupResponseToProtobuf_test.go create mode 100644 E2Manager/logger/logger.go create mode 100644 E2Manager/logger/logger_test.go create mode 100644 E2Manager/main/http_server.go create mode 100644 E2Manager/main/http_server_test.go create mode 100644 E2Manager/managers/notification_manager.go create mode 100644 E2Manager/mocks/rmrMessengerMock.go create mode 100644 E2Manager/mocks/rnibReaderMock.go create mode 100644 E2Manager/mocks/rnibWriterMock.go create mode 100644 E2Manager/mocks/sdlInstanceMock.go create mode 100644 E2Manager/models/e2_request_message.go create mode 100644 E2Manager/models/e2_request_message_test.go create mode 100644 E2Manager/models/error_response.go create mode 100644 E2Manager/models/notification_request.go create mode 100644 E2Manager/models/notification_response.go create mode 100644 E2Manager/models/request_details.go create mode 100644 E2Manager/models/request_interface.go create mode 100644 E2Manager/providers/incoming_request_handler_provider.go create mode 100644 E2Manager/providers/notification_handler_provider.go create mode 100644 E2Manager/providers/notification_handler_provider_test.go create mode 100644 E2Manager/providers/request_handler_provider.go create mode 100644 E2Manager/providers/request_handler_provider_test.go create mode 100644 E2Manager/rNibWriter/rNibWriter.go create mode 100644 E2Manager/rNibWriter/rNibWriter_test.go create mode 100644 E2Manager/resources/configuration.yaml create mode 100644 E2Manager/rmrCgo/rmrCgoApi.go create mode 100644 E2Manager/rmrCgo/rmrCgoApi_test.go create mode 100644 E2Manager/rmrCgo/rmrCgoTypes.go create mode 100644 E2Manager/rmrCgo/rmrCgoUtils.go create mode 100644 E2Manager/rnibBuilders/node_info_builder.go create mode 100644 E2Manager/rnibBuilders/node_info_builder_test.go create mode 100644 E2Manager/router.txt create mode 100644 E2Manager/services/rmr_service.go create mode 100644 E2Manager/services/rmr_service_test.go create mode 100644 E2Manager/services/rnib_reader_service.go create mode 100644 E2Manager/sessions/e2session.go create mode 100644 E2Manager/stateMachine/delete_all_node_state_machine.go create mode 100644 E2Manager/tests/dataProvider.go create mode 100644 E2Manager/utils/proto_utils.go create mode 100644 E2Manager/x2_setup_message/tests/configuration_update_wrapper_test create mode 100644 E2Manager/x2_setup_message/tests/xsetup_codec_test create mode 100644 LICENSES.txt create mode 100644 router.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..65ab8c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +/.idea/e2mgr.iml +/.idea/encodings.xml +/.idea/misc.xml +/.idea/modules.xml +/.idea/vcs.xml +/.idea/workspace.xml +.vscode/launch.json +/.idea/sonarIssues.xml +*.o +*.a +E2Manager/asn1codec/e2ap_engine/converter-example +E2Manager/asn1codec/tests/ + diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..e1956af --- /dev/null +++ b/.gitreview @@ -0,0 +1,5 @@ +[gerrit] +host=gerrit.o-ran-sc.org +port=29418 +project=ric-plt/e2mgr +defaultbranch=master \ No newline at end of file diff --git a/Automation/Dockerfile b/Automation/Dockerfile new file mode 100644 index 0000000..18a6be7 --- /dev/null +++ b/Automation/Dockerfile @@ -0,0 +1,17 @@ +root@ric01:/opt/docker# cat Dockerfile +FROM python:3.6 + +RUN python3 -m pip install robotframework \ + && pip3 install --upgrade RESTinstance \ + && pip install docker \ + && apt-get update \ + && apt-get install -y vim + +WORKDIR /opt +COPY ./Scripts /opt/Scripts +COPY ./Tests /opt/Tests +COPY ./run_tests.sh /opt/run_tests.sh + +ENV DOCKER_HOST_IP "127.0.0.1" + +CMD [ "/opt/run_tests.sh" ] diff --git a/Automation/Scripts/docker_ms.sh b/Automation/Scripts/docker_ms.sh new file mode 100644 index 0000000..946d96a --- /dev/null +++ b/Automation/Scripts/docker_ms.sh @@ -0,0 +1,62 @@ +#!/bin/bash + + +MS=$1 +ACTION=$2 + +do_stop(){ + MS=$1 + if ! docker ps --filter "name=^/${MS}" | grep -q "${MS}"; then + echo "${MS} is already stopped, ignore the action." + else + echo "Executing 'docker stop ${MS}'" + docker stop ${MS} + fi +} + +do_start(){ + MS=$1 + if docker ps --filter "name=^/${MS}" | grep -q "${MS}"; then + echo "${MS} is running, performing restart." + echo "Executing \'\docker stop ${MS}'" + docker stop ${MS} && sleep 2 + echo "Executing 'docker start ${MS}'" + docker start ${MS} + else + echo "Executing 'docker start ${MS}'" + docker start ${MS} + fi +} + + +do_status(){ + MS=$1 + out=$(docker ps --filter "name=^/${MS}" | grep "${MS}") + res=$? + if [ "$res" == "0" ]; then + echo $out + echo "The ${MS} is currnetly up & running!" + else + echo "The ${MS} is currnetly not running!" + fi +} + + +case $ACTION in + start) + do_start ${MS} + ;; + stop) + do_stop ${MS} + ;; + status) + do_status ${MS} + ;; + restart) + do_stop ${MS} + do_start ${MS} + ;; + *) + do_status ${MS} + ;; +esac \ No newline at end of file diff --git a/Automation/Scripts/k8s_ms.py b/Automation/Scripts/k8s_ms.py new file mode 100644 index 0000000..9384d85 --- /dev/null +++ b/Automation/Scripts/k8s_ms.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + + +import sys, os, traceback +import docker +# Getting the Arguments. if argument are missing exit the script with exit 1 +try: + ms = sys.argv[1].lower() + action = sys.argv[2].lower() + script = os.path.basename(sys.argv[0]) +except: + print("Usage: %s for now only stop action is allowd" % \ + (os.path.basename(sys.argv[0]))) + sys.exit(1) + +ms=sys.argv[1].lower() +action=sys.argv[2].lower() +docker_host_ip=os.environ.get('DOCKER_HOST_IP', False) +cms=[] +if not docker_host_ip: + print('The DOCKER_HOST_IP env varibale is not defined, exiting!') + sys.exit(1) + +def get_ms(): + try: + client = docker.DockerClient(base_url='tcp://%s:2376' % docker_host_ip) + + for ms in client.containers.list(): + if ms.name == sys.argv[1]: + cms.append(ms) + return cms[0] + except: + print('Can\'t connect to docker API, Exiting!') + print(traceback.format_exc()) + sys.exit(1) + +if action == 'stop': + print('Stop the %s pod' % ms ) + get_ms().stop() + sys.exit(0) +else: + print ('Only stop commnad is allowed!, exiting!') + sys.exit(1) diff --git a/Automation/Scripts/ric_ms.sh b/Automation/Scripts/ric_ms.sh new file mode 100644 index 0000000..e11b9d7 --- /dev/null +++ b/Automation/Scripts/ric_ms.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +stringContain() { [ -z "${2##*$1*}" ]; } + +MS=${1} +ACTION=${2} +SCRIPT=`basename "$0"` +USAGE="\nUsage: ./$SCRIPT \nValid Options: ./$SCRIPT \nE.g ./$SCRIPT dbass stop" +OPTIONS="simu,dbass,e2mgr,e2,stop,start,restart,status" +DOC_SCRIPT="/opt/docker_ms.sh" +K8S_SCRIPT="/opt/k8s_ms.py" +# Check if script got the reqiured arguments +[ -z ${SYS_TYPE} ] && echo -e "\nThe SYS_TYPE environemnt variable is not set!" && echo -e "${USAGE}" && exit 1 +[ -z ${MS} ] && echo -e "\nThe MS argument is reqiured!" && echo -e "${USAGE}" && exit 2 +[ -z ${ACTION} ] && echo -e "\nThe ACTION argument is reqiured!" && echo -e "${USAGE}" && exit 2 +! grep -q $MS <<<"$OPTIONS" && echo -e "\nThe microservice '${MS}' is not a valid value!" && echo -e "${USAGE}" && exit 3 +! grep -q $ACTION <<<"$OPTIONS" && echo -e "\nThe action '${ACTION}' is not a valid value!" && echo -e "${USAGE}" && exit 3 + +if [ "${SYS_TYPE}" == "docker" ]; then + echo "SYS_TYPE=docker, Docker mode is set" + [ ! -f ${DOC_SCRIPT} ] && echo "reqiured file '${DOC_SCRIPT}' is missing, exit" && exit 4 + echo "Executing the '${DOC_SCRIPT}' script!" + ${DOC_SCRIPT} ${MS} ${ACTION} +elif [ "${SYS_TYPE}" == "k8s" ]; then + echo "SYS_TYPE=k8s, K8S mode is set" + [ ! -f ${K8S_SCRIPT} ] && echo "reqiured file '${K8S_SCRIPT}' is missing, exit" && exit 4 + echo "Executing the '${K8S_SCRIPT}' script!" + ${K8S_SCRIPT} ${MS} ${ACTION} +fi \ No newline at end of file diff --git a/Automation/Scripts/run.sh b/Automation/Scripts/run.sh new file mode 100644 index 0000000..64cf841 --- /dev/null +++ b/Automation/Scripts/run.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +COMP="${1:-all}" +E2M_TAG="${2:-1.0.0}" +E2T_TAG="${3:-1.0.0}" +SIM_TAG="${4:-1.0.5}" + +if [ "$COMP" == "all" ]; then +docker rm -f e2 +docker rm -f e2mgr +docker rm -f gnbe2_simu + +docker kill redis +docker rm redis +docker run -d --name redis -p 6379:6379 --env DBAAS_SERVICE_HOST=10.0.2.15 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/dbass:1.0.0 + +sleep 2 + +docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:$SIM_TAG + +docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env DBAAS_SERVICE_HOST=10.0.2.15 --env RIC_ID="bbbccc-abcd0e/20" nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker cp e2mgr:/opt/E2Manager/router.txt . +sleep 2 +docker create --name e2 --env sctp=5577 --env nano=38000 --env loglevel=debug --env print=1 -p 38000:38000 nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +sleep 2 +docker cp router.txt e2:/opt/e2/dockerRouter.txt +sleep 2 +docker start e2 + +docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 --env duration=600000000000 --env indicationReportRate=0 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:$SIM_TAG + +#docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 --env duration=600000000000 --env indicationReportRate=1000000 --env indicationInsertRate=1000000 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_simu:1.0.0 + +docker ps +fi +if [ "$COMP" = "gnbe2_sim" ]; then +docker rm -f gnb_simu +#docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 --env duration=600000000000 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_simu:$SIM_TAG +#docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnb_simu:1.1.0 +docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 --env duration=6000000000000 indicationReportRate=0 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_sim:$SIM_TAG +docker ps +fi +if [ "$COMP" = "e2" ]; then +docker rm -f e2 +docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +docker create --name e2 --env sctp=5577 --env nano=38000 --env print=1 --env RMR_RTG_SVC=10.0.2.15 -p 38000:38000 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2:$E2T_TAG + +docker ps +fi +if [ "$COMP" = "e2mgr" ]; then +docker rm -f e2mgr +docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env RMR_RTG_SVC=10.0.2.15 --env DBAAS_SERVICE_HOST=10.0.2.15 RIC_ID="bbbccc-abcd0e/20" nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker ps +fi + diff --git a/Automation/Tests/ENDC-Setup/ENDC-setup_1_setup_request.robot b/Automation/Tests/ENDC-Setup/ENDC-setup_1_setup_request.robot new file mode 100644 index 0000000..8fc1d58 --- /dev/null +++ b/Automation/Tests/ENDC-Setup/ENDC-setup_1_setup_request.robot @@ -0,0 +1,29 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library Collections +Library REST ${url} + + + + +*** Test Cases *** +Post Request setup node b endc-setup + #${file}= Get Binary File ${PATH} + #${file}= Evaluate json.loads($file) json + #Set To Dictionary ${file} ranName=test2 + Set Headers ${header} + POST /v1/nodeb/endc-setup ${json} + Integer response status 200 + + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 + + + diff --git a/Automation/Tests/ENDC-Setup/ENDC-setup_2_get_nodeb_gnb.robot b/Automation/Tests/ENDC-Setup/ENDC-setup_2_get_nodeb_gnb.robot new file mode 100644 index 0000000..0f5e711 --- /dev/null +++ b/Automation/Tests/ENDC-Setup/ENDC-setup_2_get_nodeb_gnb.robot @@ -0,0 +1,43 @@ +*** Settings *** +Resource ../Resource/resource.robot +#Suite Setup Start dockers +Library OperatingSystem +Library Collections +Library REST ${url} + + + +*** Test Cases *** +Get request gnb + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body ip 10.0.2.15 + String response body connectionStatus CONNECTED + Integer response body port 5577 + String response body nodeType GNB + Integer response body gnb servedNrCells 0 servedNrCellInformation nrPci 99 + String response body gnb servedNrCells 0 servedNrCellInformation cellId 02f829:0007ab0120 + String response body gnb servedNrCells 0 servedNrCellInformation servedPlmns 0 "02f829" + String response body gnb servedNrCells 0 servedNrCellInformation nrMode FDD + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd ulFreqInfo nrArFcn 100 + Integer response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd ulFreqInfo frequencyBands 0 nrFrequencyBand 9 + Integer response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd ulFreqInfo frequencyBands 0 supportedSulBands 0 9 + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd dlFreqInfo nrArFcn 100 + Integer response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd dlFreqInfo frequencyBands 0 nrFrequencyBand 9 + Integer response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd dlFreqInfo frequencyBands 0 supportedSulBands 0 9 + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd ulTransmissionBandwidth nrscs SCS15 + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd ulTransmissionBandwidth ncnrb NRB11 + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd dlTransmissionBandwidth nrscs SCS15 + String response body gnb servedNrCells 0 servedNrCellInformation choiceNrMode fdd dlTransmissionBandwidth ncnrb NRB11 + + + + +#*** Keywords *** +#Start dockers + #Run And Return Rc And Output ${run_script} + #${result}= Run And Return Rc And Output ${docker_command} + #Should Be Equal As Integers ${result[1]} 4 + diff --git a/Automation/Tests/ENDC-Setup/__init__.robot b/Automation/Tests/ENDC-Setup/__init__.robot new file mode 100644 index 0000000..de9aa6a --- /dev/null +++ b/Automation/Tests/ENDC-Setup/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation endc-Setup diff --git a/Automation/Tests/ENDC-Setup/log.html b/Automation/Tests/ENDC-Setup/log.html new file mode 100644 index 0000000..27cfbe8 --- /dev/null +++ b/Automation/Tests/ENDC-Setup/log.html @@ -0,0 +1,2125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/ENDC-Setup/output.xml b/Automation/Tests/ENDC-Setup/output.xml new file mode 100644 index 0000000..f3cd0ff --- /dev/null +++ b/Automation/Tests/ENDC-Setup/output.xml @@ -0,0 +1,85 @@ + + + + + +Runs the given command in the system and returns the RC and output. + +${run_script} + +Running command '/home/ubuntu/run.sh 2>&1'. + + + +Runs the given command in the system and returns the RC and output. + +${docker_command} + + +${result} + +Running command 'docker ps | grep snapshot | wc --lines 2>&1'. +${result} = (0, '4') + + + +Fails if objects are unequal after converting them to integers. + +${result[1]} +4 + + + + + + + + +settings + +*Sets new request headers or updates the existing.* + +${header} + + + + + +http + +*Sends a POST request to the endpoint.* + +/v1/nodeb/endc-setup +${json} + + + + + +assertions + +*Asserts the field as JSON integer.* + +response status +200 + + + + + + + + + +Critical Tests +All Tests + + + + +ENDC-setup 1 setup request + + + + + diff --git a/Automation/Tests/ENDC-Setup/report.html b/Automation/Tests/ENDC-Setup/report.html new file mode 100644 index 0000000..4bbba2e --- /dev/null +++ b/Automation/Tests/ENDC-Setup/report.html @@ -0,0 +1,2431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/ENDC-Setup/router.txt b/Automation/Tests/ENDC-Setup/router.txt new file mode 100644 index 0000000..3d0ee40 --- /dev/null +++ b/Automation/Tests/ENDC-Setup/router.txt @@ -0,0 +1,10 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +newrt|end diff --git a/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot b/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot new file mode 100644 index 0000000..e17be8c --- /dev/null +++ b/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot @@ -0,0 +1,42 @@ +*** Settings *** +Suite Setup Flush Redis +Library Process +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + +*** Variables *** +${file} ${CURDIR}/addtoredis.py +${flush_file} ${CURDIR}/flush.py + +*** Test Cases *** +Add nodes to redis db + ${result}= Run Process python3.6 ${file} + Should Be Equal As Strings ${result.stdout} Insert successfully to Redis + + +Get all node ids + ${result}= GET v1/nodeb-ids + #Output + Integer response status 200 + String response body 0 inventoryName test1 + String response body 0 globalNbId plmnId 02f829 + String response body 0 globalNbId nbId 007a80 + String response body 1 inventoryName test2 + String response body 1 globalNbId plmnId 03f829 + String response body 1 globalNbId nbId 001234 + + + +*** Keywords *** +Flush Redis + ${result}= Run Process python3.6 ${flush_file} + Should Be Equal As Strings ${result.stdout} Flush Success + + + + + + + diff --git a/Automation/Tests/Get-All-Nodes/Get_nodes_flush.robot b/Automation/Tests/Get-All-Nodes/Get_nodes_flush.robot new file mode 100644 index 0000000..d48c999 --- /dev/null +++ b/Automation/Tests/Get-All-Nodes/Get_nodes_flush.robot @@ -0,0 +1,11 @@ +*** Settings *** +Test Teardown Flush Redis + + +*** Variables *** +${file} ${CURDIR}/flush.py + +*** Keywords *** +Flush Redis + ${result}= Run Process python3.6 ${file} + Should Be Equal As Strings ${result.stdout} Flush Success \ No newline at end of file diff --git a/Automation/Tests/Get-All-Nodes/__init__.robot b/Automation/Tests/Get-All-Nodes/__init__.robot new file mode 100644 index 0000000..e172845 --- /dev/null +++ b/Automation/Tests/Get-All-Nodes/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation Get all nodes diff --git a/Automation/Tests/Get-All-Nodes/addtoredis.py b/Automation/Tests/Get-All-Nodes/addtoredis.py new file mode 100644 index 0000000..273a94f --- /dev/null +++ b/Automation/Tests/Get-All-Nodes/addtoredis.py @@ -0,0 +1,32 @@ +import redis + +r = redis.Redis(host='localhost', port=6379, db=0) + +r.flushall() + +r.set("{e2Manager},ENB:02f829:007a80", "\n\x05test1\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0602f829\x12\x06007a800\x01:3\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + +r.set("{e2Manager},RAN:test1","\x12\t10.0.2.15\x18\xc9+ \x03H\x01R\x02\b\t") + +r.set("{e2Manager},PCI:test1:63" , "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + +r.set("{e2Manager},CELL:02f829:0007ab50" , "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + +r.sadd("{e2Manager},ENB" , "\n\x05test1\x12\x10\n\x0602f829\x12\x06007a80") + + +r.set("{e2Manager},GNB:03f829:002234", "\n\x05test2\x12\t10.0.2.16\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x02BI\nG\nE\bc\x12\x1102f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + +r.set("{e2Manager},RAN:test2", "\n\x05test2\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x03BI\nG\nE\bc\x12\x1103f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + +r.set("{e2Manager},PCI:test2:63", "\b\x02\x1aG\nE\bc\x12\x1102f829:0008ab0120*\x0702f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + +r.set("{e2Manager},NRCELL:02f829:0007ab0120", "\b\x02\x1aG\nE\bc\x12\x1102f829:0007ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + +r.sadd("{e2Manager},GNB","\n\x05test2\x12\x10\n\x0603f829\x12\x06001234") + +print("Insert successfully to Redis") + + + + diff --git a/Automation/Tests/Get-All-Nodes/flush.py b/Automation/Tests/Get-All-Nodes/flush.py new file mode 100644 index 0000000..8deba40 --- /dev/null +++ b/Automation/Tests/Get-All-Nodes/flush.py @@ -0,0 +1,7 @@ +import redis + +r = redis.Redis(host='localhost', port=6379, db=0) + +r.flushall() + +print("Flush Success") \ No newline at end of file diff --git a/Automation/Tests/Health/__init__.robot b/Automation/Tests/Health/__init__.robot new file mode 100644 index 0000000..233a921 --- /dev/null +++ b/Automation/Tests/Health/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation ORAN health check diff --git a/Automation/Tests/Health/get_health_check.robot b/Automation/Tests/Health/get_health_check.robot new file mode 100644 index 0000000..d6e41b3 --- /dev/null +++ b/Automation/Tests/Health/get_health_check.robot @@ -0,0 +1,21 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + +*** Test Cases *** +Get Health + GET /v1/health + Integer response status 200 + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 + + diff --git a/Automation/Tests/Resource/resource.robot b/Automation/Tests/Resource/resource.robot new file mode 100644 index 0000000..45d1ee8 --- /dev/null +++ b/Automation/Tests/Resource/resource.robot @@ -0,0 +1,10 @@ +*** Settings *** +Documentation Resource file + + +*** Variables *** +${url} http://localhost:3800 +${json} {"ranIp": "10.0.2.15","ranPort": 5577,"ranName":"test1"} +${header} {"Content-Type": "application/json"} +${run_script} /home/ubuntu/run.sh +${docker_command} docker ps | grep 1.0 | wc --lines diff --git a/Automation/Tests/Unhappy/Resource_not_found.robot b/Automation/Tests/Unhappy/Resource_not_found.robot new file mode 100644 index 0000000..e29a2bd --- /dev/null +++ b/Automation/Tests/Unhappy/Resource_not_found.robot @@ -0,0 +1,20 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + +*** Test Cases *** +Get Request node b gnb - resource not found 404 + GET /v1/nodeb/test5 + Integer response status 404 + Integer response body errorCode 404 + String response body errorMessage "Resource not found" + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 \ No newline at end of file diff --git a/Automation/Tests/Unhappy/Response400.robot b/Automation/Tests/Unhappy/Response400.robot new file mode 100644 index 0000000..b427375 --- /dev/null +++ b/Automation/Tests/Unhappy/Response400.robot @@ -0,0 +1,20 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + +*** Test Cases *** +Post Request setup node b endc-setup - 400 validation of fields + Set Headers ${header} + POST /v1/nodeb/endc-setup + Integer response status 400 + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 \ No newline at end of file diff --git a/Automation/Tests/Unhappy/Response500.robot b/Automation/Tests/Unhappy/Response500.robot new file mode 100644 index 0000000..144c4d7 --- /dev/null +++ b/Automation/Tests/Unhappy/Response500.robot @@ -0,0 +1,18 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + +*** Test Cases *** +Get Request node b gnb - DB down - 500 + Run docker stop redis + GET /v1/nodeb/test5 + Integer response status 500 + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 \ No newline at end of file diff --git a/Automation/Tests/Unhappy/Setup_failure.robot b/Automation/Tests/Unhappy/Setup_failure.robot new file mode 100644 index 0000000..24afb06 --- /dev/null +++ b/Automation/Tests/Unhappy/Setup_failure.robot @@ -0,0 +1,32 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + +*** Test Cases *** +Post Request setup node b x2-setup - setup failure + #${file}= Get Binary File ${PATH} + #${file}= Evaluate json.loads($file) json + Set Headers ${header} + POST /v1/nodeb/x2-setup ${json} + Sleep 1s + POST /v1/nodeb/x2-setup ${json} + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body connectionStatus CONNECTED_SETUP_FAILED + String response body failureType X2_SETUP_FAILURE + String response body setupFailure networkLayerCause HO_TARGET_NOT_ALLOWED + + + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 \ No newline at end of file diff --git a/Automation/Tests/Unhappy/log.html b/Automation/Tests/Unhappy/log.html new file mode 100644 index 0000000..fe754c7 --- /dev/null +++ b/Automation/Tests/Unhappy/log.html @@ -0,0 +1,2125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/Unhappy/output.xml b/Automation/Tests/Unhappy/output.xml new file mode 100644 index 0000000..6589bfa --- /dev/null +++ b/Automation/Tests/Unhappy/output.xml @@ -0,0 +1,155 @@ + + + + + +Runs the given command in the system and returns the RC and output. + +${run_script} + +Running command '/home/ubuntu/run.sh 2>&1'. + + + +Runs the given command in the system and returns the RC and output. + +${docker_command} + + +${result} + +Running command 'docker ps | grep snapshot | wc --lines 2>&1'. +${result} = (0, '4') + + + +Fails if objects are unequal after converting them to integers. + +${result[1]} +4 + + + + + + + + +settings + +*Sets new request headers or updates the existing.* + +${header} + + + + + +http + +*Sends a POST request to the endpoint.* + +/v1/nodeb/x2-setup +${json} + + + + +Pauses the test executed for the given time. + +1s + +Slept 1 second + + + + +http + +*Sends a POST request to the endpoint.* + +/v1/nodeb/x2-setup +${json} + + + + +Pauses the test executed for the given time. + +1s + +Slept 1 second + + + + +http + +*Sends a GET request to the endpoint.* + +/v1/nodeb/test1 + + + + + +assertions + +*Asserts the field as JSON integer.* + +response status +200 + + + + + +assertions + +*Asserts the field as JSON string.* + +response body connectionStatus +CONNECTED_SETUP_FAILED + + + + + +assertions + +*Asserts the field as JSON string.* + +response body failureType +X2_SETUP_FAILURE + + + + + +assertions + +*Asserts the field as JSON string.* + +response body setupFailure networkLayerCause +HO_TARGET_NOT_ALLOWED + + + + + + + + + +Critical Tests +All Tests + + + + +Setup failure + + + + + diff --git a/Automation/Tests/Unhappy/report.html b/Automation/Tests/Unhappy/report.html new file mode 100644 index 0000000..7ec8b7f --- /dev/null +++ b/Automation/Tests/Unhappy/report.html @@ -0,0 +1,2431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/Unhappy/router.txt b/Automation/Tests/Unhappy/router.txt new file mode 100644 index 0000000..3d0ee40 --- /dev/null +++ b/Automation/Tests/Unhappy/router.txt @@ -0,0 +1,10 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +newrt|end diff --git a/Automation/Tests/X2-Setup/X2-setup_1_send_request.robot b/Automation/Tests/X2-Setup/X2-setup_1_send_request.robot new file mode 100644 index 0000000..52338ff --- /dev/null +++ b/Automation/Tests/X2-Setup/X2-setup_1_send_request.robot @@ -0,0 +1,29 @@ +*** Settings *** +Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + + +*** Test Cases *** +Post Request setup node b x-2 + #${file}= Get Binary File ${PATH} + #${file}= Evaluate json.loads($file) json + Set Headers ${header} + POST /v1/nodeb/x2-setup ${json} + Integer response status 200 + + +*** Keywords *** +Start dockers + Run And Return Rc And Output ${run_script} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 + + + + + diff --git a/Automation/Tests/X2-Setup/X2-setup_2_get_nodeb_enb.robot b/Automation/Tests/X2-Setup/X2-setup_2_get_nodeb_enb.robot new file mode 100644 index 0000000..c2592d6 --- /dev/null +++ b/Automation/Tests/X2-Setup/X2-setup_2_get_nodeb_enb.robot @@ -0,0 +1,42 @@ +*** Settings *** +#Suite Setup Start dockers +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + + +*** Test Cases *** +Get Request node b enb + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body ip 10.0.2.15 + Integer response body port 5577 + String response body connectionStatus CONNECTED + String response body nodeType ENB + String response body enb enbType MACRO_ENB + Integer response body enb servedCells 0 pci 99 + String response body enb servedCells 0 cellId 02f829:0007ab00 + String response body enb servedCells 0 tac 0102 + String response body enb servedCells 0 broadcastPlmns 0 "02f829" + Integer response body enb servedCells 0 choiceEutraMode fdd ulearFcn 1 + Integer response body enb servedCells 0 choiceEutraMode fdd dlearFcn 1 + String response body enb servedCells 0 choiceEutraMode fdd ulTransmissionBandwidth BW50 + String response body enb servedCells 0 choiceEutraMode fdd dlTransmissionBandwidth BW50 + + + +*** Keywords *** +#Start dockers + #Run And Return Rc And Output ${run_script} + #${result}= Run And Return Rc And Output ${docker_command} + #Should Be Equal As Integers ${result[1]} 4 + + + + + diff --git a/Automation/Tests/X2-Setup/__init__.robot b/Automation/Tests/X2-Setup/__init__.robot new file mode 100644 index 0000000..f1f4548 --- /dev/null +++ b/Automation/Tests/X2-Setup/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation X2-Setup ENB diff --git a/Automation/Tests/log.html b/Automation/Tests/log.html new file mode 100644 index 0000000..3063985 --- /dev/null +++ b/Automation/Tests/log.html @@ -0,0 +1,2125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework log failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/output.xml b/Automation/Tests/output.xml new file mode 100644 index 0000000..458431f --- /dev/null +++ b/Automation/Tests/output.xml @@ -0,0 +1,79 @@ + + + + + + +Runs the given command in the system and returns the RC and output. + +${run_script} + +Running command '/home/ubuntu/run.sh 2>&1'. + + + +Runs the given command in the system and returns the RC and output. + +${docker_command} + + +${result} + +Running command 'docker ps | grep 1.0 | wc --lines 2>&1'. +${result} = (0, '4') + + + +Fails if objects are unequal after converting them to integers. + +${result[1]} +4 + + + + + + + + +http + +*Sends a GET request to the endpoint.* + +/v1/health + + + + + +assertions + +*Asserts the field as JSON integer.* + +response status +200 + + + + + + + +ORAN health check + + + + +Critical Tests +All Tests + + + + +Health +Health.Get Health Check + + + + + diff --git a/Automation/Tests/report.html b/Automation/Tests/report.html new file mode 100644 index 0000000..a3ebc5c --- /dev/null +++ b/Automation/Tests/report.html @@ -0,0 +1,2431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Opening Robot Framework report failed

+
    +
  • Verify that you have JavaScript enabled in your browser.
  • +
  • Make sure you are using a modern enough browser. If using Internet Explorer, version 8 or newer is required.
  • +
  • Check are there messages in your browser's JavaScript error log. Please report the problem if you suspect you have encountered a bug.
  • +
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Automation/Tests/router.txt b/Automation/Tests/router.txt new file mode 100644 index 0000000..0a643f9 --- /dev/null +++ b/Automation/Tests/router.txt @@ -0,0 +1,17 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 + +newrt|end diff --git a/Automation/run_tests.sh b/Automation/run_tests.sh new file mode 100644 index 0000000..704ebbb --- /dev/null +++ b/Automation/run_tests.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/Tests +robot . \ No newline at end of file diff --git a/E2Manager/Dockerfile b/E2Manager/Dockerfile new file mode 100644 index 0000000..ebebf89 --- /dev/null +++ b/E2Manager/Dockerfile @@ -0,0 +1,48 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed 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. +# +############################################################################## + +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:1-u16.04-nng1.1.1 as ubuntu + +WORKDIR /opt/E2Manager +COPY . . +ENV PATH=$PATH:/usr/local/go/bin:/usr/lib/go-1.12/bin +#RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/lib/rmr && cd rmr/; mkdir build; cd build; /opt/bin/cmake -DDEV_PKG=1 ..; make install +# Install RMr library and dev files +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/master/packages/debian/stretch/rmr_1.0.36_amd64.deb/download.deb +RUN dpkg -i rmr_1.0.36_amd64.deb +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/master/packages/debian/stretch/rmr-dev_1.0.36_amd64.deb/download.deb +RUN dpkg -i rmr-dev_1.0.36_amd64.deb + + +RUN cd asn1codec && make +RUN go build main/http_server.go + + + +FROM ubuntu:16.04 +COPY --from=ubuntu /opt/E2Manager/router.txt /opt/E2Manager/router.txt +COPY --from=ubuntu /opt/E2Manager/http_server /opt/E2Manager/http_server +COPY --from=ubuntu /opt/E2Manager/resources /opt/E2Manager/resources +COPY --from=ubuntu /usr/local/lib/librmr_nng.so.1 /usr/local/lib/librmr_nng.so.1 +COPY --from=ubuntu /usr/local/lib/libnng.so.1 /usr/local/lib/libnng.so.1 +WORKDIR /opt/E2Manager +ENV LD_LIBRARY_PATH=/usr/local/lib \ + port=3800 +ENV RMR_SEED_RT=router.txt +EXPOSE 3800 +CMD ["sh", "-c", "./http_server -port=$port"] diff --git a/E2Manager/asn1codec/.cproject b/E2Manager/asn1codec/.cproject new file mode 100644 index 0000000..e5866e4 --- /dev/null +++ b/E2Manager/asn1codec/.cproject @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/E2Manager/asn1codec/.project b/E2Manager/asn1codec/.project new file mode 100644 index 0000000..f8a49ae --- /dev/null +++ b/E2Manager/asn1codec/.project @@ -0,0 +1,27 @@ + + + asn1codec + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/E2Manager/asn1codec/Makefile b/E2Manager/asn1codec/Makefile new file mode 100644 index 0000000..b4229a7 --- /dev/null +++ b/E2Manager/asn1codec/Makefile @@ -0,0 +1,54 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed 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. +# +############################################################################## +CFLAGS=-Wall -Wpedantic -std=c11 -Og -I./inc -I./src -I./e2ap_engine -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -D_POSIX_C_SOURCE=200809L -ggdb +export CFLAGS +OBJDIR=lib +LIB=$(OBJDIR)/libe2ap_codec.a +LIBSRC=configuration_update_wrapper.c x2setup_request_wrapper.c asn1codec_utils.c +LIBOBJ=$(addprefix $(OBJDIR)/,$(LIBSRC:.c=.o)) +TESTX2SETUPREQUEST=tests/x2setup_request_wrapper_test +TESTCONFUPDATE=tests/configuration_update_wrapper_test + +.PHONY: all clean e2ap_engine + +all: $(LIB) $(TESTX2SETUPREQUEST) $(TESTCONFUPDATE) + + +e2ap_engine/libasncodec.a: + cd e2ap_engine/ && make -f converter-example.mk + +$(OBJDIR)/%.o: src/%.c e2ap_engine/*.h + mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c $< -o $@ + +$(LIB): e2ap_engine/libasncodec.a $(LIBOBJ) + $(AR) -crv $(LIB) $(LIBOBJ) + +$(TESTX2SETUPREQUEST): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +$(TESTCONFUPDATE): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +clean: + rm -rf $(OBJDIR) tests +clobber: + cd e2ap_engine/ && make -f converter-example.mk clean + rm -rf $(OBJDIR) tests diff --git a/E2Manager/asn1codec/e2ap_engine/ABS-Status.c b/E2Manager/asn1codec/e2ap_engine/ABS-Status.c new file mode 100644 index 0000000..eda26be --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABS-Status.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABS-Status.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ABS_Status_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status, dL_ABS_status), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_ABS_status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-ABS-status" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status, usableABSInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UsableABSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "usableABSInformation" + }, + { ATF_POINTER, 1, offsetof(struct ABS_Status, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P106, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABS_Status_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ABS_Status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABS_Status_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-ABS-status */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* usableABSInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_specs_1 = { + sizeof(struct ABS_Status), + offsetof(struct ABS_Status, _asn_ctx), + asn_MAP_ABS_Status_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ABS_Status_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABS_Status = { + "ABS-Status", + "ABS-Status", + &asn_OP_SEQUENCE, + asn_DEF_ABS_Status_tags_1, + sizeof(asn_DEF_ABS_Status_tags_1) + /sizeof(asn_DEF_ABS_Status_tags_1[0]), /* 1 */ + asn_DEF_ABS_Status_tags_1, /* Same as above */ + sizeof(asn_DEF_ABS_Status_tags_1) + /sizeof(asn_DEF_ABS_Status_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABS_Status_1, + 3, /* Elements count */ + &asn_SPC_ABS_Status_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ABS-Status.h b/E2Manager/asn1codec/e2ap_engine/ABS-Status.h new file mode 100644 index 0000000..fa3a0dc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABS-Status.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABS_Status_H_ +#define _ABS_Status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DL-ABS-status.h" +#include "UsableABSInformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABS-Status */ +typedef struct ABS_Status { + DL_ABS_status_t dL_ABS_status; + UsableABSInformation_t usableABSInformation; + 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; +} ABS_Status_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ABS_Status; +extern asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_specs_1; +extern asn_TYPE_member_t asn_MBR_ABS_Status_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABS_Status_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformation.c b/E2Manager/asn1codec/e2ap_engine/ABSInformation.c new file mode 100644 index 0000000..5707195 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformation.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformation.h" + +#include "ABSInformationFDD.h" +#include "ABSInformationTDD.h" +asn_per_constraints_t asn_PER_type_ABSInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ABSInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct ABSInformation, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ABSInformationFDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct ABSInformation, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ABSInformationTDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformation, choice.abs_inactive), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "abs-inactive" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tdd */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* abs-inactive */ +}; +asn_CHOICE_specifics_t asn_SPC_ABSInformation_specs_1 = { + sizeof(struct ABSInformation), + offsetof(struct ABSInformation, _asn_ctx), + offsetof(struct ABSInformation, present), + sizeof(((struct ABSInformation *)0)->present), + asn_MAP_ABSInformation_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformation = { + "ABSInformation", + "ABSInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ABSInformation_constr_1, CHOICE_constraint }, + asn_MBR_ABSInformation_1, + 3, /* Elements count */ + &asn_SPC_ABSInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformation.h b/E2Manager/asn1codec/e2ap_engine/ABSInformation.h new file mode 100644 index 0000000..af68b8e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformation.h @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformation_H_ +#define _ABSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformation_PR { + ABSInformation_PR_NOTHING, /* No components present */ + ABSInformation_PR_fdd, + ABSInformation_PR_tdd, + ABSInformation_PR_abs_inactive + /* Extensions may appear below */ + +} ABSInformation_PR; + +/* Forward declarations */ +struct ABSInformationFDD; +struct ABSInformationTDD; + +/* ABSInformation */ +typedef struct ABSInformation { + ABSInformation_PR present; + union ABSInformation_u { + struct ABSInformationFDD *fdd; + struct ABSInformationTDD *tdd; + NULL_t abs_inactive; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformation; +extern asn_CHOICE_specifics_t asn_SPC_ABSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformation_1[3]; +extern asn_per_constraints_t asn_PER_type_ABSInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.c b/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.c new file mode 100644 index 0000000..1d36d63 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.c @@ -0,0 +1,224 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformationFDD.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* 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_measurement_subset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* 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_type_numberOfCellSpecificAntennaPorts_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_measurement_subset_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3, /* 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_numberOfCellSpecificAntennaPorts_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationFDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_abs_pattern_info_constr_2, memb_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "abs-pattern-info" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, measurement_subset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_measurement_subset_constr_8, memb_measurement_subset_constraint_1 }, + 0, 0, /* No default value */ + "measurement-subset" + }, + { ATF_POINTER, 1, offsetof(struct ABSInformationFDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P104, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABSInformationFDD_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ABSInformationFDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationFDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measurement-subset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_specs_1 = { + sizeof(struct ABSInformationFDD), + offsetof(struct ABSInformationFDD, _asn_ctx), + asn_MAP_ABSInformationFDD_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ABSInformationFDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD = { + "ABSInformationFDD", + "ABSInformationFDD", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationFDD_tags_1, + sizeof(asn_DEF_ABSInformationFDD_tags_1) + /sizeof(asn_DEF_ABSInformationFDD_tags_1[0]), /* 1 */ + asn_DEF_ABSInformationFDD_tags_1, /* Same as above */ + sizeof(asn_DEF_ABSInformationFDD_tags_1) + /sizeof(asn_DEF_ABSInformationFDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationFDD_1, + 4, /* Elements count */ + &asn_SPC_ABSInformationFDD_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.h b/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.h new file mode 100644 index 0000000..de58a3e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformationFDD.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformationFDD_H_ +#define _ABSInformationFDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformationFDD__numberOfCellSpecificAntennaPorts { + ABSInformationFDD__numberOfCellSpecificAntennaPorts_one = 0, + ABSInformationFDD__numberOfCellSpecificAntennaPorts_two = 1, + ABSInformationFDD__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_ABSInformationFDD__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABSInformationFDD */ +typedef struct ABSInformationFDD { + BIT_STRING_t abs_pattern_info; + long numberOfCellSpecificAntennaPorts; + BIT_STRING_t measurement_subset; + 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; +} ABSInformationFDD_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformationFDD_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformationFDD_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.c b/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.c new file mode 100644 index 0000000..abf863b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.c @@ -0,0 +1,224 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformationTDD.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* 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_measurement_subset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* 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_type_numberOfCellSpecificAntennaPorts_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_measurement_subset_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3, /* 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_numberOfCellSpecificAntennaPorts_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationTDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_abs_pattern_info_constr_2, memb_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "abs-pattern-info" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, measurement_subset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_measurement_subset_constr_8, memb_measurement_subset_constraint_1 }, + 0, 0, /* No default value */ + "measurement-subset" + }, + { ATF_POINTER, 1, offsetof(struct ABSInformationTDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P105, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABSInformationTDD_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ABSInformationTDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationTDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measurement-subset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_specs_1 = { + sizeof(struct ABSInformationTDD), + offsetof(struct ABSInformationTDD, _asn_ctx), + asn_MAP_ABSInformationTDD_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ABSInformationTDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD = { + "ABSInformationTDD", + "ABSInformationTDD", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationTDD_tags_1, + sizeof(asn_DEF_ABSInformationTDD_tags_1) + /sizeof(asn_DEF_ABSInformationTDD_tags_1[0]), /* 1 */ + asn_DEF_ABSInformationTDD_tags_1, /* Same as above */ + sizeof(asn_DEF_ABSInformationTDD_tags_1) + /sizeof(asn_DEF_ABSInformationTDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationTDD_1, + 4, /* Elements count */ + &asn_SPC_ABSInformationTDD_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.h b/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.h new file mode 100644 index 0000000..2ce6d17 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ABSInformationTDD.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformationTDD_H_ +#define _ABSInformationTDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformationTDD__numberOfCellSpecificAntennaPorts { + ABSInformationTDD__numberOfCellSpecificAntennaPorts_one = 0, + ABSInformationTDD__numberOfCellSpecificAntennaPorts_two = 1, + ABSInformationTDD__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_ABSInformationTDD__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABSInformationTDD */ +typedef struct ABSInformationTDD { + BIT_STRING_t abs_pattern_info; + long numberOfCellSpecificAntennaPorts; + BIT_STRING_t measurement_subset; + 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; +} ABSInformationTDD_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformationTDD_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformationTDD_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ANY.c b/E2Manager/asn1codec/e2ap_engine/ANY.c new file mode 100644 index 0000000..6e327db --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ANY.c @@ -0,0 +1,451 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, + OCTET_STRING_print, + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + 0, + 0, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + ANY_decode_uper, + ANY_encode_uper, + ANY_decode_aper, + ANY_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { 0, 0, asn_generic_no_constraint }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key); + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + diff --git a/E2Manager/asn1codec/e2ap_engine/ANY.h b/E2Manager/asn1codec/e2ap_engine/ANY.h new file mode 100644 index 0000000..ba17b91 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ANY.h @@ -0,0 +1,66 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +asn_struct_free_f ANY_free; +asn_struct_print_f ANY_print; +ber_type_decoder_f ANY_decode_ber; +der_type_encoder_f ANY_encode_der; +xer_type_encoder_f ANY_encode_xer; +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; + +#define ANY_free OCTET_STRING_free +#define ANY_print OCTET_STRING_print +#define ANY_compare OCTET_STRING_compare +#define ANY_constraint asn_generic_no_constraint +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#define ANY_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.c b/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.c new file mode 100644 index 0000000..a8fc26a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AS-SecurityInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AS_SecurityInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation, key_eNodeB_star), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Key_eNodeB_Star, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "key-eNodeB-star" + }, + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation, nextHopChainingCount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NextHopChainingCount, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nextHopChainingCount" + }, + { ATF_POINTER, 1, offsetof(struct AS_SecurityInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P110, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AS_SecurityInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_AS_SecurityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AS_SecurityInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* key-eNodeB-star */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nextHopChainingCount */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_specs_1 = { + sizeof(struct AS_SecurityInformation), + offsetof(struct AS_SecurityInformation, _asn_ctx), + asn_MAP_AS_SecurityInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_AS_SecurityInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation = { + "AS-SecurityInformation", + "AS-SecurityInformation", + &asn_OP_SEQUENCE, + asn_DEF_AS_SecurityInformation_tags_1, + sizeof(asn_DEF_AS_SecurityInformation_tags_1) + /sizeof(asn_DEF_AS_SecurityInformation_tags_1[0]), /* 1 */ + asn_DEF_AS_SecurityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_AS_SecurityInformation_tags_1) + /sizeof(asn_DEF_AS_SecurityInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AS_SecurityInformation_1, + 3, /* Elements count */ + &asn_SPC_AS_SecurityInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.h b/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.h new file mode 100644 index 0000000..d4ef108 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AS-SecurityInformation.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AS_SecurityInformation_H_ +#define _AS_SecurityInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Key-eNodeB-Star.h" +#include "NextHopChainingCount.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AS-SecurityInformation */ +typedef struct AS_SecurityInformation { + Key_eNodeB_Star_t key_eNodeB_star; + NextHopChainingCount_t nextHopChainingCount; + 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; +} AS_SecurityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_AS_SecurityInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AS_SecurityInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.c b/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.c new file mode 100644 index 0000000..9de90c9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-ID.h" + +int +ActionParameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ActionParameter_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ActionParameter_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_ID = { + "ActionParameter-ID", + "ActionParameter-ID", + &asn_OP_NativeInteger, + asn_DEF_ActionParameter_ID_tags_1, + sizeof(asn_DEF_ActionParameter_ID_tags_1) + /sizeof(asn_DEF_ActionParameter_ID_tags_1[0]), /* 1 */ + asn_DEF_ActionParameter_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionParameter_ID_tags_1) + /sizeof(asn_DEF_ActionParameter_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActionParameter_ID_constr_1, ActionParameter_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.h b/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.h new file mode 100644 index 0000000..6e724e3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_ID_H_ +#define _ActionParameter_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionParameter-ID */ +typedef long ActionParameter_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ActionParameter_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_ID; +asn_struct_free_f ActionParameter_ID_free; +asn_struct_print_f ActionParameter_ID_print; +asn_constr_check_f ActionParameter_ID_constraint; +ber_type_decoder_f ActionParameter_ID_decode_ber; +der_type_encoder_f ActionParameter_ID_encode_der; +xer_type_decoder_f ActionParameter_ID_decode_xer; +xer_type_encoder_f ActionParameter_ID_encode_xer; +per_type_decoder_f ActionParameter_ID_decode_uper; +per_type_encoder_f ActionParameter_ID_encode_uper; +per_type_decoder_f ActionParameter_ID_decode_aper; +per_type_encoder_f ActionParameter_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.c b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.c new file mode 100644 index 0000000..ae100a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-Item.h" + +asn_TYPE_member_t asn_MBR_ActionParameter_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Item, actionParameter_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ActionParameter_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionParameter-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Item, actionParameter_Value), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ActionParameter_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionParameter-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActionParameter_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionParameter_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionParameter-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActionParameter_Item_specs_1 = { + sizeof(struct ActionParameter_Item), + offsetof(struct ActionParameter_Item, _asn_ctx), + asn_MAP_ActionParameter_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_Item = { + "ActionParameter-Item", + "ActionParameter-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActionParameter_Item_tags_1, + sizeof(asn_DEF_ActionParameter_Item_tags_1) + /sizeof(asn_DEF_ActionParameter_Item_tags_1[0]), /* 1 */ + asn_DEF_ActionParameter_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionParameter_Item_tags_1) + /sizeof(asn_DEF_ActionParameter_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActionParameter_Item_1, + 2, /* Elements count */ + &asn_SPC_ActionParameter_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.h b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.h new file mode 100644 index 0000000..83a099d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Item.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_Item_H_ +#define _ActionParameter_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ActionParameter-ID.h" +#include "ActionParameter-Value.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionParameter-Item */ +typedef struct ActionParameter_Item { + ActionParameter_ID_t actionParameter_ID; + ActionParameter_Value_t actionParameter_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionParameter_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActionParameter_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActionParameter_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.c b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.c new file mode 100644 index 0000000..a280ecb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.c @@ -0,0 +1,121 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-Value.h" + +asn_per_constraints_t asn_PER_type_ActionParameter_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ActionParameter_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueOctS" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valuePrtS), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valuePrtS" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionParameter_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ +}; +asn_CHOICE_specifics_t asn_SPC_ActionParameter_Value_specs_1 = { + sizeof(struct ActionParameter_Value), + offsetof(struct ActionParameter_Value, _asn_ctx), + offsetof(struct ActionParameter_Value, present), + sizeof(((struct ActionParameter_Value *)0)->present), + asn_MAP_ActionParameter_Value_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_Value = { + "ActionParameter-Value", + "ActionParameter-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ActionParameter_Value_constr_1, CHOICE_constraint }, + asn_MBR_ActionParameter_Value_1, + 6, /* Elements count */ + &asn_SPC_ActionParameter_Value_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.h b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.h new file mode 100644 index 0000000..77bc69c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActionParameter-Value.h @@ -0,0 +1,89 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_Value_H_ +#define _ActionParameter_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "PrintableString.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ActionParameter_Value_PR { + ActionParameter_Value_PR_NOTHING, /* No components present */ + ActionParameter_Value_PR_valueInt, + ActionParameter_Value_PR_valueEnum, + ActionParameter_Value_PR_valueBool, + ActionParameter_Value_PR_valueBitS, + ActionParameter_Value_PR_valueOctS, + ActionParameter_Value_PR_valuePrtS + /* Extensions may appear below */ + +} ActionParameter_Value_PR; + +/* ActionParameter-Value */ +typedef struct ActionParameter_Value { + ActionParameter_Value_PR present; + union ActionParameter_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + PrintableString_t valuePrtS; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionParameter_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_Value; +extern asn_CHOICE_specifics_t asn_SPC_ActionParameter_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_ActionParameter_Value_1[6]; +extern asn_per_constraints_t asn_PER_type_ActionParameter_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_Value_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.c b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.c new file mode 100644 index 0000000..0c9222f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedCellList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item, ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecgi" + }, + { ATF_POINTER, 1, offsetof(struct ActivatedCellList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ActivatedCellList_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedCellList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_specs_1 = { + sizeof(struct ActivatedCellList_Item), + offsetof(struct ActivatedCellList_Item, _asn_ctx), + asn_MAP_ActivatedCellList_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ActivatedCellList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item = { + "ActivatedCellList-Item", + "ActivatedCellList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedCellList_Item_tags_1, + sizeof(asn_DEF_ActivatedCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedCellList_Item_tags_1[0]), /* 1 */ + asn_DEF_ActivatedCellList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedCellList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedCellList_Item_1, + 2, /* Elements count */ + &asn_SPC_ActivatedCellList_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.h b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.h new file mode 100644 index 0000000..97d0c47 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedCellList_Item_H_ +#define _ActivatedCellList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ActivatedCellList-Item */ +typedef struct ActivatedCellList_Item { + ECGI_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; +} ActivatedCellList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedCellList_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.c b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.c new file mode 100644 index 0000000..56a76ca --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedCellList.h" + +#include "ActivatedCellList-Item.h" +static asn_per_constraints_t asn_PER_type_ActivatedCellList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ActivatedCellList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ActivatedCellList_specs_1 = { + sizeof(struct ActivatedCellList), + offsetof(struct ActivatedCellList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList = { + "ActivatedCellList", + "ActivatedCellList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ActivatedCellList_tags_1, + sizeof(asn_DEF_ActivatedCellList_tags_1) + /sizeof(asn_DEF_ActivatedCellList_tags_1[0]), /* 1 */ + asn_DEF_ActivatedCellList_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_tags_1) + /sizeof(asn_DEF_ActivatedCellList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivatedCellList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ActivatedCellList_1, + 1, /* Single element */ + &asn_SPC_ActivatedCellList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.h b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.h new file mode 100644 index 0000000..ff042cd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedCellList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedCellList_H_ +#define _ActivatedCellList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActivatedCellList_Item; + +/* ActivatedCellList */ +typedef struct ActivatedCellList { + A_SEQUENCE_OF(struct ActivatedCellList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedCellList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedCellList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c new file mode 100644 index 0000000..d641be3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedNRCellList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct ActivatedNRCellList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P102, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ActivatedNRCellList_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedNRCellList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_specs_1 = { + sizeof(struct ActivatedNRCellList_Item), + offsetof(struct ActivatedNRCellList_Item, _asn_ctx), + asn_MAP_ActivatedNRCellList_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ActivatedNRCellList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item = { + "ActivatedNRCellList-Item", + "ActivatedNRCellList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedNRCellList_Item_tags_1, + sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedNRCellList_Item_1, + 2, /* Elements count */ + &asn_SPC_ActivatedNRCellList_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h new file mode 100644 index 0000000..0a60dfa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedNRCellList_Item_H_ +#define _ActivatedNRCellList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ActivatedNRCellList-Item */ +typedef struct ActivatedNRCellList_Item { + NRCGI_t nrCellID; + 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; +} ActivatedNRCellList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedNRCellList_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.c b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.c new file mode 100644 index 0000000..20f220e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedNRCellList.h" + +#include "ActivatedNRCellList-Item.h" +static asn_per_constraints_t asn_PER_type_ActivatedNRCellList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ActivatedNRCellList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ActivatedNRCellList_specs_1 = { + sizeof(struct ActivatedNRCellList), + offsetof(struct ActivatedNRCellList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList = { + "ActivatedNRCellList", + "ActivatedNRCellList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ActivatedNRCellList_tags_1, + sizeof(asn_DEF_ActivatedNRCellList_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_tags_1[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivatedNRCellList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ActivatedNRCellList_1, + 1, /* Single element */ + &asn_SPC_ActivatedNRCellList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.h b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.h new file mode 100644 index 0000000..a890163 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivatedNRCellList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedNRCellList_H_ +#define _ActivatedNRCellList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActivatedNRCellList_Item; + +/* ActivatedNRCellList */ +typedef struct ActivatedNRCellList { + A_SEQUENCE_OF(struct ActivatedNRCellList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedNRCellList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedNRCellList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ActivationID.c b/E2Manager/asn1codec/e2ap_engine/ActivationID.c new file mode 100644 index 0000000..42a016d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivationID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivationID.h" + +int +ActivationID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ActivationID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ActivationID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ActivationID = { + "ActivationID", + "ActivationID", + &asn_OP_NativeInteger, + asn_DEF_ActivationID_tags_1, + sizeof(asn_DEF_ActivationID_tags_1) + /sizeof(asn_DEF_ActivationID_tags_1[0]), /* 1 */ + asn_DEF_ActivationID_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivationID_tags_1) + /sizeof(asn_DEF_ActivationID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivationID_constr_1, ActivationID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ActivationID.h b/E2Manager/asn1codec/e2ap_engine/ActivationID.h new file mode 100644 index 0000000..cec8ca4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ActivationID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivationID_H_ +#define _ActivationID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActivationID */ +typedef long ActivationID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ActivationID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ActivationID; +asn_struct_free_f ActivationID_free; +asn_struct_print_f ActivationID_print; +asn_constr_check_f ActivationID_constraint; +ber_type_decoder_f ActivationID_decode_ber; +der_type_encoder_f ActivationID_encode_der; +xer_type_decoder_f ActivationID_decode_xer; +xer_type_encoder_f ActivationID_encode_xer; +per_type_decoder_f ActivationID_decode_uper; +per_type_encoder_f ActivationID_encode_uper; +per_type_decoder_f ActivationID_decode_aper; +per_type_encoder_f ActivationID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivationID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c new file mode 100644 index 0000000..ac76ce1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, additionalspecialSubframePatterns), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdditionalSpecialSubframePatterns, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "additionalspecialSubframePatterns" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct AdditionalSpecialSubframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P107, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AdditionalSpecialSubframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalspecialSubframePatterns */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_specs_1 = { + sizeof(struct AdditionalSpecialSubframe_Info), + offsetof(struct AdditionalSpecialSubframe_Info, _asn_ctx), + asn_MAP_AdditionalSpecialSubframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AdditionalSpecialSubframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info = { + "AdditionalSpecialSubframe-Info", + "AdditionalSpecialSubframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframe_Info_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframe_Info_1, + 4, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h new file mode 100644 index 0000000..6b5f3fe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframe_Info_H_ +#define _AdditionalSpecialSubframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AdditionalSpecialSubframePatterns.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AdditionalSpecialSubframe-Info */ +typedef struct AdditionalSpecialSubframe_Info { + AdditionalSpecialSubframePatterns_t additionalspecialSubframePatterns; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + 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; +} AdditionalSpecialSubframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframe_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c new file mode 100644 index 0000000..925c8b7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframeExtension-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, additionalspecialSubframePatternsExtension), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdditionalSpecialSubframePatternsExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "additionalspecialSubframePatternsExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct AdditionalSpecialSubframeExtension_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P108, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AdditionalSpecialSubframeExtension_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframeExtension_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalspecialSubframePatternsExtension */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info), + offsetof(struct AdditionalSpecialSubframeExtension_Info, _asn_ctx), + asn_MAP_AdditionalSpecialSubframeExtension_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AdditionalSpecialSubframeExtension_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info = { + "AdditionalSpecialSubframeExtension-Info", + "AdditionalSpecialSubframeExtension-Info", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframeExtension_Info_1, + 4, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h new file mode 100644 index 0000000..a71b052 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframeExtension_Info_H_ +#define _AdditionalSpecialSubframeExtension_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AdditionalSpecialSubframePatternsExtension.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AdditionalSpecialSubframeExtension-Info */ +typedef struct AdditionalSpecialSubframeExtension_Info { + AdditionalSpecialSubframePatternsExtension_t additionalspecialSubframePatternsExtension; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + 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; +} AdditionalSpecialSubframeExtension_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframeExtension_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c new file mode 100644 index 0000000..f25190b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c @@ -0,0 +1,90 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframePatterns.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatterns_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AdditionalSpecialSubframePatterns_value2enum_1[] = { + { 0, 4, "ssp0" }, + { 1, 4, "ssp1" }, + { 2, 4, "ssp2" }, + { 3, 4, "ssp3" }, + { 4, 4, "ssp4" }, + { 5, 4, "ssp5" }, + { 6, 4, "ssp6" }, + { 7, 4, "ssp7" }, + { 8, 4, "ssp8" }, + { 9, 4, "ssp9" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AdditionalSpecialSubframePatterns_enum2value_1[] = { + 0, /* ssp0(0) */ + 1, /* ssp1(1) */ + 2, /* ssp2(2) */ + 3, /* ssp3(3) */ + 4, /* ssp4(4) */ + 5, /* ssp5(5) */ + 6, /* ssp6(6) */ + 7, /* ssp7(7) */ + 8, /* ssp8(8) */ + 9 /* ssp9(9) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatterns_specs_1 = { + asn_MAP_AdditionalSpecialSubframePatterns_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AdditionalSpecialSubframePatterns_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 11, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframePatterns_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatterns = { + "AdditionalSpecialSubframePatterns", + "AdditionalSpecialSubframePatterns", + &asn_OP_NativeEnumerated, + asn_DEF_AdditionalSpecialSubframePatterns_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframePatterns_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AdditionalSpecialSubframePatterns_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AdditionalSpecialSubframePatterns_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h new file mode 100644 index 0000000..321305a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframePatterns_H_ +#define _AdditionalSpecialSubframePatterns_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdditionalSpecialSubframePatterns { + AdditionalSpecialSubframePatterns_ssp0 = 0, + AdditionalSpecialSubframePatterns_ssp1 = 1, + AdditionalSpecialSubframePatterns_ssp2 = 2, + AdditionalSpecialSubframePatterns_ssp3 = 3, + AdditionalSpecialSubframePatterns_ssp4 = 4, + AdditionalSpecialSubframePatterns_ssp5 = 5, + AdditionalSpecialSubframePatterns_ssp6 = 6, + AdditionalSpecialSubframePatterns_ssp7 = 7, + AdditionalSpecialSubframePatterns_ssp8 = 8, + AdditionalSpecialSubframePatterns_ssp9 = 9 + /* + * Enumeration is extensible + */ +} e_AdditionalSpecialSubframePatterns; + +/* AdditionalSpecialSubframePatterns */ +typedef long AdditionalSpecialSubframePatterns_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatterns_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatterns; +extern const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatterns_specs_1; +asn_struct_free_f AdditionalSpecialSubframePatterns_free; +asn_struct_print_f AdditionalSpecialSubframePatterns_print; +asn_constr_check_f AdditionalSpecialSubframePatterns_constraint; +ber_type_decoder_f AdditionalSpecialSubframePatterns_decode_ber; +der_type_encoder_f AdditionalSpecialSubframePatterns_encode_der; +xer_type_decoder_f AdditionalSpecialSubframePatterns_decode_xer; +xer_type_encoder_f AdditionalSpecialSubframePatterns_encode_xer; +per_type_decoder_f AdditionalSpecialSubframePatterns_decode_uper; +per_type_encoder_f AdditionalSpecialSubframePatterns_encode_uper; +per_type_decoder_f AdditionalSpecialSubframePatterns_decode_aper; +per_type_encoder_f AdditionalSpecialSubframePatterns_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframePatterns_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c new file mode 100644 index 0000000..973a0f3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframePatternsExtension.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AdditionalSpecialSubframePatternsExtension_value2enum_1[] = { + { 0, 5, "ssp10" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AdditionalSpecialSubframePatternsExtension_enum2value_1[] = { + 0 /* ssp10(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1 = { + asn_MAP_AdditionalSpecialSubframePatternsExtension_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AdditionalSpecialSubframePatternsExtension_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_AdditionalSpecialSubframePatternsExtension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatternsExtension = { + "AdditionalSpecialSubframePatternsExtension", + "AdditionalSpecialSubframePatternsExtension", + &asn_OP_NativeEnumerated, + asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h new file mode 100644 index 0000000..61ba1d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframePatternsExtension_H_ +#define _AdditionalSpecialSubframePatternsExtension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdditionalSpecialSubframePatternsExtension { + AdditionalSpecialSubframePatternsExtension_ssp10 = 0 + /* + * Enumeration is extensible + */ +} e_AdditionalSpecialSubframePatternsExtension; + +/* AdditionalSpecialSubframePatternsExtension */ +typedef long AdditionalSpecialSubframePatternsExtension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatternsExtension; +extern const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1; +asn_struct_free_f AdditionalSpecialSubframePatternsExtension_free; +asn_struct_print_f AdditionalSpecialSubframePatternsExtension_print; +asn_constr_check_f AdditionalSpecialSubframePatternsExtension_constraint; +ber_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_ber; +der_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_der; +xer_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_xer; +xer_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_xer; +per_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_uper; +per_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_uper; +per_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_aper; +per_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframePatternsExtension_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c b/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c new file mode 100644 index 0000000..1397dee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AerialUEsubscriptionInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AerialUEsubscriptionInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AerialUEsubscriptionInformation_value2enum_1[] = { + { 0, 7, "allowed" }, + { 1, 11, "not-allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AerialUEsubscriptionInformation_enum2value_1[] = { + 0, /* allowed(0) */ + 1 /* not-allowed(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AerialUEsubscriptionInformation_specs_1 = { + asn_MAP_AerialUEsubscriptionInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AerialUEsubscriptionInformation_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_AerialUEsubscriptionInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AerialUEsubscriptionInformation = { + "AerialUEsubscriptionInformation", + "AerialUEsubscriptionInformation", + &asn_OP_NativeEnumerated, + asn_DEF_AerialUEsubscriptionInformation_tags_1, + sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1) + /sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1[0]), /* 1 */ + asn_DEF_AerialUEsubscriptionInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1) + /sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AerialUEsubscriptionInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AerialUEsubscriptionInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h b/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h new file mode 100644 index 0000000..99aaeca --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AerialUEsubscriptionInformation_H_ +#define _AerialUEsubscriptionInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AerialUEsubscriptionInformation { + AerialUEsubscriptionInformation_allowed = 0, + AerialUEsubscriptionInformation_not_allowed = 1 + /* + * Enumeration is extensible + */ +} e_AerialUEsubscriptionInformation; + +/* AerialUEsubscriptionInformation */ +typedef long AerialUEsubscriptionInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AerialUEsubscriptionInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AerialUEsubscriptionInformation; +extern const asn_INTEGER_specifics_t asn_SPC_AerialUEsubscriptionInformation_specs_1; +asn_struct_free_f AerialUEsubscriptionInformation_free; +asn_struct_print_f AerialUEsubscriptionInformation_print; +asn_constr_check_f AerialUEsubscriptionInformation_constraint; +ber_type_decoder_f AerialUEsubscriptionInformation_decode_ber; +der_type_encoder_f AerialUEsubscriptionInformation_encode_der; +xer_type_decoder_f AerialUEsubscriptionInformation_decode_xer; +xer_type_encoder_f AerialUEsubscriptionInformation_encode_xer; +per_type_decoder_f AerialUEsubscriptionInformation_decode_uper; +per_type_encoder_f AerialUEsubscriptionInformation_encode_uper; +per_type_decoder_f AerialUEsubscriptionInformation_decode_aper; +per_type_encoder_f AerialUEsubscriptionInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AerialUEsubscriptionInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c b/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c new file mode 100644 index 0000000..157a75e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AllocationAndRetentionPriority.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, priorityLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PriorityLevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "priorityLevel" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, pre_emptionCapability), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Pre_emptionCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, pre_emptionVulnerability), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Pre_emptionVulnerability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionVulnerability" + }, + { ATF_POINTER, 1, offsetof(struct AllocationAndRetentionPriority, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P109, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AllocationAndRetentionPriority_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AllocationAndRetentionPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AllocationAndRetentionPriority_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* priorityLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pre-emptionCapability */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pre-emptionVulnerability */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_specs_1 = { + sizeof(struct AllocationAndRetentionPriority), + offsetof(struct AllocationAndRetentionPriority, _asn_ctx), + asn_MAP_AllocationAndRetentionPriority_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AllocationAndRetentionPriority_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority = { + "AllocationAndRetentionPriority", + "AllocationAndRetentionPriority", + &asn_OP_SEQUENCE, + asn_DEF_AllocationAndRetentionPriority_tags_1, + sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + asn_DEF_AllocationAndRetentionPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AllocationAndRetentionPriority_1, + 4, /* Elements count */ + &asn_SPC_AllocationAndRetentionPriority_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h b/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h new file mode 100644 index 0000000..5fbba35 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AllocationAndRetentionPriority_H_ +#define _AllocationAndRetentionPriority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PriorityLevel.h" +#include "Pre-emptionCapability.h" +#include "Pre-emptionVulnerability.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AllocationAndRetentionPriority */ +typedef struct AllocationAndRetentionPriority { + PriorityLevel_t priorityLevel; + Pre_emptionCapability_t pre_emptionCapability; + 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; +} AllocationAndRetentionPriority_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority; +extern asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_specs_1; +extern asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AllocationAndRetentionPriority_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.c b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.c new file mode 100644 index 0000000..334711e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.c @@ -0,0 +1,104 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AreaScopeOfMDT.h" + +#include "CellBasedMDT.h" +#include "TABasedMDT.h" +#include "TAIBasedMDT.h" +asn_per_constraints_t asn_PER_type_AreaScopeOfMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_AreaScopeOfMDT_1[] = { + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TABasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tABased" + }, + { ATF_NOFLAGS, 0, offsetof(struct AreaScopeOfMDT, choice.pLMNWide), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNWide" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.tAIBased), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIBased" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_AreaScopeOfMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellBased */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tABased */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMNWide */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* tAIBased */ +}; +asn_CHOICE_specifics_t asn_SPC_AreaScopeOfMDT_specs_1 = { + sizeof(struct AreaScopeOfMDT), + offsetof(struct AreaScopeOfMDT, _asn_ctx), + offsetof(struct AreaScopeOfMDT, present), + sizeof(((struct AreaScopeOfMDT *)0)->present), + asn_MAP_AreaScopeOfMDT_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_AreaScopeOfMDT = { + "AreaScopeOfMDT", + "AreaScopeOfMDT", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_AreaScopeOfMDT_constr_1, CHOICE_constraint }, + asn_MBR_AreaScopeOfMDT_1, + 4, /* Elements count */ + &asn_SPC_AreaScopeOfMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.h b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.h new file mode 100644 index 0000000..3180f5f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfMDT.h @@ -0,0 +1,85 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AreaScopeOfMDT_H_ +#define _AreaScopeOfMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AreaScopeOfMDT_PR { + AreaScopeOfMDT_PR_NOTHING, /* No components present */ + AreaScopeOfMDT_PR_cellBased, + AreaScopeOfMDT_PR_tABased, + AreaScopeOfMDT_PR_pLMNWide, + /* Extensions may appear below */ + AreaScopeOfMDT_PR_tAIBased +} AreaScopeOfMDT_PR; + +/* Forward declarations */ +struct CellBasedMDT; +struct TABasedMDT; +struct TAIBasedMDT; + +/* AreaScopeOfMDT */ +typedef struct AreaScopeOfMDT { + AreaScopeOfMDT_PR present; + union AreaScopeOfMDT_u { + struct CellBasedMDT *cellBased; + struct TABasedMDT *tABased; + NULL_t pLMNWide; + /* + * This type is extensible, + * possible extensions are below. + */ + struct TAIBasedMDT *tAIBased; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AreaScopeOfMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AreaScopeOfMDT; +extern asn_CHOICE_specifics_t asn_SPC_AreaScopeOfMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_AreaScopeOfMDT_1[4]; +extern asn_per_constraints_t asn_PER_type_AreaScopeOfMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _AreaScopeOfMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.c b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.c new file mode 100644 index 0000000..c24ed92 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.c @@ -0,0 +1,105 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AreaScopeOfQMC.h" + +#include "CellBasedQMC.h" +#include "TABasedQMC.h" +#include "TAIBasedQMC.h" +#include "PLMNAreaBasedQMC.h" +asn_per_constraints_t asn_PER_type_AreaScopeOfQMC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_AreaScopeOfQMC_1[] = { + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TABasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tABased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.tAIBased), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.pLMNAreaBased), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNAreaBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNAreaBased" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_AreaScopeOfQMC_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 }, /* tAIBased */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pLMNAreaBased */ +}; +asn_CHOICE_specifics_t asn_SPC_AreaScopeOfQMC_specs_1 = { + sizeof(struct AreaScopeOfQMC), + offsetof(struct AreaScopeOfQMC, _asn_ctx), + offsetof(struct AreaScopeOfQMC, present), + sizeof(((struct AreaScopeOfQMC *)0)->present), + asn_MAP_AreaScopeOfQMC_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_AreaScopeOfQMC = { + "AreaScopeOfQMC", + "AreaScopeOfQMC", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_AreaScopeOfQMC_constr_1, CHOICE_constraint }, + asn_MBR_AreaScopeOfQMC_1, + 4, /* Elements count */ + &asn_SPC_AreaScopeOfQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.h b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.h new file mode 100644 index 0000000..84e35b1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/AreaScopeOfQMC.h @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AreaScopeOfQMC_H_ +#define _AreaScopeOfQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AreaScopeOfQMC_PR { + AreaScopeOfQMC_PR_NOTHING, /* No components present */ + AreaScopeOfQMC_PR_cellBased, + AreaScopeOfQMC_PR_tABased, + AreaScopeOfQMC_PR_tAIBased, + AreaScopeOfQMC_PR_pLMNAreaBased + /* Extensions may appear below */ + +} AreaScopeOfQMC_PR; + +/* Forward declarations */ +struct CellBasedQMC; +struct TABasedQMC; +struct TAIBasedQMC; +struct PLMNAreaBasedQMC; + +/* AreaScopeOfQMC */ +typedef struct AreaScopeOfQMC { + AreaScopeOfQMC_PR present; + union AreaScopeOfQMC_u { + struct CellBasedQMC *cellBased; + struct TABasedQMC *tABased; + struct TAIBasedQMC *tAIBased; + struct PLMNAreaBasedQMC *pLMNAreaBased; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AreaScopeOfQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AreaScopeOfQMC; +extern asn_CHOICE_specifics_t asn_SPC_AreaScopeOfQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_AreaScopeOfQMC_1[4]; +extern asn_per_constraints_t asn_PER_type_AreaScopeOfQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _AreaScopeOfQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BIT_STRING.c b/E2Manager/asn1codec/e2ap_engine/BIT_STRING.c new file mode 100644 index 0000000..7a9a68e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BIT_STRING.c @@ -0,0 +1,657 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/E2Manager/asn1codec/e2ap_engine/BIT_STRING.h b/E2Manager/asn1codec/e2ap_engine/BIT_STRING.h new file mode 100644 index 0000000..8488941 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BIT_STRING.h @@ -0,0 +1,49 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/BOOLEAN.c b/E2Manager/asn1codec/e2ap_engine/BOOLEAN.c new file mode 100644 index 0000000..ab72106 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BOOLEAN.c @@ -0,0 +1,493 @@ + +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, + BOOLEAN_print, + BOOLEAN_compare, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BOOLEAN_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} + + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") + != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 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); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +#ifndef ASN_DISABLE_OER_SUPPORT + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} + + + +#endif + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/E2Manager/asn1codec/e2ap_engine/BOOLEAN.h b/E2Manager/asn1codec/e2ap_engine/BOOLEAN.h new file mode 100644 index 0000000..00b50db --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BOOLEAN.h @@ -0,0 +1,46 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef int BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +asn_struct_compare_f BOOLEAN_compare; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +asn_random_fill_f BOOLEAN_random_fill; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/BandInfo.c b/E2Manager/asn1codec/e2ap_engine/BandInfo.c new file mode 100644 index 0000000..5e18350 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BandInfo.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BandInfo.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_BandInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BandInfo, freqBandIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FreqBandIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "freqBandIndicator" + }, + { ATF_POINTER, 1, offsetof(struct BandInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P169, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_BandInfo_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_BandInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BandInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BandInfo_specs_1 = { + sizeof(struct BandInfo), + offsetof(struct BandInfo, _asn_ctx), + asn_MAP_BandInfo_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_BandInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BandInfo = { + "BandInfo", + "BandInfo", + &asn_OP_SEQUENCE, + asn_DEF_BandInfo_tags_1, + sizeof(asn_DEF_BandInfo_tags_1) + /sizeof(asn_DEF_BandInfo_tags_1[0]), /* 1 */ + asn_DEF_BandInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_BandInfo_tags_1) + /sizeof(asn_DEF_BandInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BandInfo_1, + 2, /* Elements count */ + &asn_SPC_BandInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BandInfo.h b/E2Manager/asn1codec/e2ap_engine/BandInfo.h new file mode 100644 index 0000000..361d713 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BandInfo.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BandInfo_H_ +#define _BandInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "FreqBandIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* BandInfo */ +typedef struct BandInfo { + FreqBandIndicator_t freqBandIndicator; + 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; +} BandInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BandInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_BandInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_BandInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BandInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.c b/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.c new file mode 100644 index 0000000..dde36eb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BandwidthReducedSI.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BandwidthReducedSI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BandwidthReducedSI_value2enum_1[] = { + { 0, 9, "scheduled" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BandwidthReducedSI_enum2value_1[] = { + 0 /* scheduled(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BandwidthReducedSI_specs_1 = { + asn_MAP_BandwidthReducedSI_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BandwidthReducedSI_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_BandwidthReducedSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BandwidthReducedSI = { + "BandwidthReducedSI", + "BandwidthReducedSI", + &asn_OP_NativeEnumerated, + asn_DEF_BandwidthReducedSI_tags_1, + sizeof(asn_DEF_BandwidthReducedSI_tags_1) + /sizeof(asn_DEF_BandwidthReducedSI_tags_1[0]), /* 1 */ + asn_DEF_BandwidthReducedSI_tags_1, /* Same as above */ + sizeof(asn_DEF_BandwidthReducedSI_tags_1) + /sizeof(asn_DEF_BandwidthReducedSI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BandwidthReducedSI_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BandwidthReducedSI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.h b/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.h new file mode 100644 index 0000000..65785da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BandwidthReducedSI.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BandwidthReducedSI_H_ +#define _BandwidthReducedSI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BandwidthReducedSI { + BandwidthReducedSI_scheduled = 0 + /* + * Enumeration is extensible + */ +} e_BandwidthReducedSI; + +/* BandwidthReducedSI */ +typedef long BandwidthReducedSI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BandwidthReducedSI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BandwidthReducedSI; +extern const asn_INTEGER_specifics_t asn_SPC_BandwidthReducedSI_specs_1; +asn_struct_free_f BandwidthReducedSI_free; +asn_struct_print_f BandwidthReducedSI_print; +asn_constr_check_f BandwidthReducedSI_constraint; +ber_type_decoder_f BandwidthReducedSI_decode_ber; +der_type_encoder_f BandwidthReducedSI_encode_der; +xer_type_decoder_f BandwidthReducedSI_decode_xer; +xer_type_encoder_f BandwidthReducedSI_encode_xer; +per_type_decoder_f BandwidthReducedSI_decode_uper; +per_type_encoder_f BandwidthReducedSI_encode_uper; +per_type_decoder_f BandwidthReducedSI_decode_aper; +per_type_encoder_f BandwidthReducedSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BandwidthReducedSI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BearerType.c b/E2Manager/asn1codec/e2ap_engine/BearerType.c new file mode 100644 index 0000000..e4530bb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BearerType.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BearerType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BearerType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BearerType_value2enum_1[] = { + { 0, 6, "non-IP" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BearerType_enum2value_1[] = { + 0 /* non-IP(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BearerType_specs_1 = { + asn_MAP_BearerType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BearerType_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BearerType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BearerType = { + "BearerType", + "BearerType", + &asn_OP_NativeEnumerated, + asn_DEF_BearerType_tags_1, + sizeof(asn_DEF_BearerType_tags_1) + /sizeof(asn_DEF_BearerType_tags_1[0]), /* 1 */ + asn_DEF_BearerType_tags_1, /* Same as above */ + sizeof(asn_DEF_BearerType_tags_1) + /sizeof(asn_DEF_BearerType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BearerType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BearerType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BearerType.h b/E2Manager/asn1codec/e2ap_engine/BearerType.h new file mode 100644 index 0000000..ecd8391 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BearerType.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BearerType_H_ +#define _BearerType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BearerType { + BearerType_non_IP = 0 + /* + * Enumeration is extensible + */ +} e_BearerType; + +/* BearerType */ +typedef long BearerType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BearerType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BearerType; +extern const asn_INTEGER_specifics_t asn_SPC_BearerType_specs_1; +asn_struct_free_f BearerType_free; +asn_struct_print_f BearerType_print; +asn_constr_check_f BearerType_constraint; +ber_type_decoder_f BearerType_decode_ber; +der_type_encoder_f BearerType_encode_der; +xer_type_decoder_f BearerType_decode_xer; +xer_type_encoder_f BearerType_encode_xer; +per_type_decoder_f BearerType_decode_uper; +per_type_encoder_f BearerType_encode_uper; +per_type_decoder_f BearerType_decode_aper; +per_type_encoder_f BearerType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BearerType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BenefitMetric.c b/E2Manager/asn1codec/e2ap_engine/BenefitMetric.c new file mode 100644 index 0000000..cd10cf2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BenefitMetric.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BenefitMetric.h" + +int +BenefitMetric_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -101 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_BenefitMetric_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, -101, 100 } /* (-101..100,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BenefitMetric_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BenefitMetric = { + "BenefitMetric", + "BenefitMetric", + &asn_OP_NativeInteger, + asn_DEF_BenefitMetric_tags_1, + sizeof(asn_DEF_BenefitMetric_tags_1) + /sizeof(asn_DEF_BenefitMetric_tags_1[0]), /* 1 */ + asn_DEF_BenefitMetric_tags_1, /* Same as above */ + sizeof(asn_DEF_BenefitMetric_tags_1) + /sizeof(asn_DEF_BenefitMetric_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BenefitMetric_constr_1, BenefitMetric_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BenefitMetric.h b/E2Manager/asn1codec/e2ap_engine/BenefitMetric.h new file mode 100644 index 0000000..b47a3cc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BenefitMetric.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BenefitMetric_H_ +#define _BenefitMetric_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BenefitMetric */ +typedef long BenefitMetric_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BenefitMetric_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BenefitMetric; +asn_struct_free_f BenefitMetric_free; +asn_struct_print_f BenefitMetric_print; +asn_constr_check_f BenefitMetric_constraint; +ber_type_decoder_f BenefitMetric_decode_ber; +der_type_encoder_f BenefitMetric_encode_der; +xer_type_decoder_f BenefitMetric_decode_xer; +xer_type_encoder_f BenefitMetric_encode_xer; +per_type_decoder_f BenefitMetric_decode_uper; +per_type_encoder_f BenefitMetric_encode_uper; +per_type_decoder_f BenefitMetric_decode_aper; +per_type_encoder_f BenefitMetric_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BenefitMetric_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BitRate.c b/E2Manager/asn1codec/e2ap_engine/BitRate.c new file mode 100644 index 0000000..9df80ea --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BitRate.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BitRate.h" + +int +BitRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 10000000000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BitRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 34, -1, 0, 10000000000 } /* (0..10000000000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BitRate = { + "BitRate", + "BitRate", + &asn_OP_INTEGER, + asn_DEF_BitRate_tags_1, + sizeof(asn_DEF_BitRate_tags_1) + /sizeof(asn_DEF_BitRate_tags_1[0]), /* 1 */ + asn_DEF_BitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_BitRate_tags_1) + /sizeof(asn_DEF_BitRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BitRate_constr_1, BitRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BitRate.h b/E2Manager/asn1codec/e2ap_engine/BitRate.h new file mode 100644 index 0000000..34d98d5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BitRate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BitRate_H_ +#define _BitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BitRate */ +typedef INTEGER_t BitRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BitRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BitRate; +asn_struct_free_f BitRate_free; +asn_struct_print_f BitRate_print; +asn_constr_check_f BitRate_constraint; +ber_type_decoder_f BitRate_decode_ber; +der_type_encoder_f BitRate_encode_der; +xer_type_decoder_f BitRate_decode_xer; +xer_type_encoder_f BitRate_encode_xer; +per_type_decoder_f BitRate_decode_uper; +per_type_encoder_f BitRate_encode_uper; +per_type_decoder_f BitRate_decode_aper; +per_type_encoder_f BitRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BitRate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.c b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.c new file mode 100644 index 0000000..0126654 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasConfig.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BluetoothMeasConfig_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BluetoothMeasConfig_value2enum_1[] = { + { 0, 5, "setup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BluetoothMeasConfig_enum2value_1[] = { + 0 /* setup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BluetoothMeasConfig_specs_1 = { + asn_MAP_BluetoothMeasConfig_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BluetoothMeasConfig_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_BluetoothMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfig = { + "BluetoothMeasConfig", + "BluetoothMeasConfig", + &asn_OP_NativeEnumerated, + asn_DEF_BluetoothMeasConfig_tags_1, + sizeof(asn_DEF_BluetoothMeasConfig_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasConfig_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfig_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothMeasConfig_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BluetoothMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.h b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.h new file mode 100644 index 0000000..8a57ac0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfig.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasConfig_H_ +#define _BluetoothMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BluetoothMeasConfig { + BluetoothMeasConfig_setup = 0 + /* + * Enumeration is extensible + */ +} e_BluetoothMeasConfig; + +/* BluetoothMeasConfig */ +typedef long BluetoothMeasConfig_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BluetoothMeasConfig_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfig; +extern const asn_INTEGER_specifics_t asn_SPC_BluetoothMeasConfig_specs_1; +asn_struct_free_f BluetoothMeasConfig_free; +asn_struct_print_f BluetoothMeasConfig_print; +asn_constr_check_f BluetoothMeasConfig_constraint; +ber_type_decoder_f BluetoothMeasConfig_decode_ber; +der_type_encoder_f BluetoothMeasConfig_encode_der; +xer_type_decoder_f BluetoothMeasConfig_decode_xer; +xer_type_encoder_f BluetoothMeasConfig_encode_xer; +per_type_decoder_f BluetoothMeasConfig_decode_uper; +per_type_encoder_f BluetoothMeasConfig_encode_uper; +per_type_decoder_f BluetoothMeasConfig_decode_aper; +per_type_encoder_f BluetoothMeasConfig_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c new file mode 100644 index 0000000..53e156b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasConfigNameList.h" + +asn_per_constraints_t asn_PER_type_BluetoothMeasConfigNameList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_BluetoothMeasConfigNameList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_BluetoothName, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasConfigNameList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_BluetoothMeasConfigNameList_specs_1 = { + sizeof(struct BluetoothMeasConfigNameList), + offsetof(struct BluetoothMeasConfigNameList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfigNameList = { + "BluetoothMeasConfigNameList", + "BluetoothMeasConfigNameList", + &asn_OP_SEQUENCE_OF, + asn_DEF_BluetoothMeasConfigNameList_tags_1, + sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasConfigNameList_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothMeasConfigNameList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_BluetoothMeasConfigNameList_1, + 1, /* Single element */ + &asn_SPC_BluetoothMeasConfigNameList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h new file mode 100644 index 0000000..137ef87 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasConfigNameList_H_ +#define _BluetoothMeasConfigNameList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BluetoothName.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BluetoothMeasConfigNameList */ +typedef struct BluetoothMeasConfigNameList { + A_SEQUENCE_OF(BluetoothName_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BluetoothMeasConfigNameList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfigNameList; +extern asn_SET_OF_specifics_t asn_SPC_BluetoothMeasConfigNameList_specs_1; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasConfigNameList_1[1]; +extern asn_per_constraints_t asn_PER_type_BluetoothMeasConfigNameList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasConfigNameList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c new file mode 100644 index 0000000..b591f99 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c @@ -0,0 +1,149 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasurementConfiguration.h" + +#include "BluetoothMeasConfigNameList.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_bt_rssi_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_bt_rssi_value2enum_4[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_bt_rssi_enum2value_4[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_bt_rssi_specs_4 = { + asn_MAP_bt_rssi_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_bt_rssi_enum2value_4, /* 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_bt_rssi_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_bt_rssi_4 = { + "bt-rssi", + "bt-rssi", + &asn_OP_NativeEnumerated, + asn_DEF_bt_rssi_tags_4, + sizeof(asn_DEF_bt_rssi_tags_4) + /sizeof(asn_DEF_bt_rssi_tags_4[0]) - 1, /* 1 */ + asn_DEF_bt_rssi_tags_4, /* Same as above */ + sizeof(asn_DEF_bt_rssi_tags_4) + /sizeof(asn_DEF_bt_rssi_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_bt_rssi_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_bt_rssi_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration, bluetoothMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BluetoothMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bluetoothMeasConfig" + }, + { ATF_POINTER, 3, offsetof(struct BluetoothMeasurementConfiguration, bluetoothMeasConfigNameList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BluetoothMeasConfigNameList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bluetoothMeasConfigNameList" + }, + { ATF_POINTER, 2, offsetof(struct BluetoothMeasurementConfiguration, bt_rssi), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_bt_rssi_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bt-rssi" + }, + { ATF_POINTER, 1, offsetof(struct BluetoothMeasurementConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P111, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_BluetoothMeasurementConfiguration_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasurementConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BluetoothMeasurementConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bluetoothMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bluetoothMeasConfigNameList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bt-rssi */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_specs_1 = { + sizeof(struct BluetoothMeasurementConfiguration), + offsetof(struct BluetoothMeasurementConfiguration, _asn_ctx), + asn_MAP_BluetoothMeasurementConfiguration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_BluetoothMeasurementConfiguration_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration = { + "BluetoothMeasurementConfiguration", + "BluetoothMeasurementConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_BluetoothMeasurementConfiguration_tags_1, + sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasurementConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BluetoothMeasurementConfiguration_1, + 4, /* Elements count */ + &asn_SPC_BluetoothMeasurementConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h new file mode 100644 index 0000000..bd8a436 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasurementConfiguration_H_ +#define _BluetoothMeasurementConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BluetoothMeasConfig.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BluetoothMeasurementConfiguration__bt_rssi { + BluetoothMeasurementConfiguration__bt_rssi_true = 0 + /* + * Enumeration is extensible + */ +} e_BluetoothMeasurementConfiguration__bt_rssi; + +/* Forward declarations */ +struct BluetoothMeasConfigNameList; +struct ProtocolExtensionContainer; + +/* BluetoothMeasurementConfiguration */ +typedef struct BluetoothMeasurementConfiguration { + BluetoothMeasConfig_t bluetoothMeasConfig; + struct BluetoothMeasConfigNameList *bluetoothMeasConfigNameList; /* OPTIONAL */ + long *bt_rssi; /* 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; +} BluetoothMeasurementConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_bt_rssi_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasurementConfiguration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothName.c b/E2Manager/asn1codec/e2ap_engine/BluetoothName.c new file mode 100644 index 0000000..a0a7f96 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothName.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothName.h" + +int +BluetoothName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 248)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_BluetoothName_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 248 } /* (SIZE(1..248)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BluetoothName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothName = { + "BluetoothName", + "BluetoothName", + &asn_OP_OCTET_STRING, + asn_DEF_BluetoothName_tags_1, + sizeof(asn_DEF_BluetoothName_tags_1) + /sizeof(asn_DEF_BluetoothName_tags_1[0]), /* 1 */ + asn_DEF_BluetoothName_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothName_tags_1) + /sizeof(asn_DEF_BluetoothName_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothName_constr_1, BluetoothName_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BluetoothName.h b/E2Manager/asn1codec/e2ap_engine/BluetoothName.h new file mode 100644 index 0000000..6fbf77f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BluetoothName.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothName_H_ +#define _BluetoothName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BluetoothName */ +typedef OCTET_STRING_t BluetoothName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BluetoothName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothName; +asn_struct_free_f BluetoothName_free; +asn_struct_print_f BluetoothName_print; +asn_constr_check_f BluetoothName_constraint; +ber_type_decoder_f BluetoothName_decode_ber; +der_type_encoder_f BluetoothName_encode_der; +xer_type_decoder_f BluetoothName_decode_xer; +xer_type_encoder_f BluetoothName_encode_xer; +per_type_decoder_f BluetoothName_decode_uper; +per_type_encoder_f BluetoothName_encode_uper; +per_type_decoder_f BluetoothName_decode_aper; +per_type_encoder_f BluetoothName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothName_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c b/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c new file mode 100644 index 0000000..a33d5ee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BroadcastPLMNs-Item.h" + +asn_per_constraints_t asn_PER_type_BroadcastPLMNs_Item_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 6 } /* (SIZE(1..6)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_BroadcastPLMNs_Item_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_BroadcastPLMNs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_BroadcastPLMNs_Item_specs_1 = { + sizeof(struct BroadcastPLMNs_Item), + offsetof(struct BroadcastPLMNs_Item, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_BroadcastPLMNs_Item = { + "BroadcastPLMNs-Item", + "BroadcastPLMNs-Item", + &asn_OP_SEQUENCE_OF, + asn_DEF_BroadcastPLMNs_Item_tags_1, + sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1) + /sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1[0]), /* 1 */ + asn_DEF_BroadcastPLMNs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1) + /sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BroadcastPLMNs_Item_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_BroadcastPLMNs_Item_1, + 1, /* Single element */ + &asn_SPC_BroadcastPLMNs_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h b/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h new file mode 100644 index 0000000..7787633 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BroadcastPLMNs_Item_H_ +#define _BroadcastPLMNs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BroadcastPLMNs-Item */ +typedef struct BroadcastPLMNs_Item { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BroadcastPLMNs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BroadcastPLMNs_Item; +extern asn_SET_OF_specifics_t asn_SPC_BroadcastPLMNs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_BroadcastPLMNs_Item_1[1]; +extern asn_per_constraints_t asn_PER_type_BroadcastPLMNs_Item_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BroadcastPLMNs_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.c b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.c new file mode 100644 index 0000000..63730a1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CNTypeRestrictions.h" + +#include "CNTypeRestrictionsItem.h" +asn_per_constraints_t asn_PER_type_CNTypeRestrictions_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CNTypeRestrictions_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictionsItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CNTypeRestrictions_specs_1 = { + sizeof(struct CNTypeRestrictions), + offsetof(struct CNTypeRestrictions, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictions = { + "CNTypeRestrictions", + "CNTypeRestrictions", + &asn_OP_SEQUENCE_OF, + asn_DEF_CNTypeRestrictions_tags_1, + sizeof(asn_DEF_CNTypeRestrictions_tags_1) + /sizeof(asn_DEF_CNTypeRestrictions_tags_1[0]), /* 1 */ + asn_DEF_CNTypeRestrictions_tags_1, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictions_tags_1) + /sizeof(asn_DEF_CNTypeRestrictions_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CNTypeRestrictions_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CNTypeRestrictions_1, + 1, /* Single element */ + &asn_SPC_CNTypeRestrictions_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.h b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.h new file mode 100644 index 0000000..7f96c7f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictions.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CNTypeRestrictions_H_ +#define _CNTypeRestrictions_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CNTypeRestrictionsItem; + +/* CNTypeRestrictions */ +typedef struct CNTypeRestrictions { + A_SEQUENCE_OF(struct CNTypeRestrictionsItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CNTypeRestrictions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictions; +extern asn_SET_OF_specifics_t asn_SPC_CNTypeRestrictions_specs_1; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictions_1[1]; +extern asn_per_constraints_t asn_PER_type_CNTypeRestrictions_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CNTypeRestrictions_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c new file mode 100644 index 0000000..9caf550 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c @@ -0,0 +1,138 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CNTypeRestrictionsItem.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_cn_type_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_cn_type_value2enum_3[] = { + { 0, 16, "fiveGC-forbidden" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_cn_type_enum2value_3[] = { + 0 /* fiveGC-forbidden(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_cn_type_specs_3 = { + asn_MAP_cn_type_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_cn_type_enum2value_3, /* 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_cn_type_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_cn_type_3 = { + "cn-type", + "cn-type", + &asn_OP_NativeEnumerated, + asn_DEF_cn_type_tags_3, + sizeof(asn_DEF_cn_type_tags_3) + /sizeof(asn_DEF_cn_type_tags_3[0]) - 1, /* 1 */ + asn_DEF_cn_type_tags_3, /* Same as above */ + sizeof(asn_DEF_cn_type_tags_3) + /sizeof(asn_DEF_cn_type_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_cn_type_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_cn_type_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem, plmn_Id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem, cn_type), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_cn_type_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cn-type" + }, + { ATF_POINTER, 1, offsetof(struct CNTypeRestrictionsItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P116, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CNTypeRestrictionsItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictionsItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CNTypeRestrictionsItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cn-type */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_specs_1 = { + sizeof(struct CNTypeRestrictionsItem), + offsetof(struct CNTypeRestrictionsItem, _asn_ctx), + asn_MAP_CNTypeRestrictionsItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CNTypeRestrictionsItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem = { + "CNTypeRestrictionsItem", + "CNTypeRestrictionsItem", + &asn_OP_SEQUENCE, + asn_DEF_CNTypeRestrictionsItem_tags_1, + sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1) + /sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1[0]), /* 1 */ + asn_DEF_CNTypeRestrictionsItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1) + /sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CNTypeRestrictionsItem_1, + 3, /* Elements count */ + &asn_SPC_CNTypeRestrictionsItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h new file mode 100644 index 0000000..6be8bc4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CNTypeRestrictionsItem_H_ +#define _CNTypeRestrictionsItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CNTypeRestrictionsItem__cn_type { + CNTypeRestrictionsItem__cn_type_fiveGC_forbidden = 0 + /* + * Enumeration is extensible + */ +} e_CNTypeRestrictionsItem__cn_type; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CNTypeRestrictionsItem */ +typedef struct CNTypeRestrictionsItem { + PLMN_Identity_t plmn_Id; + long cn_type; + 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; +} CNTypeRestrictionsItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_cn_type_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem; +extern asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CNTypeRestrictionsItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.c b/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.c new file mode 100644 index 0000000..999a0cf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTValueExtended.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTValueExtended_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended, pDCP_SNExtended), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SNExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended, hFNModified), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFNModified, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNModified" + }, + { ATF_POINTER, 1, offsetof(struct COUNTValueExtended, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P124, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTValueExtended_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTValueExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTValueExtended_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNExtended */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNModified */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_specs_1 = { + sizeof(struct COUNTValueExtended), + offsetof(struct COUNTValueExtended, _asn_ctx), + asn_MAP_COUNTValueExtended_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTValueExtended_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended = { + "COUNTValueExtended", + "COUNTValueExtended", + &asn_OP_SEQUENCE, + asn_DEF_COUNTValueExtended_tags_1, + sizeof(asn_DEF_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_COUNTValueExtended_tags_1[0]), /* 1 */ + asn_DEF_COUNTValueExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_COUNTValueExtended_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTValueExtended_1, + 3, /* Elements count */ + &asn_SPC_COUNTValueExtended_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.h b/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.h new file mode 100644 index 0000000..7336d5a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTValueExtended.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTValueExtended_H_ +#define _COUNTValueExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SNExtended.h" +#include "HFNModified.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTValueExtended */ +typedef struct COUNTValueExtended { + PDCP_SNExtended_t pDCP_SNExtended; + HFNModified_t hFNModified; + 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; +} COUNTValueExtended_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTValueExtended_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTValueExtended_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTvalue.c b/E2Manager/asn1codec/e2ap_engine/COUNTvalue.c new file mode 100644 index 0000000..3558f77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTvalue.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTvalue.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTvalue_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue, pDCP_SN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SN" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue, hFN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFN" + }, + { ATF_POINTER, 1, offsetof(struct COUNTvalue, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P123, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTvalue_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTvalue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvalue_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_specs_1 = { + sizeof(struct COUNTvalue), + offsetof(struct COUNTvalue, _asn_ctx), + asn_MAP_COUNTvalue_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTvalue_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvalue = { + "COUNTvalue", + "COUNTvalue", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvalue_tags_1, + sizeof(asn_DEF_COUNTvalue_tags_1) + /sizeof(asn_DEF_COUNTvalue_tags_1[0]), /* 1 */ + asn_DEF_COUNTvalue_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTvalue_tags_1) + /sizeof(asn_DEF_COUNTvalue_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvalue_1, + 3, /* Elements count */ + &asn_SPC_COUNTvalue_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTvalue.h b/E2Manager/asn1codec/e2ap_engine/COUNTvalue.h new file mode 100644 index 0000000..474c15f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTvalue.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTvalue_H_ +#define _COUNTvalue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SN.h" +#include "HFN.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTvalue */ +typedef struct COUNTvalue { + PDCP_SN_t pDCP_SN; + 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; +} COUNTvalue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTvalue; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTvalue_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTvalue_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c b/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c new file mode 100644 index 0000000..e6c2e9f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTvaluePDCP-SNlength18.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18, pDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18, hFNforPDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFNforPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNforPDCP-SNlength18" + }, + { ATF_POINTER, 1, offsetof(struct COUNTvaluePDCP_SNlength18, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P125, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTvaluePDCP_SNlength18_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvaluePDCP_SNlength18_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNforPDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_specs_1 = { + sizeof(struct COUNTvaluePDCP_SNlength18), + offsetof(struct COUNTvaluePDCP_SNlength18, _asn_ctx), + asn_MAP_COUNTvaluePDCP_SNlength18_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTvaluePDCP_SNlength18_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18 = { + "COUNTvaluePDCP-SNlength18", + "COUNTvaluePDCP-SNlength18", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvaluePDCP_SNlength18_tags_1, + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_COUNTvaluePDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvaluePDCP_SNlength18_1, + 3, /* Elements count */ + &asn_SPC_COUNTvaluePDCP_SNlength18_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h b/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h new file mode 100644 index 0000000..b36fddd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTvaluePDCP_SNlength18_H_ +#define _COUNTvaluePDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SNlength18.h" +#include "HFNforPDCP-SNlength18.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTvaluePDCP-SNlength18 */ +typedef struct COUNTvaluePDCP_SNlength18 { + PDCP_SNlength18_t pDCP_SNlength18; + HFNforPDCP_SNlength18_t hFNforPDCP_SNlength18; + 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; +} COUNTvaluePDCP_SNlength18_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTvaluePDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CRNTI.c b/E2Manager/asn1codec/e2ap_engine/CRNTI.c new file mode 100644 index 0000000..7988866 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CRNTI.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CRNTI.h" + +int +CRNTI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CRNTI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CRNTI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CRNTI = { + "CRNTI", + "CRNTI", + &asn_OP_BIT_STRING, + asn_DEF_CRNTI_tags_1, + sizeof(asn_DEF_CRNTI_tags_1) + /sizeof(asn_DEF_CRNTI_tags_1[0]), /* 1 */ + asn_DEF_CRNTI_tags_1, /* Same as above */ + sizeof(asn_DEF_CRNTI_tags_1) + /sizeof(asn_DEF_CRNTI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CRNTI_constr_1, CRNTI_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CRNTI.h b/E2Manager/asn1codec/e2ap_engine/CRNTI.h new file mode 100644 index 0000000..ea16a1c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CRNTI.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CRNTI_H_ +#define _CRNTI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CRNTI */ +typedef BIT_STRING_t CRNTI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CRNTI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CRNTI; +asn_struct_free_f CRNTI_free; +asn_struct_print_f CRNTI_print; +asn_constr_check_f CRNTI_constraint; +ber_type_decoder_f CRNTI_decode_ber; +der_type_encoder_f CRNTI_encode_der; +xer_type_decoder_f CRNTI_decode_xer; +xer_type_encoder_f CRNTI_encode_xer; +per_type_decoder_f CRNTI_decode_uper; +per_type_encoder_f CRNTI_encode_uper; +per_type_decoder_f CRNTI_decode_aper; +per_type_encoder_f CRNTI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CRNTI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CSG-Id.c b/E2Manager/asn1codec/e2ap_engine/CSG-Id.c new file mode 100644 index 0000000..72bc574 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSG-Id.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSG-Id.h" + +int +CSG_Id_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 27)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CSG_Id_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 27, 27 } /* (SIZE(27..27)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CSG_Id_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSG_Id = { + "CSG-Id", + "CSG-Id", + &asn_OP_BIT_STRING, + asn_DEF_CSG_Id_tags_1, + sizeof(asn_DEF_CSG_Id_tags_1) + /sizeof(asn_DEF_CSG_Id_tags_1[0]), /* 1 */ + asn_DEF_CSG_Id_tags_1, /* Same as above */ + sizeof(asn_DEF_CSG_Id_tags_1) + /sizeof(asn_DEF_CSG_Id_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSG_Id_constr_1, CSG_Id_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CSG-Id.h b/E2Manager/asn1codec/e2ap_engine/CSG-Id.h new file mode 100644 index 0000000..93dc60b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSG-Id.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSG_Id_H_ +#define _CSG_Id_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CSG-Id */ +typedef BIT_STRING_t CSG_Id_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CSG_Id_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CSG_Id; +asn_struct_free_f CSG_Id_free; +asn_struct_print_f CSG_Id_print; +asn_constr_check_f CSG_Id_constraint; +ber_type_decoder_f CSG_Id_decode_ber; +der_type_encoder_f CSG_Id_encode_der; +xer_type_decoder_f CSG_Id_decode_xer; +xer_type_encoder_f CSG_Id_encode_xer; +per_type_decoder_f CSG_Id_decode_uper; +per_type_encoder_f CSG_Id_encode_uper; +per_type_decoder_f CSG_Id_decode_aper; +per_type_encoder_f CSG_Id_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSG_Id_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.c b/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.c new file mode 100644 index 0000000..3e58cf9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSGMembershipStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CSGMembershipStatus_value2enum_1[] = { + { 0, 6, "member" }, + { 1, 10, "not-member" } +}; +static const unsigned int asn_MAP_CSGMembershipStatus_enum2value_1[] = { + 0, /* member(0) */ + 1 /* not-member(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1 = { + asn_MAP_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_CSGMembershipStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus = { + "CSGMembershipStatus", + "CSGMembershipStatus", + &asn_OP_NativeEnumerated, + asn_DEF_CSGMembershipStatus_tags_1, + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + asn_DEF_CSGMembershipStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSGMembershipStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CSGMembershipStatus_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.h b/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.h new file mode 100644 index 0000000..3d12191 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSGMembershipStatus.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSGMembershipStatus_H_ +#define _CSGMembershipStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CSGMembershipStatus { + CSGMembershipStatus_member = 0, + CSGMembershipStatus_not_member = 1 +} e_CSGMembershipStatus; + +/* CSGMembershipStatus */ +typedef long CSGMembershipStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus; +extern const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1; +asn_struct_free_f CSGMembershipStatus_free; +asn_struct_print_f CSGMembershipStatus_print; +asn_constr_check_f CSGMembershipStatus_constraint; +ber_type_decoder_f CSGMembershipStatus_decode_ber; +der_type_encoder_f CSGMembershipStatus_encode_der; +xer_type_decoder_f CSGMembershipStatus_decode_xer; +xer_type_encoder_f CSGMembershipStatus_encode_xer; +per_type_decoder_f CSGMembershipStatus_decode_uper; +per_type_encoder_f CSGMembershipStatus_encode_uper; +per_type_decoder_f CSGMembershipStatus_decode_aper; +per_type_encoder_f CSGMembershipStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSGMembershipStatus_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportList.c b/E2Manager/asn1codec/e2ap_engine/CSIReportList.c new file mode 100644 index 0000000..4eb95b6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportList.c @@ -0,0 +1,133 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportList.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CSIReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 128 } /* (SIZE(1..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList__Member, uEID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList__Member, cSIReportPerCSIProcess), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSIReportPerCSIProcess, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSIReportPerCSIProcess" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P128, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uEID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSIReportPerCSIProcess */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportList__Member), + offsetof(struct CSIReportList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportList_specs_1 = { + sizeof(struct CSIReportList), + offsetof(struct CSIReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportList = { + "CSIReportList", + "CSIReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportList_tags_1, + sizeof(asn_DEF_CSIReportList_tags_1) + /sizeof(asn_DEF_CSIReportList_tags_1[0]), /* 1 */ + asn_DEF_CSIReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportList_tags_1) + /sizeof(asn_DEF_CSIReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportList_1, + 1, /* Single element */ + &asn_SPC_CSIReportList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportList.h b/E2Manager/asn1codec/e2ap_engine/CSIReportList.h new file mode 100644 index 0000000..74de6b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportList.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportList_H_ +#define _CSIReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "UEID.h" +#include "CSIReportPerCSIProcess.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportList__Member { + UEID_t uEID; + CSIReportPerCSIProcess_t cSIReportPerCSIProcess; + 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; +} CSIReportList__Member; + +/* CSIReportList */ +typedef struct CSIReportList { + A_SEQUENCE_OF(CSIReportList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportList; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c new file mode 100644 index 0000000..7102c2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c @@ -0,0 +1,163 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportPerCSIProcess.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_cSIProcessConfigurationIndex_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_cSIProcessConfigurationIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 7 } /* (1..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcess_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess__Member, cSIProcessConfigurationIndex), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_cSIProcessConfigurationIndex_constr_3, memb_cSIProcessConfigurationIndex_constraint_2 }, + 0, 0, /* No default value */ + "cSIProcessConfigurationIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess__Member, cSIReportPerCSIProcessItem), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSIReportPerCSIProcessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSIReportPerCSIProcessItem" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportPerCSIProcess__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P129, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cSIProcessConfigurationIndex */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSIReportPerCSIProcessItem */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportPerCSIProcess__Member), + offsetof(struct CSIReportPerCSIProcess__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcess_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcess_specs_1 = { + sizeof(struct CSIReportPerCSIProcess), + offsetof(struct CSIReportPerCSIProcess, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess = { + "CSIReportPerCSIProcess", + "CSIReportPerCSIProcess", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportPerCSIProcess_tags_1, + sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcess_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportPerCSIProcess_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportPerCSIProcess_1, + 1, /* Single element */ + &asn_SPC_CSIReportPerCSIProcess_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h new file mode 100644 index 0000000..9a725ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportPerCSIProcess_H_ +#define _CSIReportPerCSIProcess_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "CSIReportPerCSIProcessItem.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportPerCSIProcess__Member { + long cSIProcessConfigurationIndex; + CSIReportPerCSIProcessItem_t cSIReportPerCSIProcessItem; + 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; +} CSIReportPerCSIProcess__Member; + +/* CSIReportPerCSIProcess */ +typedef struct CSIReportPerCSIProcess { + A_SEQUENCE_OF(CSIReportPerCSIProcess__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcess_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcess_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcess_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportPerCSIProcess_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c new file mode 100644 index 0000000..4c00f14 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c @@ -0,0 +1,184 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportPerCSIProcessItem.h" + +#include "SubbandCQIList.h" +#include "ProtocolExtensionContainer.h" +static int +memb_rI_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* 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_rI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (1..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcessItem_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, rI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rI_constr_3, memb_rI_constraint_2 }, + 0, 0, /* No default value */ + "rI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, widebandCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WidebandCQI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "widebandCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, subbandSize), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandSize, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandSize" + }, + { ATF_POINTER, 2, offsetof(struct CSIReportPerCSIProcessItem__Member, subbandCQIList), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandCQIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQIList" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportPerCSIProcessItem__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P130, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* widebandCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subbandSize */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* subbandCQIList */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportPerCSIProcessItem__Member), + offsetof(struct CSIReportPerCSIProcessItem__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 5, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 5, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcessItem_specs_1 = { + sizeof(struct CSIReportPerCSIProcessItem), + offsetof(struct CSIReportPerCSIProcessItem, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem = { + "CSIReportPerCSIProcessItem", + "CSIReportPerCSIProcessItem", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportPerCSIProcessItem_tags_1, + sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportPerCSIProcessItem_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportPerCSIProcessItem_1, + 1, /* Single element */ + &asn_SPC_CSIReportPerCSIProcessItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h new file mode 100644 index 0000000..383859c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportPerCSIProcessItem_H_ +#define _CSIReportPerCSIProcessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "WidebandCQI.h" +#include "SubbandSize.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQIList; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportPerCSIProcessItem__Member { + long rI; + WidebandCQI_t widebandCQI; + SubbandSize_t subbandSize; + struct SubbandCQIList *subbandCQIList; /* 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; +} CSIReportPerCSIProcessItem__Member; + +/* CSIReportPerCSIProcessItem */ +typedef struct CSIReportPerCSIProcessItem { + A_SEQUENCE_OF(CSIReportPerCSIProcessItem__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcessItem_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportPerCSIProcessItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.c b/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.c new file mode 100644 index 0000000..ade6d08 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CallProcess-ID.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_CallProcess_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CallProcess_ID = { + "CallProcess-ID", + "CallProcess-ID", + &asn_OP_NativeInteger, + asn_DEF_CallProcess_ID_tags_1, + sizeof(asn_DEF_CallProcess_ID_tags_1) + /sizeof(asn_DEF_CallProcess_ID_tags_1[0]), /* 1 */ + asn_DEF_CallProcess_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_CallProcess_ID_tags_1) + /sizeof(asn_DEF_CallProcess_ID_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.h b/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.h new file mode 100644 index 0000000..51c7d99 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CallProcess-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CallProcess_ID_H_ +#define _CallProcess_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CallProcess-ID */ +typedef long CallProcess_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CallProcess_ID; +asn_struct_free_f CallProcess_ID_free; +asn_struct_print_f CallProcess_ID_print; +asn_constr_check_f CallProcess_ID_constraint; +ber_type_decoder_f CallProcess_ID_decode_ber; +der_type_encoder_f CallProcess_ID_encode_der; +xer_type_decoder_f CallProcess_ID_decode_xer; +xer_type_encoder_f CallProcess_ID_encode_xer; +per_type_decoder_f CallProcess_ID_decode_uper; +per_type_encoder_f CallProcess_ID_encode_uper; +per_type_decoder_f CallProcess_ID_decode_aper; +per_type_encoder_f CallProcess_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CallProcess_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CapacityValue.c b/E2Manager/asn1codec/e2ap_engine/CapacityValue.c new file mode 100644 index 0000000..0dff474 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CapacityValue.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CapacityValue.h" + +int +CapacityValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_CapacityValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CapacityValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CapacityValue = { + "CapacityValue", + "CapacityValue", + &asn_OP_NativeInteger, + asn_DEF_CapacityValue_tags_1, + sizeof(asn_DEF_CapacityValue_tags_1) + /sizeof(asn_DEF_CapacityValue_tags_1[0]), /* 1 */ + asn_DEF_CapacityValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CapacityValue_tags_1) + /sizeof(asn_DEF_CapacityValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CapacityValue_constr_1, CapacityValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CapacityValue.h b/E2Manager/asn1codec/e2ap_engine/CapacityValue.h new file mode 100644 index 0000000..ed2744b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CapacityValue.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CapacityValue_H_ +#define _CapacityValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CapacityValue */ +typedef long CapacityValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CapacityValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CapacityValue; +asn_struct_free_f CapacityValue_free; +asn_struct_print_f CapacityValue_print; +asn_constr_check_f CapacityValue_constraint; +ber_type_decoder_f CapacityValue_decode_ber; +der_type_encoder_f CapacityValue_encode_der; +xer_type_decoder_f CapacityValue_decode_xer; +xer_type_encoder_f CapacityValue_encode_xer; +per_type_decoder_f CapacityValue_decode_uper; +per_type_encoder_f CapacityValue_encode_uper; +per_type_decoder_f CapacityValue_decode_aper; +per_type_encoder_f CapacityValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CapacityValue_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Cause.c b/E2Manager/asn1codec/e2ap_engine/Cause.c new file mode 100644 index 0000000..317f089 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Cause.c @@ -0,0 +1,101 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Cause.h" + +asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRadioNetwork, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_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 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, + asn_MBR_Cause_1, + 4, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Cause.h b/E2Manager/asn1codec/e2ap_engine/Cause.h new file mode 100644 index 0000000..53dfc72 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Cause.h @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRadioNetwork.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_radioNetwork, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRadioNetwork_t radioNetwork; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; +extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_Cause_1[4]; +extern asn_per_constraints_t asn_PER_type_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CauseMisc.c b/E2Manager/asn1codec/e2ap_engine/CauseMisc.c new file mode 100644 index 0000000..f648446 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseMisc.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 15, "om-intervention" }, + { 3, 42, "not-enough-user-plane-processing-resources" }, + { 4, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 1, /* hardware-failure(1) */ + 3, /* not-enough-user-plane-processing-resources(3) */ + 2, /* om-intervention(2) */ + 4 /* unspecified(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_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_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CauseMisc.h b/E2Manager/asn1codec/e2ap_engine/CauseMisc.h new file mode 100644 index 0000000..9288cfa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseMisc.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_control_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_om_intervention = 2, + CauseMisc_not_enough_user_plane_processing_resources = 3, + CauseMisc_unspecified = 4 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CauseProtocol.c b/E2Manager/asn1codec/e2ap_engine/CauseProtocol.c new file mode 100644 index 0000000..47f9754 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseProtocol.c @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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, 11, "unspecified" }, + { 6, 49, "abstract-syntax-error-falsely-constructed-message" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 6, /* abstract-syntax-error-falsely-constructed-message(6) */ + 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) */ + 5 /* unspecified(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CauseProtocol.h b/E2Manager/asn1codec/e2ap_engine/CauseProtocol.h new file mode 100644 index 0000000..2198949 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseProtocol.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_unspecified = 5, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CauseRIC.c b/E2Manager/asn1codec/e2ap_engine/CauseRIC.c new file mode 100644 index 0000000..ad505ad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseRIC.c @@ -0,0 +1,96 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRIC.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRIC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 12 } /* (0..12,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRIC_value2enum_1[] = { + { 0, 19, "function-id-Invalid" }, + { 1, 20, "action-not-supported" }, + { 2, 17, "excessive-actions" }, + { 3, 16, "duplicate-action" }, + { 4, 15, "duplicate-event" }, + { 5, 23, "function-resource-limit" }, + { 6, 18, "request-id-unknown" }, + { 7, 46, "inconsistent-action-subsequent-action-sequence" }, + { 8, 23, "control-message-invalid" }, + { 9, 23, "call-process-id-invalid" }, + { 10, 21, "function-not-required" }, + { 11, 19, "excessive-functions" }, + { 12, 18, "ric-resource-limit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRIC_enum2value_1[] = { + 1, /* action-not-supported(1) */ + 9, /* call-process-id-invalid(9) */ + 8, /* control-message-invalid(8) */ + 3, /* duplicate-action(3) */ + 4, /* duplicate-event(4) */ + 2, /* excessive-actions(2) */ + 11, /* excessive-functions(11) */ + 0, /* function-id-Invalid(0) */ + 10, /* function-not-required(10) */ + 5, /* function-resource-limit(5) */ + 7, /* inconsistent-action-subsequent-action-sequence(7) */ + 6, /* request-id-unknown(6) */ + 12 /* ric-resource-limit(12) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1 = { + asn_MAP_CauseRIC_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRIC_enum2value_1, /* N => "tag"; sorted by N */ + 13, /* Number of elements in the maps */ + 14, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRIC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRIC = { + "CauseRIC", + "CauseRIC", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRIC_tags_1, + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + asn_DEF_CauseRIC_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRIC_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRIC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CauseRIC.h b/E2Manager/asn1codec/e2ap_engine/CauseRIC.h new file mode 100644 index 0000000..4a0c46a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseRIC.h @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRIC_H_ +#define _CauseRIC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRIC { + CauseRIC_function_id_Invalid = 0, + CauseRIC_action_not_supported = 1, + CauseRIC_excessive_actions = 2, + CauseRIC_duplicate_action = 3, + CauseRIC_duplicate_event = 4, + CauseRIC_function_resource_limit = 5, + CauseRIC_request_id_unknown = 6, + CauseRIC_inconsistent_action_subsequent_action_sequence = 7, + CauseRIC_control_message_invalid = 8, + CauseRIC_call_process_id_invalid = 9, + CauseRIC_function_not_required = 10, + CauseRIC_excessive_functions = 11, + CauseRIC_ric_resource_limit = 12 + /* + * Enumeration is extensible + */ +} e_CauseRIC; + +/* CauseRIC */ +typedef long CauseRIC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRIC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRIC; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1; +asn_struct_free_f CauseRIC_free; +asn_struct_print_f CauseRIC_print; +asn_constr_check_f CauseRIC_constraint; +ber_type_decoder_f CauseRIC_decode_ber; +der_type_encoder_f CauseRIC_encode_der; +xer_type_decoder_f CauseRIC_decode_xer; +xer_type_encoder_f CauseRIC_encode_xer; +per_type_decoder_f CauseRIC_decode_uper; +per_type_encoder_f CauseRIC_encode_uper; +per_type_decoder_f CauseRIC_decode_aper; +per_type_encoder_f CauseRIC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRIC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.c b/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.c new file mode 100644 index 0000000..73188eb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.c @@ -0,0 +1,172 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRadioNetwork.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 21 } /* (0..21,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRadioNetwork_value2enum_1[] = { + { 0, 36, "handover-desirable-for-radio-reasons" }, + { 1, 22, "time-critical-handover" }, + { 2, 30, "resource-optimisation-handover" }, + { 3, 27, "reduce-load-in-serving-cell" }, + { 4, 16, "partial-handover" }, + { 5, 26, "unknown-new-eNB-UE-X2AP-ID" }, + { 6, 26, "unknown-old-eNB-UE-X2AP-ID" }, + { 7, 26, "unknown-pair-of-UE-X2AP-ID" }, + { 8, 21, "ho-target-not-allowed" }, + { 9, 22, "tx2relocoverall-expiry" }, + { 10, 17, "trelocprep-expiry" }, + { 11, 18, "cell-not-available" }, + { 12, 43, "no-radio-resources-available-in-target-cell" }, + { 13, 19, "invalid-MME-GroupID" }, + { 14, 16, "unknown-MME-Code" }, + { 15, 63, "encryption-and-or-integrity-protection-algorithms-not-supported" }, + { 16, 26, "reportCharacteristicsEmpty" }, + { 17, 19, "noReportPeriodicity" }, + { 18, 21, "existingMeasurementID" }, + { 19, 26, "unknown-eNB-Measurement-ID" }, + { 20, 37, "measurement-temporarily-not-available" }, + { 21, 11, "unspecified" }, + { 22, 14, "load-balancing" }, + { 23, 21, "handover-optimisation" }, + { 24, 26, "value-out-of-allowed-range" }, + { 25, 27, "multiple-E-RAB-ID-instances" }, + { 26, 18, "switch-off-ongoing" }, + { 27, 23, "not-supported-QCI-value" }, + { 28, 40, "measurement-not-supported-for-the-object" }, + { 29, 17, "tDCoverall-expiry" }, + { 30, 14, "tDCprep-expiry" }, + { 31, 34, "action-desirable-for-radio-reasons" }, + { 32, 11, "reduce-load" }, + { 33, 21, "resource-optimisation" }, + { 34, 20, "time-critical-action" }, + { 35, 18, "target-not-allowed" }, + { 36, 28, "no-radio-resources-available" }, + { 37, 23, "invalid-QoS-combination" }, + { 38, 35, "encryption-algorithms-not-aupported" }, + { 39, 19, "procedure-cancelled" }, + { 40, 11, "rRM-purpose" }, + { 41, 21, "improve-user-bit-rate" }, + { 42, 15, "user-inactivity" }, + { 43, 29, "radio-connection-with-UE-lost" }, + { 44, 40, "failure-in-the-radio-interface-procedure" }, + { 45, 27, "bearer-option-not-supported" }, + { 46, 12, "mCG-Mobility" }, + { 47, 12, "sCG-Mobility" }, + { 48, 23, "count-reaches-max-value" }, + { 49, 29, "unknown-old-en-gNB-UE-X2AP-ID" }, + { 50, 13, "pDCP-Overload" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRadioNetwork_enum2value_1[] = { + 31, /* action-desirable-for-radio-reasons(31) */ + 45, /* bearer-option-not-supported(45) */ + 11, /* cell-not-available(11) */ + 48, /* count-reaches-max-value(48) */ + 38, /* encryption-algorithms-not-aupported(38) */ + 15, /* encryption-and-or-integrity-protection-algorithms-not-supported(15) */ + 18, /* existingMeasurementID(18) */ + 44, /* failure-in-the-radio-interface-procedure(44) */ + 0, /* handover-desirable-for-radio-reasons(0) */ + 23, /* handover-optimisation(23) */ + 8, /* ho-target-not-allowed(8) */ + 41, /* improve-user-bit-rate(41) */ + 13, /* invalid-MME-GroupID(13) */ + 37, /* invalid-QoS-combination(37) */ + 22, /* load-balancing(22) */ + 46, /* mCG-Mobility(46) */ + 28, /* measurement-not-supported-for-the-object(28) */ + 20, /* measurement-temporarily-not-available(20) */ + 25, /* multiple-E-RAB-ID-instances(25) */ + 36, /* no-radio-resources-available(36) */ + 12, /* no-radio-resources-available-in-target-cell(12) */ + 17, /* noReportPeriodicity(17) */ + 27, /* not-supported-QCI-value(27) */ + 50, /* pDCP-Overload(50) */ + 4, /* partial-handover(4) */ + 39, /* procedure-cancelled(39) */ + 40, /* rRM-purpose(40) */ + 43, /* radio-connection-with-UE-lost(43) */ + 32, /* reduce-load(32) */ + 3, /* reduce-load-in-serving-cell(3) */ + 16, /* reportCharacteristicsEmpty(16) */ + 33, /* resource-optimisation(33) */ + 2, /* resource-optimisation-handover(2) */ + 47, /* sCG-Mobility(47) */ + 26, /* switch-off-ongoing(26) */ + 29, /* tDCoverall-expiry(29) */ + 30, /* tDCprep-expiry(30) */ + 35, /* target-not-allowed(35) */ + 34, /* time-critical-action(34) */ + 1, /* time-critical-handover(1) */ + 10, /* trelocprep-expiry(10) */ + 9, /* tx2relocoverall-expiry(9) */ + 14, /* unknown-MME-Code(14) */ + 19, /* unknown-eNB-Measurement-ID(19) */ + 5, /* unknown-new-eNB-UE-X2AP-ID(5) */ + 6, /* unknown-old-eNB-UE-X2AP-ID(6) */ + 49, /* unknown-old-en-gNB-UE-X2AP-ID(49) */ + 7, /* unknown-pair-of-UE-X2AP-ID(7) */ + 21, /* unspecified(21) */ + 42, /* user-inactivity(42) */ + 24 /* value-out-of-allowed-range(24) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1 = { + asn_MAP_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */ + 51, /* Number of elements in the maps */ + 23, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRadioNetwork_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork = { + "CauseRadioNetwork", + "CauseRadioNetwork", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRadioNetwork_tags_1, + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + asn_DEF_CauseRadioNetwork_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRadioNetwork_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRadioNetwork_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.h b/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.h new file mode 100644 index 0000000..d7d5af7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseRadioNetwork.h @@ -0,0 +1,122 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRadioNetwork_H_ +#define _CauseRadioNetwork_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRadioNetwork { + CauseRadioNetwork_handover_desirable_for_radio_reasons = 0, + CauseRadioNetwork_time_critical_handover = 1, + CauseRadioNetwork_resource_optimisation_handover = 2, + CauseRadioNetwork_reduce_load_in_serving_cell = 3, + CauseRadioNetwork_partial_handover = 4, + CauseRadioNetwork_unknown_new_eNB_UE_X2AP_ID = 5, + CauseRadioNetwork_unknown_old_eNB_UE_X2AP_ID = 6, + CauseRadioNetwork_unknown_pair_of_UE_X2AP_ID = 7, + CauseRadioNetwork_ho_target_not_allowed = 8, + CauseRadioNetwork_tx2relocoverall_expiry = 9, + CauseRadioNetwork_trelocprep_expiry = 10, + CauseRadioNetwork_cell_not_available = 11, + CauseRadioNetwork_no_radio_resources_available_in_target_cell = 12, + CauseRadioNetwork_invalid_MME_GroupID = 13, + CauseRadioNetwork_unknown_MME_Code = 14, + CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported = 15, + CauseRadioNetwork_reportCharacteristicsEmpty = 16, + CauseRadioNetwork_noReportPeriodicity = 17, + CauseRadioNetwork_existingMeasurementID = 18, + CauseRadioNetwork_unknown_eNB_Measurement_ID = 19, + CauseRadioNetwork_measurement_temporarily_not_available = 20, + CauseRadioNetwork_unspecified = 21, + /* + * Enumeration is extensible + */ + CauseRadioNetwork_load_balancing = 22, + CauseRadioNetwork_handover_optimisation = 23, + CauseRadioNetwork_value_out_of_allowed_range = 24, + CauseRadioNetwork_multiple_E_RAB_ID_instances = 25, + CauseRadioNetwork_switch_off_ongoing = 26, + CauseRadioNetwork_not_supported_QCI_value = 27, + CauseRadioNetwork_measurement_not_supported_for_the_object = 28, + CauseRadioNetwork_tDCoverall_expiry = 29, + CauseRadioNetwork_tDCprep_expiry = 30, + CauseRadioNetwork_action_desirable_for_radio_reasons = 31, + CauseRadioNetwork_reduce_load = 32, + CauseRadioNetwork_resource_optimisation = 33, + CauseRadioNetwork_time_critical_action = 34, + CauseRadioNetwork_target_not_allowed = 35, + CauseRadioNetwork_no_radio_resources_available = 36, + CauseRadioNetwork_invalid_QoS_combination = 37, + CauseRadioNetwork_encryption_algorithms_not_aupported = 38, + CauseRadioNetwork_procedure_cancelled = 39, + CauseRadioNetwork_rRM_purpose = 40, + CauseRadioNetwork_improve_user_bit_rate = 41, + CauseRadioNetwork_user_inactivity = 42, + CauseRadioNetwork_radio_connection_with_UE_lost = 43, + CauseRadioNetwork_failure_in_the_radio_interface_procedure = 44, + CauseRadioNetwork_bearer_option_not_supported = 45, + CauseRadioNetwork_mCG_Mobility = 46, + CauseRadioNetwork_sCG_Mobility = 47, + CauseRadioNetwork_count_reaches_max_value = 48, + CauseRadioNetwork_unknown_old_en_gNB_UE_X2AP_ID = 49, + CauseRadioNetwork_pDCP_Overload = 50 +} e_CauseRadioNetwork; + +/* CauseRadioNetwork */ +typedef long CauseRadioNetwork_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1; +asn_struct_free_f CauseRadioNetwork_free; +asn_struct_print_f CauseRadioNetwork_print; +asn_constr_check_f CauseRadioNetwork_constraint; +ber_type_decoder_f CauseRadioNetwork_decode_ber; +der_type_encoder_f CauseRadioNetwork_encode_der; +xer_type_decoder_f CauseRadioNetwork_decode_xer; +xer_type_encoder_f CauseRadioNetwork_encode_xer; +per_type_decoder_f CauseRadioNetwork_decode_uper; +per_type_encoder_f CauseRadioNetwork_encode_uper; +per_type_decoder_f CauseRadioNetwork_decode_aper; +per_type_encoder_f CauseRadioNetwork_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRadioNetwork_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CauseTransport.c b/E2Manager/asn1codec/e2ap_engine/CauseTransport.c new file mode 100644 index 0000000..3efff9a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseTransport.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 30, "transport-resource-unavailable" }, + { 1, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 0, /* transport-resource-unavailable(0) */ + 1 /* unspecified(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CauseTransport.h b/E2Manager/asn1codec/e2ap_engine/CauseTransport.h new file mode 100644 index 0000000..3c72c0a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CauseTransport.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_transport_resource_unavailable = 0, + CauseTransport_unspecified = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Cell-Size.c b/E2Manager/asn1codec/e2ap_engine/Cell-Size.c new file mode 100644 index 0000000..1ea9117 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Cell-Size.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Cell-Size.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Cell_Size_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_Cell_Size_enum2value_1[] = { + 3, /* large(3) */ + 2, /* medium(2) */ + 1, /* small(1) */ + 0 /* verysmall(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Cell_Size_specs_1 = { + asn_MAP_Cell_Size_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_Cell_Size_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Cell_Size = { + "Cell-Size", + "Cell-Size", + &asn_OP_NativeEnumerated, + asn_DEF_Cell_Size_tags_1, + sizeof(asn_DEF_Cell_Size_tags_1) + /sizeof(asn_DEF_Cell_Size_tags_1[0]), /* 1 */ + asn_DEF_Cell_Size_tags_1, /* Same as above */ + sizeof(asn_DEF_Cell_Size_tags_1) + /sizeof(asn_DEF_Cell_Size_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Cell_Size_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Cell_Size_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Cell-Size.h b/E2Manager/asn1codec/e2ap_engine/Cell-Size.h new file mode 100644 index 0000000..535fb5d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Cell-Size.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Cell_Size_H_ +#define _Cell_Size_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cell_Size { + Cell_Size_verysmall = 0, + Cell_Size_small = 1, + Cell_Size_medium = 2, + Cell_Size_large = 3 + /* + * Enumeration is extensible + */ +} e_Cell_Size; + +/* Cell-Size */ +typedef long Cell_Size_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Cell_Size_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Cell_Size; +extern const asn_INTEGER_specifics_t asn_SPC_Cell_Size_specs_1; +asn_struct_free_f Cell_Size_free; +asn_struct_print_f Cell_Size_print; +asn_constr_check_f Cell_Size_constraint; +ber_type_decoder_f Cell_Size_decode_ber; +der_type_encoder_f Cell_Size_encode_der; +xer_type_decoder_f Cell_Size_decode_xer; +xer_type_encoder_f Cell_Size_encode_xer; +per_type_decoder_f Cell_Size_decode_uper; +per_type_encoder_f Cell_Size_encode_uper; +per_type_decoder_f Cell_Size_decode_aper; +per_type_encoder_f Cell_Size_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cell_Size_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.c b/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.c new file mode 100644 index 0000000..9cb0058 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationFailure.h" + +static asn_TYPE_member_t asn_MBR_CellActivationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_specs_1 = { + sizeof(struct CellActivationFailure), + offsetof(struct CellActivationFailure, _asn_ctx), + asn_MAP_CellActivationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationFailure = { + "CellActivationFailure", + "CellActivationFailure", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationFailure_tags_1, + sizeof(asn_DEF_CellActivationFailure_tags_1) + /sizeof(asn_DEF_CellActivationFailure_tags_1[0]), /* 1 */ + asn_DEF_CellActivationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationFailure_tags_1) + /sizeof(asn_DEF_CellActivationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationFailure_1, + 1, /* Elements count */ + &asn_SPC_CellActivationFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.h b/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.h new file mode 100644 index 0000000..dc250ec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationFailure_H_ +#define _CellActivationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationFailure */ +typedef struct CellActivationFailure { + ProtocolIE_Container_119P41_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.c b/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.c new file mode 100644 index 0000000..0f8ae1f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationRequest.h" + +static asn_TYPE_member_t asn_MBR_CellActivationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_specs_1 = { + sizeof(struct CellActivationRequest), + offsetof(struct CellActivationRequest, _asn_ctx), + asn_MAP_CellActivationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationRequest = { + "CellActivationRequest", + "CellActivationRequest", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationRequest_tags_1, + sizeof(asn_DEF_CellActivationRequest_tags_1) + /sizeof(asn_DEF_CellActivationRequest_tags_1[0]), /* 1 */ + asn_DEF_CellActivationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationRequest_tags_1) + /sizeof(asn_DEF_CellActivationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationRequest_1, + 1, /* Elements count */ + &asn_SPC_CellActivationRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.h b/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.h new file mode 100644 index 0000000..dca98df --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationRequest_H_ +#define _CellActivationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationRequest */ +typedef struct CellActivationRequest { + ProtocolIE_Container_119P39_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.c b/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.c new file mode 100644 index 0000000..45887e6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationResponse.h" + +static asn_TYPE_member_t asn_MBR_CellActivationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_specs_1 = { + sizeof(struct CellActivationResponse), + offsetof(struct CellActivationResponse, _asn_ctx), + asn_MAP_CellActivationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationResponse = { + "CellActivationResponse", + "CellActivationResponse", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationResponse_tags_1, + sizeof(asn_DEF_CellActivationResponse_tags_1) + /sizeof(asn_DEF_CellActivationResponse_tags_1[0]), /* 1 */ + asn_DEF_CellActivationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationResponse_tags_1) + /sizeof(asn_DEF_CellActivationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationResponse_1, + 1, /* Elements count */ + &asn_SPC_CellActivationResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.h b/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.h new file mode 100644 index 0000000..95c9274 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellActivationResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationResponse_H_ +#define _CellActivationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationResponse */ +typedef struct CellActivationResponse { + ProtocolIE_Container_119P40_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.c b/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.c new file mode 100644 index 0000000..181d6b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.c @@ -0,0 +1,128 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellAssistanceInformation.h" + +#include "Limited-list.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_full_list_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_CellAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_full_list_value2enum_3[] = { + { 0, 16, "allServedNRcells" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_full_list_enum2value_3[] = { + 0 /* allServedNRcells(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_full_list_specs_3 = { + asn_MAP_full_list_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_full_list_enum2value_3, /* 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_full_list_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_full_list_3 = { + "full-list", + "full-list", + &asn_OP_NativeEnumerated, + asn_DEF_full_list_tags_3, + sizeof(asn_DEF_full_list_tags_3) + /sizeof(asn_DEF_full_list_tags_3[0]) - 1, /* 1 */ + asn_DEF_full_list_tags_3, /* Same as above */ + sizeof(asn_DEF_full_list_tags_3) + /sizeof(asn_DEF_full_list_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_full_list_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_full_list_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_CellAssistanceInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct CellAssistanceInformation, choice.limited_list), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Limited_list, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "limited-list" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellAssistanceInformation, choice.full_list), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_full_list_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-list" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_CellAssistanceInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* limited-list */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* full-list */ +}; +static asn_CHOICE_specifics_t asn_SPC_CellAssistanceInformation_specs_1 = { + sizeof(struct CellAssistanceInformation), + offsetof(struct CellAssistanceInformation, _asn_ctx), + offsetof(struct CellAssistanceInformation, present), + sizeof(((struct CellAssistanceInformation *)0)->present), + asn_MAP_CellAssistanceInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_CellAssistanceInformation = { + "CellAssistanceInformation", + "CellAssistanceInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_CellAssistanceInformation_constr_1, CHOICE_constraint }, + asn_MBR_CellAssistanceInformation_1, + 2, /* Elements count */ + &asn_SPC_CellAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.h b/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.h new file mode 100644 index 0000000..f01c4f5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellAssistanceInformation.h @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellAssistanceInformation_H_ +#define _CellAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellAssistanceInformation_PR { + CellAssistanceInformation_PR_NOTHING, /* No components present */ + CellAssistanceInformation_PR_limited_list, + CellAssistanceInformation_PR_full_list + /* Extensions may appear below */ + +} CellAssistanceInformation_PR; +typedef enum CellAssistanceInformation__full_list { + CellAssistanceInformation__full_list_allServedNRcells = 0 + /* + * Enumeration is extensible + */ +} e_CellAssistanceInformation__full_list; + +/* Forward declarations */ +struct Limited_list; + +/* CellAssistanceInformation */ +typedef struct CellAssistanceInformation { + CellAssistanceInformation_PR present; + union CellAssistanceInformation_u { + struct Limited_list *limited_list; + long full_list; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellAssistanceInformation_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_full_list_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_CellAssistanceInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.c b/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.c new file mode 100644 index 0000000..b43f6f0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellBasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT, cellIdListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct CellBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P112, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_specs_1 = { + sizeof(struct CellBasedMDT), + offsetof(struct CellBasedMDT, _asn_ctx), + asn_MAP_CellBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedMDT = { + "CellBasedMDT", + "CellBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedMDT_tags_1, + sizeof(asn_DEF_CellBasedMDT_tags_1) + /sizeof(asn_DEF_CellBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_CellBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_CellBasedMDT_tags_1) + /sizeof(asn_DEF_CellBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_CellBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.h b/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.h new file mode 100644 index 0000000..fc5779b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellBasedMDT.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellBasedMDT_H_ +#define _CellBasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellIdListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellBasedMDT */ +typedef struct CellBasedMDT { + 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; +} CellBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_CellBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellBasedMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.c b/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.c new file mode 100644 index 0000000..ab68a5b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC, cellIdListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct CellBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P113, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_specs_1 = { + sizeof(struct CellBasedQMC), + offsetof(struct CellBasedQMC, _asn_ctx), + asn_MAP_CellBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedQMC = { + "CellBasedQMC", + "CellBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedQMC_tags_1, + sizeof(asn_DEF_CellBasedQMC_tags_1) + /sizeof(asn_DEF_CellBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_CellBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_CellBasedQMC_tags_1) + /sizeof(asn_DEF_CellBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_CellBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.h b/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.h new file mode 100644 index 0000000..383365a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellBasedQMC.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellBasedQMC_H_ +#define _CellBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellIdListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellBasedQMC */ +typedef struct CellBasedQMC { + CellIdListforQMC_t cellIdListforQMC; + 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; +} CellBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_CellBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.c b/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.c new file mode 100644 index 0000000..e706c0e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellCapacityClassValue.h" + +int +CellCapacityClassValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_CellCapacityClassValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 100 } /* (1..100,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CellCapacityClassValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellCapacityClassValue = { + "CellCapacityClassValue", + "CellCapacityClassValue", + &asn_OP_NativeInteger, + asn_DEF_CellCapacityClassValue_tags_1, + sizeof(asn_DEF_CellCapacityClassValue_tags_1) + /sizeof(asn_DEF_CellCapacityClassValue_tags_1[0]), /* 1 */ + asn_DEF_CellCapacityClassValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CellCapacityClassValue_tags_1) + /sizeof(asn_DEF_CellCapacityClassValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellCapacityClassValue_constr_1, CellCapacityClassValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.h b/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.h new file mode 100644 index 0000000..02f18b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellCapacityClassValue.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellCapacityClassValue_H_ +#define _CellCapacityClassValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellCapacityClassValue */ +typedef long CellCapacityClassValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellCapacityClassValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellCapacityClassValue; +asn_struct_free_f CellCapacityClassValue_free; +asn_struct_print_f CellCapacityClassValue_print; +asn_constr_check_f CellCapacityClassValue_constraint; +ber_type_decoder_f CellCapacityClassValue_decode_ber; +der_type_encoder_f CellCapacityClassValue_encode_der; +xer_type_decoder_f CellCapacityClassValue_decode_xer; +xer_type_encoder_f CellCapacityClassValue_encode_xer; +per_type_decoder_f CellCapacityClassValue_decode_uper; +per_type_encoder_f CellCapacityClassValue_encode_uper; +per_type_decoder_f CellCapacityClassValue_decode_aper; +per_type_encoder_f CellCapacityClassValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellCapacityClassValue_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c b/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c new file mode 100644 index 0000000..0ab8fae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellDeploymentStatusIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CellDeploymentStatusIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CellDeploymentStatusIndicator_value2enum_1[] = { + { 0, 23, "pre-change-notification" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CellDeploymentStatusIndicator_enum2value_1[] = { + 0 /* pre-change-notification(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CellDeploymentStatusIndicator_specs_1 = { + asn_MAP_CellDeploymentStatusIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CellDeploymentStatusIndicator_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_CellDeploymentStatusIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellDeploymentStatusIndicator = { + "CellDeploymentStatusIndicator", + "CellDeploymentStatusIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_CellDeploymentStatusIndicator_tags_1, + sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1) + /sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1[0]), /* 1 */ + asn_DEF_CellDeploymentStatusIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1) + /sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellDeploymentStatusIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CellDeploymentStatusIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h b/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h new file mode 100644 index 0000000..30b9fae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellDeploymentStatusIndicator_H_ +#define _CellDeploymentStatusIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellDeploymentStatusIndicator { + CellDeploymentStatusIndicator_pre_change_notification = 0 + /* + * Enumeration is extensible + */ +} e_CellDeploymentStatusIndicator; + +/* CellDeploymentStatusIndicator */ +typedef long CellDeploymentStatusIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellDeploymentStatusIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellDeploymentStatusIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_CellDeploymentStatusIndicator_specs_1; +asn_struct_free_f CellDeploymentStatusIndicator_free; +asn_struct_print_f CellDeploymentStatusIndicator_print; +asn_constr_check_f CellDeploymentStatusIndicator_constraint; +ber_type_decoder_f CellDeploymentStatusIndicator_decode_ber; +der_type_encoder_f CellDeploymentStatusIndicator_encode_der; +xer_type_decoder_f CellDeploymentStatusIndicator_decode_xer; +xer_type_encoder_f CellDeploymentStatusIndicator_encode_xer; +per_type_decoder_f CellDeploymentStatusIndicator_decode_uper; +per_type_encoder_f CellDeploymentStatusIndicator_encode_uper; +per_type_decoder_f CellDeploymentStatusIndicator_decode_aper; +per_type_encoder_f CellDeploymentStatusIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellDeploymentStatusIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.c b/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.c new file mode 100644 index 0000000..430117f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellIdListforMDT.h" + +#include "ECGI.h" +asn_per_constraints_t asn_PER_type_CellIdListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CellIdListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellIdListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CellIdListforMDT_specs_1 = { + sizeof(struct CellIdListforMDT), + offsetof(struct CellIdListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellIdListforMDT = { + "CellIdListforMDT", + "CellIdListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellIdListforMDT_tags_1, + sizeof(asn_DEF_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_CellIdListforMDT_tags_1[0]), /* 1 */ + asn_DEF_CellIdListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_CellIdListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellIdListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellIdListforMDT_1, + 1, /* Single element */ + &asn_SPC_CellIdListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.h b/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.h new file mode 100644 index 0000000..89e456b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellIdListforMDT.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellIdListforMDT_H_ +#define _CellIdListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* CellIdListforMDT */ +typedef struct CellIdListforMDT { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellIdListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellIdListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_CellIdListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_CellIdListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_CellIdListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellIdListforMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.c b/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.c new file mode 100644 index 0000000..70bda67 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellIdListforQMC.h" + +#include "ECGI.h" +asn_per_constraints_t asn_PER_type_CellIdListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CellIdListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellIdListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CellIdListforQMC_specs_1 = { + sizeof(struct CellIdListforQMC), + offsetof(struct CellIdListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellIdListforQMC = { + "CellIdListforQMC", + "CellIdListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellIdListforQMC_tags_1, + sizeof(asn_DEF_CellIdListforQMC_tags_1) + /sizeof(asn_DEF_CellIdListforQMC_tags_1[0]), /* 1 */ + asn_DEF_CellIdListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_CellIdListforQMC_tags_1) + /sizeof(asn_DEF_CellIdListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellIdListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellIdListforQMC_1, + 1, /* Single element */ + &asn_SPC_CellIdListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.h b/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.h new file mode 100644 index 0000000..22efa14 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellIdListforQMC.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellIdListforQMC_H_ +#define _CellIdListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* CellIdListforQMC */ +typedef struct CellIdListforQMC { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellIdListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellIdListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_CellIdListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_CellIdListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_CellIdListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellIdListforQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.c b/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.c new file mode 100644 index 0000000..308d755 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellInformation-Item.h" + +#include "UL-InterferenceOverloadIndication.h" +#include "UL-HighInterferenceIndicationInfo.h" +#include "RelativeNarrowbandTxPower.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellInformation_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 4, offsetof(struct CellInformation_Item, ul_InterferenceOverloadIndication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_InterferenceOverloadIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-InterferenceOverloadIndication" + }, + { ATF_POINTER, 3, offsetof(struct CellInformation_Item, ul_HighInterferenceIndicationInfo), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_HighInterferenceIndicationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-HighInterferenceIndicationInfo" + }, + { ATF_POINTER, 2, offsetof(struct CellInformation_Item, relativeNarrowbandTxPower), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RelativeNarrowbandTxPower, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "relativeNarrowbandTxPower" + }, + { ATF_POINTER, 1, offsetof(struct CellInformation_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellInformation_Item_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CellInformation_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-InterferenceOverloadIndication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-HighInterferenceIndicationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* relativeNarrowbandTxPower */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_specs_1 = { + sizeof(struct CellInformation_Item), + offsetof(struct CellInformation_Item, _asn_ctx), + asn_MAP_CellInformation_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CellInformation_Item_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_Item = { + "CellInformation-Item", + "CellInformation-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_Item_tags_1, + sizeof(asn_DEF_CellInformation_Item_tags_1) + /sizeof(asn_DEF_CellInformation_Item_tags_1[0]), /* 1 */ + asn_DEF_CellInformation_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellInformation_Item_tags_1) + /sizeof(asn_DEF_CellInformation_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_Item_1, + 5, /* Elements count */ + &asn_SPC_CellInformation_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.h b/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.h new file mode 100644 index 0000000..0a0c941 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellInformation-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellInformation_Item_H_ +#define _CellInformation_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UL_InterferenceOverloadIndication; +struct UL_HighInterferenceIndicationInfo; +struct RelativeNarrowbandTxPower; +struct ProtocolExtensionContainer; + +/* CellInformation-Item */ +typedef struct CellInformation_Item { + ECGI_t cell_ID; + struct UL_InterferenceOverloadIndication *ul_InterferenceOverloadIndication; /* OPTIONAL */ + struct UL_HighInterferenceIndicationInfo *ul_HighInterferenceIndicationInfo; /* OPTIONAL */ + struct RelativeNarrowbandTxPower *relativeNarrowbandTxPower; /* 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; +} CellInformation_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellInformation_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellInformation-List.c b/E2Manager/asn1codec/e2ap_engine/CellInformation-List.c new file mode 100644 index 0000000..5874b21 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellInformation-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellInformation-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellInformation_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellInformation_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellInformation_List_specs_1 = { + sizeof(struct CellInformation_List), + offsetof(struct CellInformation_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_List = { + "CellInformation-List", + "CellInformation-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellInformation_List_tags_1, + sizeof(asn_DEF_CellInformation_List_tags_1) + /sizeof(asn_DEF_CellInformation_List_tags_1[0]), /* 1 */ + asn_DEF_CellInformation_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellInformation_List_tags_1) + /sizeof(asn_DEF_CellInformation_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellInformation_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellInformation_List_1, + 1, /* Single element */ + &asn_SPC_CellInformation_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellInformation-List.h b/E2Manager/asn1codec/e2ap_engine/CellInformation-List.h new file mode 100644 index 0000000..e868b60 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellInformation-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellInformation_List_H_ +#define _CellInformation_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellInformation-List */ +typedef struct CellInformation_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellInformation_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.c b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.c new file mode 100644 index 0000000..619f1a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellMeasurementResult-Item.h" + +#include "HWLoadIndicator.h" +#include "S1TNLLoadIndicator.h" +#include "RadioResourceStatus.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 4, offsetof(struct CellMeasurementResult_Item, hWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HWLoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hWLoadIndicator" + }, + { ATF_POINTER, 3, offsetof(struct CellMeasurementResult_Item, s1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1TNLLoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1TNLLoadIndicator" + }, + { ATF_POINTER, 2, offsetof(struct CellMeasurementResult_Item, radioResourceStatus), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioResourceStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioResourceStatus" + }, + { ATF_POINTER, 1, offsetof(struct CellMeasurementResult_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellMeasurementResult_Item_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* s1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* radioResourceStatus */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_specs_1 = { + sizeof(struct CellMeasurementResult_Item), + offsetof(struct CellMeasurementResult_Item, _asn_ctx), + asn_MAP_CellMeasurementResult_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CellMeasurementResult_Item_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item = { + "CellMeasurementResult-Item", + "CellMeasurementResult-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_Item_tags_1, + sizeof(asn_DEF_CellMeasurementResult_Item_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_Item_tags_1[0]), /* 1 */ + asn_DEF_CellMeasurementResult_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_Item_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_Item_1, + 5, /* Elements count */ + &asn_SPC_CellMeasurementResult_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.h b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.h new file mode 100644 index 0000000..592c324 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellMeasurementResult_Item_H_ +#define _CellMeasurementResult_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HWLoadIndicator; +struct S1TNLLoadIndicator; +struct RadioResourceStatus; +struct ProtocolExtensionContainer; + +/* CellMeasurementResult-Item */ +typedef struct CellMeasurementResult_Item { + ECGI_t cell_ID; + struct HWLoadIndicator *hWLoadIndicator; /* OPTIONAL */ + struct S1TNLLoadIndicator *s1TNLLoadIndicator; /* OPTIONAL */ + struct RadioResourceStatus *radioResourceStatus; /* 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; +} CellMeasurementResult_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellMeasurementResult_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.c b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.c new file mode 100644 index 0000000..bd48a65 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellMeasurementResult-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellMeasurementResult_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellMeasurementResult_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellMeasurementResult_List_specs_1 = { + sizeof(struct CellMeasurementResult_List), + offsetof(struct CellMeasurementResult_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_List = { + "CellMeasurementResult-List", + "CellMeasurementResult-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellMeasurementResult_List_tags_1, + sizeof(asn_DEF_CellMeasurementResult_List_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_List_tags_1[0]), /* 1 */ + asn_DEF_CellMeasurementResult_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_List_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellMeasurementResult_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellMeasurementResult_List_1, + 1, /* Single element */ + &asn_SPC_CellMeasurementResult_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.h b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.h new file mode 100644 index 0000000..b8d16ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellMeasurementResult-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellMeasurementResult_List_H_ +#define _CellMeasurementResult_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellMeasurementResult-List */ +typedef struct CellMeasurementResult_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellMeasurementResult_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.c b/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.c new file mode 100644 index 0000000..19ca257 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellReplacingInfo.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellReplacingInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo, replacingCellsList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReplacingCellsList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "replacingCellsList" + }, + { ATF_POINTER, 1, offsetof(struct CellReplacingInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P114, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellReplacingInfo_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellReplacingInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellReplacingInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* replacingCellsList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_specs_1 = { + sizeof(struct CellReplacingInfo), + offsetof(struct CellReplacingInfo, _asn_ctx), + asn_MAP_CellReplacingInfo_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellReplacingInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo = { + "CellReplacingInfo", + "CellReplacingInfo", + &asn_OP_SEQUENCE, + asn_DEF_CellReplacingInfo_tags_1, + sizeof(asn_DEF_CellReplacingInfo_tags_1) + /sizeof(asn_DEF_CellReplacingInfo_tags_1[0]), /* 1 */ + asn_DEF_CellReplacingInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_CellReplacingInfo_tags_1) + /sizeof(asn_DEF_CellReplacingInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellReplacingInfo_1, + 2, /* Elements count */ + &asn_SPC_CellReplacingInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.h b/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.h new file mode 100644 index 0000000..c32f88d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellReplacingInfo.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellReplacingInfo_H_ +#define _CellReplacingInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReplacingCellsList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellReplacingInfo */ +typedef struct CellReplacingInfo { + ReplacingCellsList_t replacingCellsList; + 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; +} CellReplacingInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_CellReplacingInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellReplacingInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.c b/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.c new file mode 100644 index 0000000..0f96a7e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellReportingIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CellReportingIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CellReportingIndicator_value2enum_1[] = { + { 0, 12, "stop-request" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CellReportingIndicator_enum2value_1[] = { + 0 /* stop-request(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CellReportingIndicator_specs_1 = { + asn_MAP_CellReportingIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CellReportingIndicator_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_CellReportingIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellReportingIndicator = { + "CellReportingIndicator", + "CellReportingIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_CellReportingIndicator_tags_1, + sizeof(asn_DEF_CellReportingIndicator_tags_1) + /sizeof(asn_DEF_CellReportingIndicator_tags_1[0]), /* 1 */ + asn_DEF_CellReportingIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_CellReportingIndicator_tags_1) + /sizeof(asn_DEF_CellReportingIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellReportingIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CellReportingIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.h b/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.h new file mode 100644 index 0000000..16c984a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellReportingIndicator.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellReportingIndicator_H_ +#define _CellReportingIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellReportingIndicator { + CellReportingIndicator_stop_request = 0 + /* + * Enumeration is extensible + */ +} e_CellReportingIndicator; + +/* CellReportingIndicator */ +typedef long CellReportingIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellReportingIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellReportingIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_CellReportingIndicator_specs_1; +asn_struct_free_f CellReportingIndicator_free; +asn_struct_print_f CellReportingIndicator_print; +asn_constr_check_f CellReportingIndicator_constraint; +ber_type_decoder_f CellReportingIndicator_decode_ber; +der_type_encoder_f CellReportingIndicator_encode_der; +xer_type_decoder_f CellReportingIndicator_decode_xer; +xer_type_encoder_f CellReportingIndicator_encode_xer; +per_type_decoder_f CellReportingIndicator_decode_uper; +per_type_encoder_f CellReportingIndicator_encode_uper; +per_type_decoder_f CellReportingIndicator_decode_aper; +per_type_encoder_f CellReportingIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellReportingIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.c b/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.c new file mode 100644 index 0000000..65af8a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellToReport-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellToReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 1, offsetof(struct CellToReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellToReport_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellToReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_specs_1 = { + sizeof(struct CellToReport_Item), + offsetof(struct CellToReport_Item, _asn_ctx), + asn_MAP_CellToReport_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellToReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_Item = { + "CellToReport-Item", + "CellToReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_Item_tags_1, + sizeof(asn_DEF_CellToReport_Item_tags_1) + /sizeof(asn_DEF_CellToReport_Item_tags_1[0]), /* 1 */ + asn_DEF_CellToReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellToReport_Item_tags_1) + /sizeof(asn_DEF_CellToReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_Item_1, + 2, /* Elements count */ + &asn_SPC_CellToReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.h b/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.h new file mode 100644 index 0000000..9146597 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellToReport-Item.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellToReport_Item_H_ +#define _CellToReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellToReport-Item */ +typedef struct CellToReport_Item { + ECGI_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; +} CellToReport_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellToReport_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellToReport-List.c b/E2Manager/asn1codec/e2ap_engine/CellToReport-List.c new file mode 100644 index 0000000..c5a028c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellToReport-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellToReport-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellToReport_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellToReport_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellToReport_List_specs_1 = { + sizeof(struct CellToReport_List), + offsetof(struct CellToReport_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_List = { + "CellToReport-List", + "CellToReport-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellToReport_List_tags_1, + sizeof(asn_DEF_CellToReport_List_tags_1) + /sizeof(asn_DEF_CellToReport_List_tags_1[0]), /* 1 */ + asn_DEF_CellToReport_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellToReport_List_tags_1) + /sizeof(asn_DEF_CellToReport_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellToReport_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellToReport_List_1, + 1, /* Single element */ + &asn_SPC_CellToReport_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellToReport-List.h b/E2Manager/asn1codec/e2ap_engine/CellToReport-List.h new file mode 100644 index 0000000..f1bcbe3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellToReport-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellToReport_List_H_ +#define _CellToReport_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellToReport-List */ +typedef struct CellToReport_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellToReport_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CellType.c b/E2Manager/asn1codec/e2ap_engine/CellType.c new file mode 100644 index 0000000..e33cada --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellType.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellType.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellType, cell_Size), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Cell_Size, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-Size" + }, + { ATF_POINTER, 1, offsetof(struct CellType, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P115, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellType_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-Size */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellType_specs_1 = { + sizeof(struct CellType), + offsetof(struct CellType, _asn_ctx), + asn_MAP_CellType_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellType_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellType = { + "CellType", + "CellType", + &asn_OP_SEQUENCE, + asn_DEF_CellType_tags_1, + sizeof(asn_DEF_CellType_tags_1) + /sizeof(asn_DEF_CellType_tags_1[0]), /* 1 */ + asn_DEF_CellType_tags_1, /* Same as above */ + sizeof(asn_DEF_CellType_tags_1) + /sizeof(asn_DEF_CellType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellType_1, + 2, /* Elements count */ + &asn_SPC_CellType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CellType.h b/E2Manager/asn1codec/e2ap_engine/CellType.h new file mode 100644 index 0000000..10e699c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CellType.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellType_H_ +#define _CellType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cell-Size.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellType */ +typedef struct CellType { + 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; +} CellType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellType; +extern asn_SEQUENCE_specifics_t asn_SPC_CellType_specs_1; +extern asn_TYPE_member_t asn_MBR_CellType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.c b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.c new file mode 100644 index 0000000..22b677f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPHypothesisSet.h" + +#include "CoMPHypothesisSetItem.h" +asn_per_constraints_t asn_PER_type_CoMPHypothesisSet_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoMPHypothesisSet_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPHypothesisSetItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPHypothesisSet_specs_1 = { + sizeof(struct CoMPHypothesisSet), + offsetof(struct CoMPHypothesisSet, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSet = { + "CoMPHypothesisSet", + "CoMPHypothesisSet", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPHypothesisSet_tags_1, + sizeof(asn_DEF_CoMPHypothesisSet_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSet_tags_1[0]), /* 1 */ + asn_DEF_CoMPHypothesisSet_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSet_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSet_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPHypothesisSet_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPHypothesisSet_1, + 1, /* Single element */ + &asn_SPC_CoMPHypothesisSet_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.h b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.h new file mode 100644 index 0000000..8a89e5a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSet.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPHypothesisSet_H_ +#define _CoMPHypothesisSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CoMPHypothesisSetItem; + +/* CoMPHypothesisSet */ +typedef struct CoMPHypothesisSet { + A_SEQUENCE_OF(struct CoMPHypothesisSetItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPHypothesisSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSet; +extern asn_SET_OF_specifics_t asn_SPC_CoMPHypothesisSet_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSet_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPHypothesisSet_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPHypothesisSet_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c new file mode 100644 index 0000000..08f3f5c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c @@ -0,0 +1,128 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPHypothesisSetItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_coMPHypothesis_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* 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_coMPHypothesis_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem, coMPCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem, coMPHypothesis), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_coMPHypothesis_constr_3, memb_coMPHypothesis_constraint_1 }, + 0, 0, /* No default value */ + "coMPHypothesis" + }, + { ATF_POINTER, 1, offsetof(struct CoMPHypothesisSetItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P117, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CoMPHypothesisSetItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSetItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPHypothesisSetItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coMPHypothesis */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_specs_1 = { + sizeof(struct CoMPHypothesisSetItem), + offsetof(struct CoMPHypothesisSetItem, _asn_ctx), + asn_MAP_CoMPHypothesisSetItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CoMPHypothesisSetItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem = { + "CoMPHypothesisSetItem", + "CoMPHypothesisSetItem", + &asn_OP_SEQUENCE, + asn_DEF_CoMPHypothesisSetItem_tags_1, + sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1[0]), /* 1 */ + asn_DEF_CoMPHypothesisSetItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPHypothesisSetItem_1, + 3, /* Elements count */ + &asn_SPC_CoMPHypothesisSetItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h new file mode 100644 index 0000000..57d18b6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPHypothesisSetItem_H_ +#define _CoMPHypothesisSetItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CoMPHypothesisSetItem */ +typedef struct CoMPHypothesisSetItem { + ECGI_t coMPCellID; + BIT_STRING_t coMPHypothesis; + 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; +} CoMPHypothesisSetItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPHypothesisSetItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformation.c b/E2Manager/asn1codec/e2ap_engine/CoMPInformation.c new file mode 100644 index 0000000..bbccf7a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformation.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CoMPInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation, coMPInformationItem), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPInformationItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPInformationItem" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation, coMPInformationStartTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPInformationStartTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPInformationStartTime" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P118, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CoMPInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CoMPInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPInformationItem */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coMPInformationStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_specs_1 = { + sizeof(struct CoMPInformation), + offsetof(struct CoMPInformation, _asn_ctx), + asn_MAP_CoMPInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CoMPInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformation = { + "CoMPInformation", + "CoMPInformation", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformation_tags_1, + sizeof(asn_DEF_CoMPInformation_tags_1) + /sizeof(asn_DEF_CoMPInformation_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformation_tags_1) + /sizeof(asn_DEF_CoMPInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformation_1, + 3, /* Elements count */ + &asn_SPC_CoMPInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformation.h b/E2Manager/asn1codec/e2ap_engine/CoMPInformation.h new file mode 100644 index 0000000..c94235e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformation.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformation_H_ +#define _CoMPInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CoMPInformationItem.h" +#include "CoMPInformationStartTime.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CoMPInformation */ +typedef struct CoMPInformation { + CoMPInformationItem_t coMPInformationItem; + CoMPInformationStartTime_t coMPInformationStartTime; + 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; +} CoMPInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.c b/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.c new file mode 100644 index 0000000..bf4869c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.c @@ -0,0 +1,133 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformationItem.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CoMPInformationItem_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem__Member, coMPHypothesisSet), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPHypothesisSet, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPHypothesisSet" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem__Member, benefitMetric), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BenefitMetric, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "benefitMetric" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformationItem__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P119, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPHypothesisSet */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* benefitMetric */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CoMPInformationItem__Member), + offsetof(struct CoMPInformationItem__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationItem_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPInformationItem_specs_1 = { + sizeof(struct CoMPInformationItem), + offsetof(struct CoMPInformationItem, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem = { + "CoMPInformationItem", + "CoMPInformationItem", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPInformationItem_tags_1, + sizeof(asn_DEF_CoMPInformationItem_tags_1) + /sizeof(asn_DEF_CoMPInformationItem_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformationItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformationItem_tags_1) + /sizeof(asn_DEF_CoMPInformationItem_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPInformationItem_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPInformationItem_1, + 1, /* Single element */ + &asn_SPC_CoMPInformationItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.h b/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.h new file mode 100644 index 0000000..a90712b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformationItem.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformationItem_H_ +#define _CoMPInformationItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "CoMPHypothesisSet.h" +#include "BenefitMetric.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CoMPInformationItem__Member { + CoMPHypothesisSet_t coMPHypothesisSet; + BenefitMetric_t benefitMetric; + 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; +} CoMPInformationItem__Member; + +/* CoMPInformationItem */ +typedef struct CoMPInformationItem { + A_SEQUENCE_OF(CoMPInformationItem__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem; +extern asn_SET_OF_specifics_t asn_SPC_CoMPInformationItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformationItem_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPInformationItem_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformationItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.c b/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.c new file mode 100644 index 0000000..27bb2c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.c @@ -0,0 +1,193 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformationStartTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_startSFN_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* 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_startSubframeNumber_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9)) { + /* 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_startSFN_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 0, 1023 } /* (0..1023,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startSubframeNumber_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CoMPInformationStartTime_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (SIZE(0..1)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime__Member, startSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSFN_constr_3, memb_startSFN_constraint_2 }, + 0, 0, /* No default value */ + "startSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime__Member, startSubframeNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSubframeNumber_constr_4, memb_startSubframeNumber_constraint_2 }, + 0, 0, /* No default value */ + "startSubframeNumber" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformationStartTime__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P120, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startSubframeNumber */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CoMPInformationStartTime__Member), + offsetof(struct CoMPInformationStartTime__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationStartTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPInformationStartTime_specs_1 = { + sizeof(struct CoMPInformationStartTime), + offsetof(struct CoMPInformationStartTime, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime = { + "CoMPInformationStartTime", + "CoMPInformationStartTime", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPInformationStartTime_tags_1, + sizeof(asn_DEF_CoMPInformationStartTime_tags_1) + /sizeof(asn_DEF_CoMPInformationStartTime_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformationStartTime_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformationStartTime_tags_1) + /sizeof(asn_DEF_CoMPInformationStartTime_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPInformationStartTime_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPInformationStartTime_1, + 1, /* Single element */ + &asn_SPC_CoMPInformationStartTime_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.h b/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.h new file mode 100644 index 0000000..c0b1ca4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoMPInformationStartTime.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformationStartTime_H_ +#define _CoMPInformationStartTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CoMPInformationStartTime__Member { + long startSFN; + long startSubframeNumber; + 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; +} CoMPInformationStartTime__Member; + +/* CoMPInformationStartTime */ +typedef struct CoMPInformationStartTime { + A_SEQUENCE_OF(CoMPInformationStartTime__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationStartTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime; +extern asn_SET_OF_specifics_t asn_SPC_CoMPInformationStartTime_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPInformationStartTime_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformationStartTime_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c new file mode 100644 index 0000000..3bf80ec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompleteFailureCauseInformation-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item, measurementFailureCause_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementFailureCause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailureCause-List" + }, + { ATF_POINTER, 1, offsetof(struct CompleteFailureCauseInformation_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompleteFailureCauseInformation_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measurementFailureCause-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_specs_1 = { + sizeof(struct CompleteFailureCauseInformation_Item), + offsetof(struct CompleteFailureCauseInformation_Item, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompleteFailureCauseInformation_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item = { + "CompleteFailureCauseInformation-Item", + "CompleteFailureCauseInformation-Item", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_Item_tags_1, + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_Item_1, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h new file mode 100644 index 0000000..4cd1aa8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompleteFailureCauseInformation_Item_H_ +#define _CompleteFailureCauseInformation_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "MeasurementFailureCause-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompleteFailureCauseInformation-Item */ +typedef struct CompleteFailureCauseInformation_Item { + ECGI_t cell_ID; + MeasurementFailureCause_List_t measurementFailureCause_List; + 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; +} CompleteFailureCauseInformation_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompleteFailureCauseInformation_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c new file mode 100644 index 0000000..4e7ff07 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompleteFailureCauseInformation-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CompleteFailureCauseInformation_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CompleteFailureCauseInformation_List_specs_1 = { + sizeof(struct CompleteFailureCauseInformation_List), + offsetof(struct CompleteFailureCauseInformation_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_List = { + "CompleteFailureCauseInformation-List", + "CompleteFailureCauseInformation-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CompleteFailureCauseInformation_List_tags_1, + sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CompleteFailureCauseInformation_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CompleteFailureCauseInformation_List_1, + 1, /* Single element */ + &asn_SPC_CompleteFailureCauseInformation_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h new file mode 100644 index 0000000..4850a53 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompleteFailureCauseInformation_List_H_ +#define _CompleteFailureCauseInformation_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CompleteFailureCauseInformation-List */ +typedef struct CompleteFailureCauseInformation_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompleteFailureCauseInformation_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.c b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.c new file mode 100644 index 0000000..40958b0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompositeAvailableCapacity.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_1[] = { + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacity, cellCapacityClassValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellCapacityClassValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellCapacityClassValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity, capacityValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CapacityValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "capacityValue" + }, + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacity, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P121, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompositeAvailableCapacity_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellCapacityClassValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* capacityValue */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_specs_1 = { + sizeof(struct CompositeAvailableCapacity), + offsetof(struct CompositeAvailableCapacity, _asn_ctx), + asn_MAP_CompositeAvailableCapacity_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompositeAvailableCapacity_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity = { + "CompositeAvailableCapacity", + "CompositeAvailableCapacity", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacity_tags_1, + sizeof(asn_DEF_CompositeAvailableCapacity_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacity_tags_1[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacity_tags_1, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacity_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacity_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacity_1, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacity_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.h b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.h new file mode 100644 index 0000000..1ed0140 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacity.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompositeAvailableCapacity_H_ +#define _CompositeAvailableCapacity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellCapacityClassValue.h" +#include "CapacityValue.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompositeAvailableCapacity */ +typedef struct CompositeAvailableCapacity { + CellCapacityClassValue_t *cellCapacityClassValue; /* OPTIONAL */ + CapacityValue_t capacityValue; + 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; +} CompositeAvailableCapacity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_specs_1; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompositeAvailableCapacity_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c new file mode 100644 index 0000000..f3a143b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompositeAvailableCapacityGroup.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup, dL_CompositeAvailableCapacity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CompositeAvailableCapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-CompositeAvailableCapacity" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup, uL_CompositeAvailableCapacity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CompositeAvailableCapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-CompositeAvailableCapacity" + }, + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacityGroup, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P122, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompositeAvailableCapacityGroup_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacityGroup_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacityGroup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-CompositeAvailableCapacity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-CompositeAvailableCapacity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_specs_1 = { + sizeof(struct CompositeAvailableCapacityGroup), + offsetof(struct CompositeAvailableCapacityGroup, _asn_ctx), + asn_MAP_CompositeAvailableCapacityGroup_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompositeAvailableCapacityGroup_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup = { + "CompositeAvailableCapacityGroup", + "CompositeAvailableCapacityGroup", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacityGroup_tags_1, + sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacityGroup_tags_1, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacityGroup_1, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacityGroup_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h new file mode 100644 index 0000000..a597b8b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompositeAvailableCapacityGroup_H_ +#define _CompositeAvailableCapacityGroup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CompositeAvailableCapacity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompositeAvailableCapacityGroup */ +typedef struct CompositeAvailableCapacityGroup { + CompositeAvailableCapacity_t dL_CompositeAvailableCapacity; + CompositeAvailableCapacity_t uL_CompositeAvailableCapacity; + 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; +} CompositeAvailableCapacityGroup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_specs_1; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompositeAvailableCapacityGroup_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Correlation-ID.c b/E2Manager/asn1codec/e2ap_engine/Correlation-ID.c new file mode 100644 index 0000000..738cf44 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Correlation-ID.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Correlation-ID.h" + +int +Correlation_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Correlation_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Correlation_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Correlation_ID = { + "Correlation-ID", + "Correlation-ID", + &asn_OP_OCTET_STRING, + asn_DEF_Correlation_ID_tags_1, + sizeof(asn_DEF_Correlation_ID_tags_1) + /sizeof(asn_DEF_Correlation_ID_tags_1[0]), /* 1 */ + asn_DEF_Correlation_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Correlation_ID_tags_1) + /sizeof(asn_DEF_Correlation_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Correlation_ID_constr_1, Correlation_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Correlation-ID.h b/E2Manager/asn1codec/e2ap_engine/Correlation-ID.h new file mode 100644 index 0000000..0241adc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Correlation-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Correlation_ID_H_ +#define _Correlation_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Correlation-ID */ +typedef OCTET_STRING_t Correlation_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Correlation_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Correlation_ID; +asn_struct_free_f Correlation_ID_free; +asn_struct_print_f Correlation_ID_print; +asn_constr_check_f Correlation_ID_constraint; +ber_type_decoder_f Correlation_ID_decode_ber; +der_type_encoder_f Correlation_ID_encode_der; +xer_type_decoder_f Correlation_ID_decode_xer; +xer_type_encoder_f Correlation_ID_encode_xer; +per_type_decoder_f Correlation_ID_decode_uper; +per_type_encoder_f Correlation_ID_encode_uper; +per_type_decoder_f Correlation_ID_decode_aper; +per_type_encoder_f Correlation_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Correlation_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.c b/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.c new file mode 100644 index 0000000..3e88efd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.c @@ -0,0 +1,132 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoverageModification-Item.h" + +#include "CellReplacingInfo.h" +static int +memb_coverageState_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_coverageState_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoverageModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoverageModification_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoverageModification_Item, coverageState), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_coverageState_constr_3, memb_coverageState_constraint_1 }, + 0, 0, /* No default value */ + "coverageState" + }, + { ATF_POINTER, 2, offsetof(struct CoverageModification_Item, cellDeploymentStatusIndicator), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellDeploymentStatusIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellDeploymentStatusIndicator" + }, + { ATF_POINTER, 1, offsetof(struct CoverageModification_Item, cellReplacingInfo), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellReplacingInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellReplacingInfo" + }, +}; +static const int asn_MAP_CoverageModification_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_CoverageModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoverageModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coverageState */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellDeploymentStatusIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* cellReplacingInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoverageModification_Item_specs_1 = { + sizeof(struct CoverageModification_Item), + offsetof(struct CoverageModification_Item, _asn_ctx), + asn_MAP_CoverageModification_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_CoverageModification_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoverageModification_Item = { + "CoverageModification-Item", + "CoverageModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_CoverageModification_Item_tags_1, + sizeof(asn_DEF_CoverageModification_Item_tags_1) + /sizeof(asn_DEF_CoverageModification_Item_tags_1[0]), /* 1 */ + asn_DEF_CoverageModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CoverageModification_Item_tags_1) + /sizeof(asn_DEF_CoverageModification_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoverageModification_Item_1, + 4, /* Elements count */ + &asn_SPC_CoverageModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.h b/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.h new file mode 100644 index 0000000..84ca541 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoverageModification-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoverageModification_Item_H_ +#define _CoverageModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "NativeInteger.h" +#include "CellDeploymentStatusIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CellReplacingInfo; + +/* CoverageModification-Item */ +typedef struct CoverageModification_Item { + ECGI_t eCGI; + long coverageState; + CellDeploymentStatusIndicator_t *cellDeploymentStatusIndicator; /* OPTIONAL */ + struct CellReplacingInfo *cellReplacingInfo; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoverageModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoverageModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_CoverageModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_CoverageModification_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoverageModification_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.c b/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.c new file mode 100644 index 0000000..df70038 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoverageModificationList.h" + +#include "CoverageModification-Item.h" +asn_per_constraints_t asn_PER_type_CoverageModificationList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoverageModificationList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoverageModification_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoverageModificationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoverageModificationList_specs_1 = { + sizeof(struct CoverageModificationList), + offsetof(struct CoverageModificationList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoverageModificationList = { + "CoverageModificationList", + "CoverageModificationList", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoverageModificationList_tags_1, + sizeof(asn_DEF_CoverageModificationList_tags_1) + /sizeof(asn_DEF_CoverageModificationList_tags_1[0]), /* 1 */ + asn_DEF_CoverageModificationList_tags_1, /* Same as above */ + sizeof(asn_DEF_CoverageModificationList_tags_1) + /sizeof(asn_DEF_CoverageModificationList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoverageModificationList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoverageModificationList_1, + 1, /* Single element */ + &asn_SPC_CoverageModificationList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.h b/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.h new file mode 100644 index 0000000..be50e43 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CoverageModificationList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoverageModificationList_H_ +#define _CoverageModificationList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CoverageModification_Item; + +/* CoverageModificationList */ +typedef struct CoverageModificationList { + A_SEQUENCE_OF(struct CoverageModification_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoverageModificationList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoverageModificationList; +extern asn_SET_OF_specifics_t asn_SPC_CoverageModificationList_specs_1; +extern asn_TYPE_member_t asn_MBR_CoverageModificationList_1[1]; +extern asn_per_constraints_t asn_PER_type_CoverageModificationList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoverageModificationList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Criticality.c b/E2Manager/asn1codec/e2ap_engine/Criticality.c new file mode 100644 index 0000000..5e3d244 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Criticality.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Criticality.h b/E2Manager/asn1codec/e2ap_engine/Criticality.h new file mode 100644 index 0000000..52f4674 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Criticality.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..3e939fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,143 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfError" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics_IE_List__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P127, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (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_Member_specs_2 = { + sizeof(struct CriticalityDiagnostics_IE_List__Member), + offsetof(struct CriticalityDiagnostics_IE_List__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..c9131c3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CriticalityDiagnostics_IE_List__Member { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + 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; +} CriticalityDiagnostics_IE_List__Member; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(CriticalityDiagnostics_IE_List__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.c b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.c new file mode 100644 index 0000000..254356c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.c @@ -0,0 +1,113 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics.h" + +#include "CriticalityDiagnostics-IE-List.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P126, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.h b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.h new file mode 100644 index 0000000..62b91ed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CriticalityDiagnostics.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_List; +struct ProtocolExtensionContainer; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode; /* OPTIONAL */ + TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + Criticality_t *procedureCriticality; /* OPTIONAL */ + struct 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; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.c b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.c new file mode 100644 index 0000000..73df1b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CyclicPrefixDL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CyclicPrefixDL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CyclicPrefixDL_value2enum_1[] = { + { 0, 6, "normal" }, + { 1, 8, "extended" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CyclicPrefixDL_enum2value_1[] = { + 1, /* extended(1) */ + 0 /* normal(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixDL_specs_1 = { + asn_MAP_CyclicPrefixDL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CyclicPrefixDL_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_CyclicPrefixDL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CyclicPrefixDL = { + "CyclicPrefixDL", + "CyclicPrefixDL", + &asn_OP_NativeEnumerated, + asn_DEF_CyclicPrefixDL_tags_1, + sizeof(asn_DEF_CyclicPrefixDL_tags_1) + /sizeof(asn_DEF_CyclicPrefixDL_tags_1[0]), /* 1 */ + asn_DEF_CyclicPrefixDL_tags_1, /* Same as above */ + sizeof(asn_DEF_CyclicPrefixDL_tags_1) + /sizeof(asn_DEF_CyclicPrefixDL_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CyclicPrefixDL_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CyclicPrefixDL_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.h b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.h new file mode 100644 index 0000000..33c4bd2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixDL.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CyclicPrefixDL_H_ +#define _CyclicPrefixDL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CyclicPrefixDL { + CyclicPrefixDL_normal = 0, + CyclicPrefixDL_extended = 1 + /* + * Enumeration is extensible + */ +} e_CyclicPrefixDL; + +/* CyclicPrefixDL */ +typedef long CyclicPrefixDL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CyclicPrefixDL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CyclicPrefixDL; +extern const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixDL_specs_1; +asn_struct_free_f CyclicPrefixDL_free; +asn_struct_print_f CyclicPrefixDL_print; +asn_constr_check_f CyclicPrefixDL_constraint; +ber_type_decoder_f CyclicPrefixDL_decode_ber; +der_type_encoder_f CyclicPrefixDL_encode_der; +xer_type_decoder_f CyclicPrefixDL_decode_xer; +xer_type_encoder_f CyclicPrefixDL_encode_xer; +per_type_decoder_f CyclicPrefixDL_decode_uper; +per_type_encoder_f CyclicPrefixDL_encode_uper; +per_type_decoder_f CyclicPrefixDL_decode_aper; +per_type_encoder_f CyclicPrefixDL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CyclicPrefixDL_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.c b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.c new file mode 100644 index 0000000..6a06912 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CyclicPrefixUL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CyclicPrefixUL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CyclicPrefixUL_value2enum_1[] = { + { 0, 6, "normal" }, + { 1, 8, "extended" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CyclicPrefixUL_enum2value_1[] = { + 1, /* extended(1) */ + 0 /* normal(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixUL_specs_1 = { + asn_MAP_CyclicPrefixUL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CyclicPrefixUL_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_CyclicPrefixUL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CyclicPrefixUL = { + "CyclicPrefixUL", + "CyclicPrefixUL", + &asn_OP_NativeEnumerated, + asn_DEF_CyclicPrefixUL_tags_1, + sizeof(asn_DEF_CyclicPrefixUL_tags_1) + /sizeof(asn_DEF_CyclicPrefixUL_tags_1[0]), /* 1 */ + asn_DEF_CyclicPrefixUL_tags_1, /* Same as above */ + sizeof(asn_DEF_CyclicPrefixUL_tags_1) + /sizeof(asn_DEF_CyclicPrefixUL_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CyclicPrefixUL_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CyclicPrefixUL_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.h b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.h new file mode 100644 index 0000000..ae56869 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/CyclicPrefixUL.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CyclicPrefixUL_H_ +#define _CyclicPrefixUL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CyclicPrefixUL { + CyclicPrefixUL_normal = 0, + CyclicPrefixUL_extended = 1 + /* + * Enumeration is extensible + */ +} e_CyclicPrefixUL; + +/* CyclicPrefixUL */ +typedef long CyclicPrefixUL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CyclicPrefixUL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CyclicPrefixUL; +extern const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixUL_specs_1; +asn_struct_free_f CyclicPrefixUL_free; +asn_struct_print_f CyclicPrefixUL_print; +asn_constr_check_f CyclicPrefixUL_constraint; +ber_type_decoder_f CyclicPrefixUL_decode_ber; +der_type_encoder_f CyclicPrefixUL_encode_der; +xer_type_decoder_f CyclicPrefixUL_decode_xer; +xer_type_encoder_f CyclicPrefixUL_encode_xer; +per_type_decoder_f CyclicPrefixUL_decode_uper; +per_type_encoder_f CyclicPrefixUL_encode_uper; +per_type_decoder_f CyclicPrefixUL_decode_aper; +per_type_encoder_f CyclicPrefixUL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CyclicPrefixUL_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.c b/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.c new file mode 100644 index 0000000..2047544 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-ABS-status.h" + +int +DL_ABS_status_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DL_ABS_status_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_ABS_status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_ABS_status = { + "DL-ABS-status", + "DL-ABS-status", + &asn_OP_NativeInteger, + asn_DEF_DL_ABS_status_tags_1, + sizeof(asn_DEF_DL_ABS_status_tags_1) + /sizeof(asn_DEF_DL_ABS_status_tags_1[0]), /* 1 */ + asn_DEF_DL_ABS_status_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_ABS_status_tags_1) + /sizeof(asn_DEF_DL_ABS_status_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_ABS_status_constr_1, DL_ABS_status_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.h b/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.h new file mode 100644 index 0000000..360a8b6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-ABS-status.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_ABS_status_H_ +#define _DL_ABS_status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-ABS-status */ +typedef long DL_ABS_status_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_ABS_status_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_ABS_status; +asn_struct_free_f DL_ABS_status_free; +asn_struct_print_f DL_ABS_status_print; +asn_constr_check_f DL_ABS_status_constraint; +ber_type_decoder_f DL_ABS_status_decode_ber; +der_type_encoder_f DL_ABS_status_encode_der; +xer_type_decoder_f DL_ABS_status_decode_xer; +xer_type_encoder_f DL_ABS_status_encode_xer; +per_type_decoder_f DL_ABS_status_decode_uper; +per_type_encoder_f DL_ABS_status_encode_uper; +per_type_decoder_f DL_ABS_status_decode_aper; +per_type_encoder_f DL_ABS_status_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_ABS_status_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.c b/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.c new file mode 100644 index 0000000..d14256c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-Forwarding.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_Forwarding_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DL_Forwarding_value2enum_1[] = { + { 0, 21, "dL-forwardingProposed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DL_Forwarding_enum2value_1[] = { + 0 /* dL-forwardingProposed(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DL_Forwarding_specs_1 = { + asn_MAP_DL_Forwarding_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_DL_Forwarding_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_Forwarding = { + "DL-Forwarding", + "DL-Forwarding", + &asn_OP_NativeEnumerated, + asn_DEF_DL_Forwarding_tags_1, + sizeof(asn_DEF_DL_Forwarding_tags_1) + /sizeof(asn_DEF_DL_Forwarding_tags_1[0]), /* 1 */ + asn_DEF_DL_Forwarding_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_Forwarding_tags_1) + /sizeof(asn_DEF_DL_Forwarding_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_Forwarding_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DL_Forwarding_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.h b/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.h new file mode 100644 index 0000000..e584f32 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-Forwarding.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_Forwarding_H_ +#define _DL_Forwarding_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DL_Forwarding { + DL_Forwarding_dL_forwardingProposed = 0 + /* + * Enumeration is extensible + */ +} e_DL_Forwarding; + +/* DL-Forwarding */ +typedef long DL_Forwarding_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_Forwarding_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_Forwarding; +extern const asn_INTEGER_specifics_t asn_SPC_DL_Forwarding_specs_1; +asn_struct_free_f DL_Forwarding_free; +asn_struct_print_f DL_Forwarding_print; +asn_constr_check_f DL_Forwarding_constraint; +ber_type_decoder_f DL_Forwarding_decode_ber; +der_type_encoder_f DL_Forwarding_encode_der; +xer_type_decoder_f DL_Forwarding_decode_xer; +xer_type_encoder_f DL_Forwarding_encode_xer; +per_type_decoder_f DL_Forwarding_decode_uper; +per_type_encoder_f DL_Forwarding_encode_uper; +per_type_decoder_f DL_Forwarding_decode_aper; +per_type_encoder_f DL_Forwarding_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_Forwarding_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c new file mode 100644 index 0000000..f000c2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-GBR-PRB-usage.h" + +int +DL_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DL_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_GBR_PRB_usage = { + "DL-GBR-PRB-usage", + "DL-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_GBR_PRB_usage_constr_1, DL_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h new file mode 100644 index 0000000..c5af9af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_GBR_PRB_usage_H_ +#define _DL_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-GBR-PRB-usage */ +typedef long DL_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_GBR_PRB_usage; +asn_struct_free_f DL_GBR_PRB_usage_free; +asn_struct_print_f DL_GBR_PRB_usage_print; +asn_constr_check_f DL_GBR_PRB_usage_constraint; +ber_type_decoder_f DL_GBR_PRB_usage_decode_ber; +der_type_encoder_f DL_GBR_PRB_usage_encode_der; +xer_type_decoder_f DL_GBR_PRB_usage_decode_xer; +xer_type_encoder_f DL_GBR_PRB_usage_encode_xer; +per_type_decoder_f DL_GBR_PRB_usage_decode_uper; +per_type_encoder_f DL_GBR_PRB_usage_encode_uper; +per_type_decoder_f DL_GBR_PRB_usage_decode_aper; +per_type_encoder_f DL_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.c new file mode 100644 index 0000000..596dd9c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-Total-PRB-usage.h" + +int +DL_Total_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DL_Total_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_Total_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_Total_PRB_usage = { + "DL-Total-PRB-usage", + "DL-Total-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_Total_PRB_usage_tags_1, + sizeof(asn_DEF_DL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_Total_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_Total_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_Total_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_Total_PRB_usage_constr_1, DL_Total_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.h new file mode 100644 index 0000000..0554b55 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-Total-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_Total_PRB_usage_H_ +#define _DL_Total_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-Total-PRB-usage */ +typedef long DL_Total_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_Total_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_Total_PRB_usage; +asn_struct_free_f DL_Total_PRB_usage_free; +asn_struct_print_f DL_Total_PRB_usage_print; +asn_constr_check_f DL_Total_PRB_usage_constraint; +ber_type_decoder_f DL_Total_PRB_usage_decode_ber; +der_type_encoder_f DL_Total_PRB_usage_encode_der; +xer_type_decoder_f DL_Total_PRB_usage_decode_xer; +xer_type_encoder_f DL_Total_PRB_usage_encode_xer; +per_type_decoder_f DL_Total_PRB_usage_decode_uper; +per_type_encoder_f DL_Total_PRB_usage_encode_uper; +per_type_decoder_f DL_Total_PRB_usage_decode_aper; +per_type_encoder_f DL_Total_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_Total_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c new file mode 100644 index 0000000..1c16189 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-non-GBR-PRB-usage.h" + +int +DL_non_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DL_non_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_non_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_non_GBR_PRB_usage = { + "DL-non-GBR-PRB-usage", + "DL-non-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_non_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_non_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_non_GBR_PRB_usage_constr_1, DL_non_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h new file mode 100644 index 0000000..8347d16 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_non_GBR_PRB_usage_H_ +#define _DL_non_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-non-GBR-PRB-usage */ +typedef long DL_non_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_non_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_non_GBR_PRB_usage; +asn_struct_free_f DL_non_GBR_PRB_usage_free; +asn_struct_print_f DL_non_GBR_PRB_usage_print; +asn_constr_check_f DL_non_GBR_PRB_usage_constraint; +ber_type_decoder_f DL_non_GBR_PRB_usage_decode_ber; +der_type_encoder_f DL_non_GBR_PRB_usage_encode_der; +xer_type_decoder_f DL_non_GBR_PRB_usage_decode_xer; +xer_type_encoder_f DL_non_GBR_PRB_usage_encode_xer; +per_type_decoder_f DL_non_GBR_PRB_usage_decode_uper; +per_type_encoder_f DL_non_GBR_PRB_usage_encode_uper; +per_type_decoder_f DL_non_GBR_PRB_usage_decode_aper; +per_type_encoder_f DL_non_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_non_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c b/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c new file mode 100644 index 0000000..f51e374 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-scheduling-PDCCH-CCE-usage.h" + +int +DL_scheduling_PDCCH_CCE_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_scheduling_PDCCH_CCE_usage = { + "DL-scheduling-PDCCH-CCE-usage", + "DL-scheduling-PDCCH-CCE-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1, + sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1, DL_scheduling_PDCCH_CCE_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h b/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h new file mode 100644 index 0000000..b156752 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_scheduling_PDCCH_CCE_usage_H_ +#define _DL_scheduling_PDCCH_CCE_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-scheduling-PDCCH-CCE-usage */ +typedef long DL_scheduling_PDCCH_CCE_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_scheduling_PDCCH_CCE_usage; +asn_struct_free_f DL_scheduling_PDCCH_CCE_usage_free; +asn_struct_print_f DL_scheduling_PDCCH_CCE_usage_print; +asn_constr_check_f DL_scheduling_PDCCH_CCE_usage_constraint; +ber_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_ber; +der_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_der; +xer_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_xer; +xer_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_xer; +per_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_uper; +per_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_uper; +per_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_aper; +per_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_scheduling_PDCCH_CCE_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c b/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c new file mode 100644 index 0000000..2c62d73 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DLResourceBitmapULandDLSharing.h" + +int +DLResourceBitmapULandDLSharing_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const DataTrafficResources_t *st = (const DataTrafficResources_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 >= 6 && size <= 17600)) { + /* 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 DataTrafficResources, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DLResourceBitmapULandDLSharing_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DLResourceBitmapULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DLResourceBitmapULandDLSharing = { + "DLResourceBitmapULandDLSharing", + "DLResourceBitmapULandDLSharing", + &asn_OP_BIT_STRING, + asn_DEF_DLResourceBitmapULandDLSharing_tags_1, + sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_DLResourceBitmapULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DLResourceBitmapULandDLSharing_constr_1, DLResourceBitmapULandDLSharing_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h b/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h new file mode 100644 index 0000000..7b93980 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DLResourceBitmapULandDLSharing_H_ +#define _DLResourceBitmapULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DLResourceBitmapULandDLSharing */ +typedef DataTrafficResources_t DLResourceBitmapULandDLSharing_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DLResourceBitmapULandDLSharing_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DLResourceBitmapULandDLSharing; +asn_struct_free_f DLResourceBitmapULandDLSharing_free; +asn_struct_print_f DLResourceBitmapULandDLSharing_print; +asn_constr_check_f DLResourceBitmapULandDLSharing_constraint; +ber_type_decoder_f DLResourceBitmapULandDLSharing_decode_ber; +der_type_encoder_f DLResourceBitmapULandDLSharing_encode_der; +xer_type_decoder_f DLResourceBitmapULandDLSharing_decode_xer; +xer_type_encoder_f DLResourceBitmapULandDLSharing_encode_xer; +per_type_decoder_f DLResourceBitmapULandDLSharing_decode_uper; +per_type_encoder_f DLResourceBitmapULandDLSharing_encode_uper; +per_type_decoder_f DLResourceBitmapULandDLSharing_decode_aper; +per_type_encoder_f DLResourceBitmapULandDLSharing_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DLResourceBitmapULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c b/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c new file mode 100644 index 0000000..929f71e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DLResourcesULandDLSharing.h" + +asn_per_constraints_t asn_PER_type_DLResourcesULandDLSharing_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DLResourcesULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DLResourcesULandDLSharing, choice.unchanged), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unchanged" + }, + { ATF_NOFLAGS, 0, offsetof(struct DLResourcesULandDLSharing, choice.changed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DLResourceBitmapULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "changed" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_DLResourcesULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* unchanged */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* changed */ +}; +asn_CHOICE_specifics_t asn_SPC_DLResourcesULandDLSharing_specs_1 = { + sizeof(struct DLResourcesULandDLSharing), + offsetof(struct DLResourcesULandDLSharing, _asn_ctx), + offsetof(struct DLResourcesULandDLSharing, present), + sizeof(((struct DLResourcesULandDLSharing *)0)->present), + asn_MAP_DLResourcesULandDLSharing_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_DLResourcesULandDLSharing = { + "DLResourcesULandDLSharing", + "DLResourcesULandDLSharing", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_DLResourcesULandDLSharing_constr_1, CHOICE_constraint }, + asn_MBR_DLResourcesULandDLSharing_1, + 2, /* Elements count */ + &asn_SPC_DLResourcesULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h b/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h new file mode 100644 index 0000000..8299067 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DLResourcesULandDLSharing_H_ +#define _DLResourcesULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "DLResourceBitmapULandDLSharing.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DLResourcesULandDLSharing_PR { + DLResourcesULandDLSharing_PR_NOTHING, /* No components present */ + DLResourcesULandDLSharing_PR_unchanged, + DLResourcesULandDLSharing_PR_changed + /* Extensions may appear below */ + +} DLResourcesULandDLSharing_PR; + +/* DLResourcesULandDLSharing */ +typedef struct DLResourcesULandDLSharing { + DLResourcesULandDLSharing_PR present; + union DLResourcesULandDLSharing_u { + NULL_t unchanged; + DLResourceBitmapULandDLSharing_t changed; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DLResourcesULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DLResourcesULandDLSharing; +extern asn_CHOICE_specifics_t asn_SPC_DLResourcesULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_DLResourcesULandDLSharing_1[2]; +extern asn_per_constraints_t asn_PER_type_DLResourcesULandDLSharing_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DLResourcesULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DRB-ID.c b/E2Manager/asn1codec/e2ap_engine/DRB-ID.c new file mode 100644 index 0000000..b88aeac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DRB-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DRB-ID.h" + +int +DRB_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DRB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (1..32) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DRB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DRB_ID = { + "DRB-ID", + "DRB-ID", + &asn_OP_NativeInteger, + asn_DEF_DRB_ID_tags_1, + sizeof(asn_DEF_DRB_ID_tags_1) + /sizeof(asn_DEF_DRB_ID_tags_1[0]), /* 1 */ + asn_DEF_DRB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_DRB_ID_tags_1) + /sizeof(asn_DEF_DRB_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DRB_ID_constr_1, DRB_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DRB-ID.h b/E2Manager/asn1codec/e2ap_engine/DRB-ID.h new file mode 100644 index 0000000..1633a9d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DRB-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DRB_ID_H_ +#define _DRB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DRB-ID */ +typedef long DRB_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DRB_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DRB_ID; +asn_struct_free_f DRB_ID_free; +asn_struct_print_f DRB_ID_print; +asn_constr_check_f DRB_ID_constraint; +ber_type_decoder_f DRB_ID_decode_ber; +der_type_encoder_f DRB_ID_encode_der; +xer_type_decoder_f DRB_ID_decode_xer; +xer_type_encoder_f DRB_ID_encode_xer; +per_type_decoder_f DRB_ID_decode_uper; +per_type_encoder_f DRB_ID_encode_uper; +per_type_decoder_f DRB_ID_decode_aper; +per_type_encoder_f DRB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DRB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.c b/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.c new file mode 100644 index 0000000..acb3811 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataForwardingAddressIndication.h" + +static asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P118, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataForwardingAddressIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataForwardingAddressIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_specs_1 = { + sizeof(struct DataForwardingAddressIndication), + offsetof(struct DataForwardingAddressIndication, _asn_ctx), + asn_MAP_DataForwardingAddressIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication = { + "DataForwardingAddressIndication", + "DataForwardingAddressIndication", + &asn_OP_SEQUENCE, + asn_DEF_DataForwardingAddressIndication_tags_1, + sizeof(asn_DEF_DataForwardingAddressIndication_tags_1) + /sizeof(asn_DEF_DataForwardingAddressIndication_tags_1[0]), /* 1 */ + asn_DEF_DataForwardingAddressIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DataForwardingAddressIndication_tags_1) + /sizeof(asn_DEF_DataForwardingAddressIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataForwardingAddressIndication_1, + 1, /* Elements count */ + &asn_SPC_DataForwardingAddressIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.h b/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.h new file mode 100644 index 0000000..9edef5b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataForwardingAddressIndication.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataForwardingAddressIndication_H_ +#define _DataForwardingAddressIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DataForwardingAddressIndication */ +typedef struct DataForwardingAddressIndication { + ProtocolIE_Container_119P118_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataForwardingAddressIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataForwardingAddressIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.c b/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.c new file mode 100644 index 0000000..7cf7b56 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.c @@ -0,0 +1,133 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataTrafficResourceIndication.h" + +#include "ReservedSubframePattern.h" +#include "ProtocolExtensionContainer.h" +static int +memb_activationSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* 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_activationSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication, activationSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_activationSFN_constr_2, memb_activationSFN_constraint_1 }, + 0, 0, /* No default value */ + "activationSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication, sharedResourceType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SharedResourceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sharedResourceType" + }, + { ATF_POINTER, 2, offsetof(struct DataTrafficResourceIndication, reservedSubframePattern), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReservedSubframePattern, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reservedSubframePattern" + }, + { ATF_POINTER, 1, offsetof(struct DataTrafficResourceIndication, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P131, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DataTrafficResourceIndication_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_DataTrafficResourceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataTrafficResourceIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* activationSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sharedResourceType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reservedSubframePattern */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_specs_1 = { + sizeof(struct DataTrafficResourceIndication), + offsetof(struct DataTrafficResourceIndication, _asn_ctx), + asn_MAP_DataTrafficResourceIndication_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DataTrafficResourceIndication_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication = { + "DataTrafficResourceIndication", + "DataTrafficResourceIndication", + &asn_OP_SEQUENCE, + asn_DEF_DataTrafficResourceIndication_tags_1, + sizeof(asn_DEF_DataTrafficResourceIndication_tags_1) + /sizeof(asn_DEF_DataTrafficResourceIndication_tags_1[0]), /* 1 */ + asn_DEF_DataTrafficResourceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DataTrafficResourceIndication_tags_1) + /sizeof(asn_DEF_DataTrafficResourceIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataTrafficResourceIndication_1, + 4, /* Elements count */ + &asn_SPC_DataTrafficResourceIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.h b/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.h new file mode 100644 index 0000000..88f2365 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataTrafficResourceIndication.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataTrafficResourceIndication_H_ +#define _DataTrafficResourceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "SharedResourceType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReservedSubframePattern; +struct ProtocolExtensionContainer; + +/* DataTrafficResourceIndication */ +typedef struct DataTrafficResourceIndication { + long activationSFN; + SharedResourceType_t sharedResourceType; + struct ReservedSubframePattern *reservedSubframePattern; /* 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; +} DataTrafficResourceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataTrafficResourceIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.c b/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.c new file mode 100644 index 0000000..736683f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataTrafficResources.h" + +int +DataTrafficResources_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 17600)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_DataTrafficResources_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DataTrafficResources_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResources = { + "DataTrafficResources", + "DataTrafficResources", + &asn_OP_BIT_STRING, + asn_DEF_DataTrafficResources_tags_1, + sizeof(asn_DEF_DataTrafficResources_tags_1) + /sizeof(asn_DEF_DataTrafficResources_tags_1[0]), /* 1 */ + asn_DEF_DataTrafficResources_tags_1, /* Same as above */ + sizeof(asn_DEF_DataTrafficResources_tags_1) + /sizeof(asn_DEF_DataTrafficResources_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DataTrafficResources_constr_1, DataTrafficResources_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.h b/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.h new file mode 100644 index 0000000..8d35875 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DataTrafficResources.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataTrafficResources_H_ +#define _DataTrafficResources_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DataTrafficResources */ +typedef BIT_STRING_t DataTrafficResources_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DataTrafficResources_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResources; +asn_struct_free_f DataTrafficResources_free; +asn_struct_print_f DataTrafficResources_print; +asn_constr_check_f DataTrafficResources_constraint; +ber_type_decoder_f DataTrafficResources_decode_ber; +der_type_encoder_f DataTrafficResources_encode_der; +xer_type_decoder_f DataTrafficResources_decode_xer; +xer_type_encoder_f DataTrafficResources_encode_xer; +per_type_decoder_f DataTrafficResources_decode_uper; +per_type_encoder_f DataTrafficResources_encode_uper; +per_type_decoder_f DataTrafficResources_decode_aper; +per_type_encoder_f DataTrafficResources_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataTrafficResources_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.c b/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.c new file mode 100644 index 0000000..e3e138a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DeactivationIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DeactivationIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DeactivationIndication_value2enum_1[] = { + { 0, 11, "deactivated" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DeactivationIndication_enum2value_1[] = { + 0 /* deactivated(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DeactivationIndication_specs_1 = { + asn_MAP_DeactivationIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DeactivationIndication_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_DeactivationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeactivationIndication = { + "DeactivationIndication", + "DeactivationIndication", + &asn_OP_NativeEnumerated, + asn_DEF_DeactivationIndication_tags_1, + sizeof(asn_DEF_DeactivationIndication_tags_1) + /sizeof(asn_DEF_DeactivationIndication_tags_1[0]), /* 1 */ + asn_DEF_DeactivationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DeactivationIndication_tags_1) + /sizeof(asn_DEF_DeactivationIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DeactivationIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DeactivationIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.h b/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.h new file mode 100644 index 0000000..2effb4a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DeactivationIndication.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DeactivationIndication_H_ +#define _DeactivationIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeactivationIndication { + DeactivationIndication_deactivated = 0 + /* + * Enumeration is extensible + */ +} e_DeactivationIndication; + +/* DeactivationIndication */ +typedef long DeactivationIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeactivationIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeactivationIndication; +extern const asn_INTEGER_specifics_t asn_SPC_DeactivationIndication_specs_1; +asn_struct_free_f DeactivationIndication_free; +asn_struct_print_f DeactivationIndication_print; +asn_constr_check_f DeactivationIndication_constraint; +ber_type_decoder_f DeactivationIndication_decode_ber; +der_type_encoder_f DeactivationIndication_encode_der; +xer_type_decoder_f DeactivationIndication_decode_xer; +xer_type_encoder_f DeactivationIndication_encode_xer; +per_type_decoder_f DeactivationIndication_decode_uper; +per_type_encoder_f DeactivationIndication_encode_uper; +per_type_decoder_f DeactivationIndication_decode_aper; +per_type_encoder_f DeactivationIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeactivationIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.c b/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.c new file mode 100644 index 0000000..318f3e3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DeliveryStatus.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_highestSuccessDeliveredPDCPSN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_highestSuccessDeliveredPDCPSN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DeliveryStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus, highestSuccessDeliveredPDCPSN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_highestSuccessDeliveredPDCPSN_constr_2, memb_highestSuccessDeliveredPDCPSN_constraint_1 }, + 0, 0, /* No default value */ + "highestSuccessDeliveredPDCPSN" + }, + { ATF_POINTER, 1, offsetof(struct DeliveryStatus, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P132, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DeliveryStatus_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_DeliveryStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DeliveryStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* highestSuccessDeliveredPDCPSN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_specs_1 = { + sizeof(struct DeliveryStatus), + offsetof(struct DeliveryStatus, _asn_ctx), + asn_MAP_DeliveryStatus_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_DeliveryStatus_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DeliveryStatus = { + "DeliveryStatus", + "DeliveryStatus", + &asn_OP_SEQUENCE, + asn_DEF_DeliveryStatus_tags_1, + sizeof(asn_DEF_DeliveryStatus_tags_1) + /sizeof(asn_DEF_DeliveryStatus_tags_1[0]), /* 1 */ + asn_DEF_DeliveryStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_DeliveryStatus_tags_1) + /sizeof(asn_DEF_DeliveryStatus_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DeliveryStatus_1, + 2, /* Elements count */ + &asn_SPC_DeliveryStatus_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.h b/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.h new file mode 100644 index 0000000..226dcd0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DeliveryStatus.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DeliveryStatus_H_ +#define _DeliveryStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* DeliveryStatus */ +typedef struct DeliveryStatus { + long highestSuccessDeliveredPDCPSN; + 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; +} DeliveryStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DeliveryStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_DeliveryStatus_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeliveryStatus_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.c b/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.c new file mode 100644 index 0000000..39177e8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DuplicationActivation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DuplicationActivation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DuplicationActivation_value2enum_1[] = { + { 0, 6, "active" }, + { 1, 8, "inactive" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DuplicationActivation_enum2value_1[] = { + 0, /* active(0) */ + 1 /* inactive(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DuplicationActivation_specs_1 = { + asn_MAP_DuplicationActivation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DuplicationActivation_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_DuplicationActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DuplicationActivation = { + "DuplicationActivation", + "DuplicationActivation", + &asn_OP_NativeEnumerated, + asn_DEF_DuplicationActivation_tags_1, + sizeof(asn_DEF_DuplicationActivation_tags_1) + /sizeof(asn_DEF_DuplicationActivation_tags_1[0]), /* 1 */ + asn_DEF_DuplicationActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_DuplicationActivation_tags_1) + /sizeof(asn_DEF_DuplicationActivation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DuplicationActivation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DuplicationActivation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.h b/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.h new file mode 100644 index 0000000..fefdfd2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DuplicationActivation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DuplicationActivation_H_ +#define _DuplicationActivation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DuplicationActivation { + DuplicationActivation_active = 0, + DuplicationActivation_inactive = 1 + /* + * Enumeration is extensible + */ +} e_DuplicationActivation; + +/* DuplicationActivation */ +typedef long DuplicationActivation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DuplicationActivation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DuplicationActivation; +extern const asn_INTEGER_specifics_t asn_SPC_DuplicationActivation_specs_1; +asn_struct_free_f DuplicationActivation_free; +asn_struct_print_f DuplicationActivation_print; +asn_constr_check_f DuplicationActivation_constraint; +ber_type_decoder_f DuplicationActivation_decode_ber; +der_type_encoder_f DuplicationActivation_encode_der; +xer_type_decoder_f DuplicationActivation_decode_xer; +xer_type_encoder_f DuplicationActivation_encode_xer; +per_type_decoder_f DuplicationActivation_decode_uper; +per_type_encoder_f DuplicationActivation_encode_uper; +per_type_decoder_f DuplicationActivation_decode_aper; +per_type_encoder_f DuplicationActivation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DuplicationActivation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c b/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c new file mode 100644 index 0000000..da22311 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DynamicDLTransmissionInformation.h" + +#include "DynamicNAICSInformation.h" +asn_per_constraints_t asn_PER_type_DynamicDLTransmissionInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DynamicDLTransmissionInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct DynamicDLTransmissionInformation, choice.naics_active), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DynamicNAICSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "naics-active" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicDLTransmissionInformation, choice.naics_inactive), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "naics-inactive" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicDLTransmissionInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* naics-active */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* naics-inactive */ +}; +asn_CHOICE_specifics_t asn_SPC_DynamicDLTransmissionInformation_specs_1 = { + sizeof(struct DynamicDLTransmissionInformation), + offsetof(struct DynamicDLTransmissionInformation, _asn_ctx), + offsetof(struct DynamicDLTransmissionInformation, present), + sizeof(((struct DynamicDLTransmissionInformation *)0)->present), + asn_MAP_DynamicDLTransmissionInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicDLTransmissionInformation = { + "DynamicDLTransmissionInformation", + "DynamicDLTransmissionInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_DynamicDLTransmissionInformation_constr_1, CHOICE_constraint }, + asn_MBR_DynamicDLTransmissionInformation_1, + 2, /* Elements count */ + &asn_SPC_DynamicDLTransmissionInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h b/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h new file mode 100644 index 0000000..6991a41 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DynamicDLTransmissionInformation_H_ +#define _DynamicDLTransmissionInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DynamicDLTransmissionInformation_PR { + DynamicDLTransmissionInformation_PR_NOTHING, /* No components present */ + DynamicDLTransmissionInformation_PR_naics_active, + DynamicDLTransmissionInformation_PR_naics_inactive + /* Extensions may appear below */ + +} DynamicDLTransmissionInformation_PR; + +/* Forward declarations */ +struct DynamicNAICSInformation; + +/* DynamicDLTransmissionInformation */ +typedef struct DynamicDLTransmissionInformation { + DynamicDLTransmissionInformation_PR present; + union DynamicDLTransmissionInformation_u { + struct DynamicNAICSInformation *naics_active; + NULL_t naics_inactive; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DynamicDLTransmissionInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DynamicDLTransmissionInformation; +extern asn_CHOICE_specifics_t asn_SPC_DynamicDLTransmissionInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_DynamicDLTransmissionInformation_1[2]; +extern asn_per_constraints_t asn_PER_type_DynamicDLTransmissionInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DynamicDLTransmissionInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.c b/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.c new file mode 100644 index 0000000..5960450 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.c @@ -0,0 +1,241 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DynamicNAICSInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_transmissionModes_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* 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_pB_information_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_pA_list_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 3)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_pA_list_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (SIZE(0..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_transmissionModes_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pB_information_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pA_list_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (SIZE(0..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_pA_list_4[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PA_Values, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_pA_list_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_pA_list_specs_4 = { + sizeof(struct DynamicNAICSInformation__pA_list), + offsetof(struct DynamicNAICSInformation__pA_list, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_pA_list_4 = { + "pA-list", + "pA-list", + &asn_OP_SEQUENCE_OF, + asn_DEF_pA_list_tags_4, + sizeof(asn_DEF_pA_list_tags_4) + /sizeof(asn_DEF_pA_list_tags_4[0]) - 1, /* 1 */ + asn_DEF_pA_list_tags_4, /* Same as above */ + sizeof(asn_DEF_pA_list_tags_4) + /sizeof(asn_DEF_pA_list_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_pA_list_constr_4, SEQUENCE_OF_constraint }, + asn_MBR_pA_list_4, + 1, /* Single element */ + &asn_SPC_pA_list_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_1[] = { + { ATF_POINTER, 2, offsetof(struct DynamicNAICSInformation, transmissionModes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_transmissionModes_constr_2, memb_transmissionModes_constraint_1 }, + 0, 0, /* No default value */ + "transmissionModes" + }, + { ATF_POINTER, 1, offsetof(struct DynamicNAICSInformation, pB_information), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pB_information_constr_3, memb_pB_information_constraint_1 }, + 0, 0, /* No default value */ + "pB-information" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation, pA_list), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_pA_list_4, + 0, + { 0, &asn_PER_memb_pA_list_constr_4, memb_pA_list_constraint_1 }, + 0, 0, /* No default value */ + "pA-list" + }, + { ATF_POINTER, 1, offsetof(struct DynamicNAICSInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P133, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DynamicNAICSInformation_oms_1[] = { 0, 1, 3 }; +static const ber_tlv_tag_t asn_DEF_DynamicNAICSInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicNAICSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transmissionModes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pB-information */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pA-list */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_specs_1 = { + sizeof(struct DynamicNAICSInformation), + offsetof(struct DynamicNAICSInformation, _asn_ctx), + asn_MAP_DynamicNAICSInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DynamicNAICSInformation_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation = { + "DynamicNAICSInformation", + "DynamicNAICSInformation", + &asn_OP_SEQUENCE, + asn_DEF_DynamicNAICSInformation_tags_1, + sizeof(asn_DEF_DynamicNAICSInformation_tags_1) + /sizeof(asn_DEF_DynamicNAICSInformation_tags_1[0]), /* 1 */ + asn_DEF_DynamicNAICSInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_DynamicNAICSInformation_tags_1) + /sizeof(asn_DEF_DynamicNAICSInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DynamicNAICSInformation_1, + 4, /* Elements count */ + &asn_SPC_DynamicNAICSInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.h b/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.h new file mode 100644 index 0000000..2480472 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/DynamicNAICSInformation.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DynamicNAICSInformation_H_ +#define _DynamicNAICSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "PA-Values.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* DynamicNAICSInformation */ +typedef struct DynamicNAICSInformation { + BIT_STRING_t *transmissionModes; /* OPTIONAL */ + long *pB_information; /* OPTIONAL */ + struct DynamicNAICSInformation__pA_list { + A_SEQUENCE_OF(PA_Values_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } pA_list; + 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; +} DynamicNAICSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DynamicNAICSInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.c b/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.c new file mode 100644 index 0000000..b0bcb85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-ID.h" + +int +E_RAB_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_E_RAB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_ID = { + "E-RAB-ID", + "E-RAB-ID", + &asn_OP_NativeInteger, + asn_DEF_E_RAB_ID_tags_1, + sizeof(asn_DEF_E_RAB_ID_tags_1) + /sizeof(asn_DEF_E_RAB_ID_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_ID_tags_1) + /sizeof(asn_DEF_E_RAB_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RAB_ID_constr_1, E_RAB_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.h b/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.h new file mode 100644 index 0000000..2dd327b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_ID_H_ +#define _E_RAB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-RAB-ID */ +typedef long E_RAB_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E_RAB_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_ID; +asn_struct_free_f E_RAB_ID_free; +asn_struct_print_f E_RAB_ID_print; +asn_constr_check_f E_RAB_ID_constraint; +ber_type_decoder_f E_RAB_ID_decode_ber; +der_type_encoder_f E_RAB_ID_encode_der; +xer_type_decoder_f E_RAB_ID_decode_xer; +xer_type_encoder_f E_RAB_ID_encode_xer; +per_type_decoder_f E_RAB_ID_decode_uper; +per_type_encoder_f E_RAB_ID_encode_uper; +per_type_decoder_f E_RAB_ID_decode_aper; +per_type_encoder_f E_RAB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.c new file mode 100644 index 0000000..2775063 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RAB_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RAB_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P140, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RAB_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RAB_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Item_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_specs_1 = { + sizeof(struct E_RAB_Item), + offsetof(struct E_RAB_Item, _asn_ctx), + asn_MAP_E_RAB_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RAB_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Item = { + "E-RAB-Item", + "E-RAB-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Item_tags_1, + sizeof(asn_DEF_E_RAB_Item_tags_1) + /sizeof(asn_DEF_E_RAB_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_Item_tags_1) + /sizeof(asn_DEF_E_RAB_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RAB_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.h new file mode 100644 index 0000000..695daeb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_Item_H_ +#define _E_RAB_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RAB-Item */ +typedef struct E_RAB_Item { + E_RAB_ID_t e_RAB_ID; + 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; +} E_RAB_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c b/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c new file mode 100644 index 0000000..a407c20 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-Level-QoS-Parameters.h" + +#include "GBR-QosInformation.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters, qCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "qCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters, allocationAndRetentionPriority), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AllocationAndRetentionPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "allocationAndRetentionPriority" + }, + { ATF_POINTER, 2, offsetof(struct E_RAB_Level_QoS_Parameters, gbrQosInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gbrQosInformation" + }, + { ATF_POINTER, 1, offsetof(struct E_RAB_Level_QoS_Parameters, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P139, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RAB_Level_QoS_Parameters_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Level_QoS_Parameters_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* allocationAndRetentionPriority */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gbrQosInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_specs_1 = { + sizeof(struct E_RAB_Level_QoS_Parameters), + offsetof(struct E_RAB_Level_QoS_Parameters, _asn_ctx), + asn_MAP_E_RAB_Level_QoS_Parameters_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RAB_Level_QoS_Parameters_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters = { + "E-RAB-Level-QoS-Parameters", + "E-RAB-Level-QoS-Parameters", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Level_QoS_Parameters_tags_1, + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_Level_QoS_Parameters_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Level_QoS_Parameters_1, + 4, /* Elements count */ + &asn_SPC_E_RAB_Level_QoS_Parameters_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h b/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h new file mode 100644 index 0000000..c0e615c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_Level_QoS_Parameters_H_ +#define _E_RAB_Level_QoS_Parameters_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "QCI.h" +#include "AllocationAndRetentionPriority.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct ProtocolExtensionContainer; + +/* E-RAB-Level-QoS-Parameters */ +typedef struct E_RAB_Level_QoS_Parameters { + QCI_t qCI; + AllocationAndRetentionPriority_t allocationAndRetentionPriority; + struct 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; +} E_RAB_Level_QoS_Parameters_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_Level_QoS_Parameters_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-List.c b/E2Manager/asn1codec/e2ap_engine/E-RAB-List.c new file mode 100644 index 0000000..c280292 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RAB_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RAB_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RAB_List_specs_1 = { + sizeof(struct E_RAB_List), + offsetof(struct E_RAB_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_List = { + "E-RAB-List", + "E-RAB-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RAB_List_tags_1, + sizeof(asn_DEF_E_RAB_List_tags_1) + /sizeof(asn_DEF_E_RAB_List_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_List_tags_1) + /sizeof(asn_DEF_E_RAB_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RAB_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RAB_List_1, + 1, /* Single element */ + &asn_SPC_E_RAB_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RAB-List.h b/E2Manager/asn1codec/e2ap_engine/E-RAB-List.h new file mode 100644 index 0000000..8d5e131 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RAB-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_List_H_ +#define _E_RAB_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RAB-List */ +typedef struct E_RAB_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RAB_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RAB_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.c new file mode 100644 index 0000000..74d88c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.c @@ -0,0 +1,316 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABUsageReport-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +usageCountUL_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +usageCountDL_5_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_startTimeStamp_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* 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_endTimeStamp_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* 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_usageCountUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_usageCountDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_usageCountUL_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_usageCountDL_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startTimeStamp_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_endTimeStamp_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_usageCountUL_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_usageCountDL_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_usageCountUL_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_usageCountUL_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_usageCountUL_4 = { + "usageCountUL", + "usageCountUL", + &asn_OP_NativeInteger, + asn_DEF_usageCountUL_tags_4, + sizeof(asn_DEF_usageCountUL_tags_4) + /sizeof(asn_DEF_usageCountUL_tags_4[0]) - 1, /* 1 */ + asn_DEF_usageCountUL_tags_4, /* Same as above */ + sizeof(asn_DEF_usageCountUL_tags_4) + /sizeof(asn_DEF_usageCountUL_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_usageCountUL_constr_4, usageCountUL_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_usageCountUL_specs_4 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_usageCountDL_specs_5 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_usageCountDL_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_usageCountDL_5 = { + "usageCountDL", + "usageCountDL", + &asn_OP_NativeInteger, + asn_DEF_usageCountDL_tags_5, + sizeof(asn_DEF_usageCountDL_tags_5) + /sizeof(asn_DEF_usageCountDL_tags_5[0]) - 1, /* 1 */ + asn_DEF_usageCountDL_tags_5, /* Same as above */ + sizeof(asn_DEF_usageCountDL_tags_5) + /sizeof(asn_DEF_usageCountDL_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_usageCountDL_constr_5, usageCountDL_5_constraint }, + 0, 0, /* No members */ + &asn_SPC_usageCountDL_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, startTimeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_startTimeStamp_constr_2, memb_startTimeStamp_constraint_1 }, + 0, 0, /* No default value */ + "startTimeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, endTimeStamp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_endTimeStamp_constr_3, memb_endTimeStamp_constraint_1 }, + 0, 0, /* No default value */ + "endTimeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, usageCountUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_usageCountUL_4, + 0, + { 0, &asn_PER_memb_usageCountUL_constr_4, memb_usageCountUL_constraint_1 }, + 0, 0, /* No default value */ + "usageCountUL" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, usageCountDL), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_usageCountDL_5, + 0, + { 0, &asn_PER_memb_usageCountDL_constr_5, memb_usageCountDL_constraint_1 }, + 0, 0, /* No default value */ + "usageCountDL" + }, + { ATF_POINTER, 1, offsetof(struct E_RABUsageReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P141, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABUsageReport_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startTimeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* endTimeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* usageCountUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* usageCountDL */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_specs_1 = { + sizeof(struct E_RABUsageReport_Item), + offsetof(struct E_RABUsageReport_Item, _asn_ctx), + asn_MAP_E_RABUsageReport_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABUsageReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item = { + "E-RABUsageReport-Item", + "E-RABUsageReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_Item_tags_1, + sizeof(asn_DEF_E_RABUsageReport_Item_tags_1) + /sizeof(asn_DEF_E_RABUsageReport_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABUsageReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_Item_tags_1) + /sizeof(asn_DEF_E_RABUsageReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABUsageReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.h new file mode 100644 index 0000000..663a6b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReport-Item.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABUsageReport_Item_H_ +#define _E_RABUsageReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABUsageReport-Item */ +typedef struct E_RABUsageReport_Item { + OCTET_STRING_t startTimeStamp; + OCTET_STRING_t endTimeStamp; + unsigned long usageCountUL; + unsigned long usageCountDL; + 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; +} E_RABUsageReport_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_usageCountUL_4; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_usageCountDL_5; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABUsageReport_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.c b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.c new file mode 100644 index 0000000..f46baf2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABUsageReportList.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABUsageReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABUsageReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABUsageReportList_specs_1 = { + sizeof(struct E_RABUsageReportList), + offsetof(struct E_RABUsageReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportList = { + "E-RABUsageReportList", + "E-RABUsageReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABUsageReportList_tags_1, + sizeof(asn_DEF_E_RABUsageReportList_tags_1) + /sizeof(asn_DEF_E_RABUsageReportList_tags_1[0]), /* 1 */ + asn_DEF_E_RABUsageReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReportList_tags_1) + /sizeof(asn_DEF_E_RABUsageReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABUsageReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABUsageReportList_1, + 1, /* Single element */ + &asn_SPC_E_RABUsageReportList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.h b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.h new file mode 100644 index 0000000..0a84f92 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABUsageReportList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABUsageReportList_H_ +#define _E_RABUsageReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABUsageReportList */ +typedef struct E_RABUsageReportList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportList; +extern asn_SET_OF_specifics_t asn_SPC_E_RABUsageReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABUsageReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABUsageReportList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c new file mode 100644 index 0000000..ae15236 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-Item.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_Item, uL_GTP_TunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTP-TunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_Item, dL_GTP_TunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTP-TunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_Item_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_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-GTP-TunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-GTP-TunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_Item), + offsetof(struct E_RABs_Admitted_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item = { + "E-RABs-Admitted-Item", + "E-RABs-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h new file mode 100644 index 0000000..98e967d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_Item_H_ +#define _E_RABs_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-Item */ +typedef struct E_RABs_Admitted_Item { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_GTP_TunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTP_TunnelEndpoint; /* 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; +} E_RABs_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.c new file mode 100644 index 0000000..5008d7a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_List_specs_1 = { + sizeof(struct E_RABs_Admitted_List), + offsetof(struct E_RABs_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_List = { + "E-RABs-Admitted-List", + "E-RABs-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_List_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.h new file mode 100644 index 0000000..47fde08 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_List_H_ +#define _E_RABs_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-List */ +typedef struct E_RABs_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c new file mode 100644 index 0000000..c5e4e22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c @@ -0,0 +1,113 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer = { + "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer", + "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h new file mode 100644 index 0000000..25d8b29 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c new file mode 100644 index 0000000..e84501c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer = { + "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer", + "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h new file mode 100644 index 0000000..abeace2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-Item-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; + 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; +} E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c new file mode 100644 index 0000000..d4cf224 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item.h" + +#include "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item = { + "E-RABs-Admitted-ToBeAdded-Item", + "E-RABs-Admitted-ToBeAdded-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_Item_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h new file mode 100644 index 0000000..a19e1c4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_Item_PR { + E_RABs_Admitted_ToBeAdded_Item_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_Item_PR_sCG_Bearer, + E_RABs_Admitted_ToBeAdded_Item_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_Item_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer; +struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer; + +/* E-RABs-Admitted-ToBeAdded-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_Item { + E_RABs_Admitted_ToBeAdded_Item_PR present; + union E_RABs_Admitted_ToBeAdded_Item_u { + struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c new file mode 100644 index 0000000..5460ada --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_List_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_List), + offsetof(struct E_RABs_Admitted_ToBeAdded_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_List = { + "E-RABs-Admitted-ToBeAdded-List", + "E-RABs-Admitted-ToBeAdded-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h new file mode 100644 index 0000000..9fba684 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_List_H_ +#define _E_RABs_Admitted_ToBeAdded_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-List */ +typedef struct E_RABs_Admitted_ToBeAdded_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..87f9c1d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c @@ -0,0 +1,113 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..cdf2f76 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..5fddaf3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..118a092 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; + 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; +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c new file mode 100644 index 0000000..802eac3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem = { + "E-RABs-Admitted-ToBeAdded-ModAckItem", + "E-RABs-Admitted-ToBeAdded-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h new file mode 100644 index 0000000..09c7cd6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem { + E_RABs_Admitted_ToBeAdded_ModAckItem_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_u { + struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c new file mode 100644 index 0000000..308a8b9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList = { + "E-RABs-Admitted-ToBeAdded-ModAckList", + "E-RABs-Admitted-ToBeAdded-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h new file mode 100644 index 0000000..7a77751 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-ModAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..058e646 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..5b7a246 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent { + GTPtunnelEndpoint_t sgNB_DL_GTP_TEIDatSCG; + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* 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; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..189348e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,145 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 7, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 6, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1, + 8, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..8c643bf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent { + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t *rlc_Mode; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c new file mode 100644 index 0000000..558b33c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h new file mode 100644 index 0000000..94293d8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c new file mode 100644 index 0000000..8155e85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h new file mode 100644 index 0000000..18f735c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..025aad3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..c7885ec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent { + GTPtunnelEndpoint_t sgNB_DL_GTP_TEIDatSCG; + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* 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; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..7bff694 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,145 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 7, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 6, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1, + 8, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..57ae786 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent { + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t *rlc_Mode; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c new file mode 100644 index 0000000..4c146a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h new file mode 100644 index 0000000..9d3522c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c new file mode 100644 index 0000000..1ed241f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList = { + "E-RABs-Admitted-ToBeAdded-SgNBModAckList", + "E-RABs-Admitted-ToBeAdded-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h new file mode 100644 index 0000000..d1dce8d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..8fee811 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..cb7f9cb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *s1_DL_GTPtunnelEndpoint; /* 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; +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..5cf0dce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..c96447f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *seNB_GTPtunnelEndpoint; /* 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; +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c new file mode 100644 index 0000000..d099e7f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem = { + "E-RABs-Admitted-ToBeModified-ModAckItem", + "E-RABs-Admitted-ToBeModified-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h new file mode 100644 index 0000000..8a975e7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToBeModified_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem { + E_RABs_Admitted_ToBeModified_ModAckItem_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_u { + struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c new file mode 100644 index 0000000..fd51ae5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList = { + "E-RABs-Admitted-ToBeModified-ModAckList", + "E-RABs-Admitted-ToBeModified-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h new file mode 100644 index 0000000..2320037 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckList_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeModified-ModAckList */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..053c17d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..6be8c23 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *sgNB_DL_GTP_TEIDatSCG; /* 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; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..c754354 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..02e9b85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *s1_DL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c new file mode 100644 index 0000000..41d21ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h new file mode 100644 index 0000000..b4d3f6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c new file mode 100644 index 0000000..ebdab03 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList = { + "E-RABs-Admitted-ToBeModified-SgNBModAckList", + "E-RABs-Admitted-ToBeModified-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h new file mode 100644 index 0000000..5eb7719 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeModified-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..2aafa9a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..d7916c9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer { + 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; +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..5bf81c2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..48f4c7d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer { + 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; +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c new file mode 100644 index 0000000..2e21dc1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList = { + "E-RABs-Admitted-ToBeReleased-ModAckList", + "E-RABs-Admitted-ToBeReleased-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h new file mode 100644 index 0000000..5a598a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-ModAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..75de74c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..1ea7184 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent { + 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; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..aee2de2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..d73aa09 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent { + 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; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c new file mode 100644 index 0000000..6e4f019 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList = { + "E-RABs-Admitted-ToBeReleased-SgNBModAckList", + "E-RABs-Admitted-ToBeReleased-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h new file mode 100644 index 0000000..81d38a7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c new file mode 100644 index 0000000..af3d460 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, rlc_Mode_transferred), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode-transferred" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rlc-Mode-transferred */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h new file mode 100644 index 0000000..4c2d1cd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item { + E_RAB_ID_t e_RAB_ID; + RLCMode_t rlc_Mode_transferred; + 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; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c new file mode 100644 index 0000000..71b444b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h new file mode 100644 index 0000000..91d50c5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c new file mode 100644 index 0000000..a2bba8b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToReleased-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToReleased_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToReleased_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToReleased_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToReleased_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToReleased_ModAckItem), + offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToReleased_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToReleased_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem = { + "E-RABs-Admitted-ToReleased-ModAckItem", + "E-RABs-Admitted-ToReleased-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToReleased_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToReleased_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToReleased_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h new file mode 100644 index 0000000..e642c49 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToReleased_ModAckItem_H_ +#define _E_RABs_Admitted_ToReleased_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToReleased_ModAckItem_PR { + E_RABs_Admitted_ToReleased_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToReleased_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToReleased_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToReleased_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToReleased-ModAckItem */ +typedef struct E_RABs_Admitted_ToReleased_ModAckItem { + E_RABs_Admitted_ToReleased_ModAckItem_PR present; + union E_RABs_Admitted_ToReleased_ModAckItem_u { + struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToReleased_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToReleased_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c new file mode 100644 index 0000000..1649955 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToReleased-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToReleased_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToReleased_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item = { + "E-RABs-Admitted-ToReleased-SgNBModAck-Item", + "E-RABs-Admitted-ToReleased-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToReleased_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToReleased_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h new file mode 100644 index 0000000..09e1793 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToReleased-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToReleased_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_Admitted_ToReleased_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..4137dce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 2, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..72c4525 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* 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; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..d260e1d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..88f6ab6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent { + 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; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c new file mode 100644 index 0000000..b966d8d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h new file mode 100644 index 0000000..1befc1d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration { + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_u { + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c new file mode 100644 index 0000000..a2fe19f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_AdmittedToBeModified_SgNBModConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConfList_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConfList), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList = { + "E-RABs-AdmittedToBeModified-SgNBModConfList", + "E-RABs-AdmittedToBeModified-SgNBModConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_AdmittedToBeModified_SgNBModConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConfList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h new file mode 100644 index 0000000..6c45ebf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-AdmittedToBeModified-SgNBModConfList */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c new file mode 100644 index 0000000..4ed4faf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-DataForwardingAddress-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_Item, dl_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_DataForwardingAddress_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P103, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_DataForwardingAddress_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_Item_specs_1 = { + sizeof(struct E_RABs_DataForwardingAddress_Item), + offsetof(struct E_RABs_DataForwardingAddress_Item, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_DataForwardingAddress_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_Item = { + "E-RABs-DataForwardingAddress-Item", + "E-RABs-DataForwardingAddress-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h new file mode 100644 index 0000000..74a005a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_DataForwardingAddress_Item_H_ +#define _E_RABs_DataForwardingAddress_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-DataForwardingAddress-Item */ +typedef struct E_RABs_DataForwardingAddress_Item { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t dl_GTPtunnelEndpoint; + 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; +} E_RABs_DataForwardingAddress_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_DataForwardingAddress_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c new file mode 100644 index 0000000..46798ed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-DataForwardingAddress-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_DataForwardingAddress_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_DataForwardingAddress_List_specs_1 = { + sizeof(struct E_RABs_DataForwardingAddress_List), + offsetof(struct E_RABs_DataForwardingAddress_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_List = { + "E-RABs-DataForwardingAddress-List", + "E-RABs-DataForwardingAddress-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_DataForwardingAddress_List_tags_1, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_DataForwardingAddress_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_DataForwardingAddress_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h new file mode 100644 index 0000000..5331c0b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_DataForwardingAddress_List_H_ +#define _E_RABs_DataForwardingAddress_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-DataForwardingAddress-List */ +typedef struct E_RABs_DataForwardingAddress_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_DataForwardingAddress_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c new file mode 100644 index 0000000..0e428af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToCounterCheck-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToCounterCheck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToCounterCheck_List_specs_1 = { + sizeof(struct E_RABs_SubjectToCounterCheck_List), + offsetof(struct E_RABs_SubjectToCounterCheck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheck_List = { + "E-RABs-SubjectToCounterCheck-List", + "E-RABs-SubjectToCounterCheck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToCounterCheck_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheck_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToCounterCheck_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h new file mode 100644 index 0000000..6bb048d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToCounterCheck_List_H_ +#define _E_RABs_SubjectToCounterCheck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToCounterCheck-List */ +typedef struct E_RABs_SubjectToCounterCheck_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheck_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToCounterCheck_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c new file mode 100644 index 0000000..cd00ff1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c @@ -0,0 +1,244 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToCounterCheckItem.h" + +#include "ProtocolExtensionContainer.h" +static int +uL_Count_3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +dL_Count_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_uL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_dL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_uL_Count_specs_3 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_uL_Count_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_uL_Count_3 = { + "uL-Count", + "uL-Count", + &asn_OP_NativeInteger, + asn_DEF_uL_Count_tags_3, + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]) - 1, /* 1 */ + asn_DEF_uL_Count_tags_3, /* Same as above */ + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_uL_Count_constr_3, uL_Count_3_constraint }, + 0, 0, /* No members */ + &asn_SPC_uL_Count_specs_3 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_dL_Count_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_dL_Count_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_dL_Count_4 = { + "dL-Count", + "dL-Count", + &asn_OP_NativeInteger, + asn_DEF_dL_Count_tags_4, + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]) - 1, /* 1 */ + asn_DEF_dL_Count_tags_4, /* Same as above */ + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_dL_Count_constr_4, dL_Count_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_dL_Count_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, uL_Count), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_uL_Count_3, + 0, + { 0, &asn_PER_memb_uL_Count_constr_3, memb_uL_Count_constraint_1 }, + 0, 0, /* No default value */ + "uL-Count" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, dL_Count), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_dL_Count_4, + 0, + { 0, &asn_PER_memb_dL_Count_constr_4, memb_dL_Count_constraint_1 }, + 0, 0, /* No default value */ + "dL-Count" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToCounterCheckItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToCounterCheckItem_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItem_specs_1 = { + sizeof(struct E_RABs_SubjectToCounterCheckItem), + offsetof(struct E_RABs_SubjectToCounterCheckItem, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToCounterCheckItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItem = { + "E-RABs-SubjectToCounterCheckItem", + "E-RABs-SubjectToCounterCheckItem", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItem_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h new file mode 100644 index 0000000..2ed00f9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToCounterCheckItem_H_ +#define _E_RABs_SubjectToCounterCheckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToCounterCheckItem */ +typedef struct E_RABs_SubjectToCounterCheckItem { + E_RAB_ID_t e_RAB_ID; + unsigned long uL_Count; + unsigned long dL_Count; + 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; +} E_RABs_SubjectToCounterCheckItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_uL_Count_3; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_dL_Count_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToCounterCheckItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c new file mode 100644 index 0000000..6fe3647 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c @@ -0,0 +1,244 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToSgNBCounterCheck-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +uL_Count_3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +dL_Count_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_uL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_dL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_uL_Count_specs_3 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_uL_Count_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_uL_Count_3 = { + "uL-Count", + "uL-Count", + &asn_OP_NativeInteger, + asn_DEF_uL_Count_tags_3, + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]) - 1, /* 1 */ + asn_DEF_uL_Count_tags_3, /* Same as above */ + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_uL_Count_constr_3, uL_Count_3_constraint }, + 0, 0, /* No members */ + &asn_SPC_uL_Count_specs_3 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_dL_Count_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_dL_Count_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_dL_Count_4 = { + "dL-Count", + "dL-Count", + &asn_OP_NativeInteger, + asn_DEF_dL_Count_tags_4, + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]) - 1, /* 1 */ + asn_DEF_dL_Count_tags_4, /* Same as above */ + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_dL_Count_constr_4, dL_Count_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_dL_Count_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, uL_Count), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_uL_Count_3, + 0, + { 0, &asn_PER_memb_uL_Count_constr_3, memb_uL_Count_constraint_1 }, + 0, 0, /* No default value */ + "uL-Count" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, dL_Count), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_dL_Count_4, + 0, + { 0, &asn_PER_memb_dL_Count_constr_4, memb_dL_Count_constraint_1 }, + 0, 0, /* No default value */ + "dL-Count" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_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-Count */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_Item_specs_1 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_Item), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item = { + "E-RABs-SubjectToSgNBCounterCheck-Item", + "E-RABs-SubjectToSgNBCounterCheck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h new file mode 100644 index 0000000..7ea83b0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToSgNBCounterCheck_Item_H_ +#define _E_RABs_SubjectToSgNBCounterCheck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToSgNBCounterCheck-Item */ +typedef struct E_RABs_SubjectToSgNBCounterCheck_Item { + E_RAB_ID_t e_RAB_ID; + unsigned long uL_Count; + unsigned long dL_Count; + 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; +} E_RABs_SubjectToSgNBCounterCheck_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_uL_Count_3; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_dL_Count_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToSgNBCounterCheck_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c new file mode 100644 index 0000000..d6a8583 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToSgNBCounterCheck-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToSgNBCounterCheck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_List_specs_1 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_List), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List = { + "E-RABs-SubjectToSgNBCounterCheck-List", + "E-RABs-SubjectToSgNBCounterCheck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToSgNBCounterCheck_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h new file mode 100644 index 0000000..5ebfe9f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToSgNBCounterCheck_List_H_ +#define _E_RABs_SubjectToSgNBCounterCheck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToSgNBCounterCheck-List */ +typedef struct E_RABs_SubjectToSgNBCounterCheck_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToSgNBCounterCheck_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c new file mode 100644 index 0000000..fe47e52 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToStatusTransfer-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, receiveStatusofULPDCPSDUs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReceiveStatusofULPDCPSDUs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "receiveStatusofULPDCPSDUs" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, uL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-COUNTvalue" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, dL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-COUNTvalue" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToStatusTransfer_Item_oms_1[] = { 1, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_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 }, /* receiveStatusofULPDCPSDUs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_Item_specs_1 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_Item), + offsetof(struct E_RABs_SubjectToStatusTransfer_Item, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToStatusTransfer_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item = { + "E-RABs-SubjectToStatusTransfer-Item", + "E-RABs-SubjectToStatusTransfer-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h new file mode 100644 index 0000000..aafb7de --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToStatusTransfer_Item_H_ +#define _E_RABs_SubjectToStatusTransfer_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "ReceiveStatusofULPDCPSDUs.h" +#include "COUNTvalue.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToStatusTransfer-Item */ +typedef struct E_RABs_SubjectToStatusTransfer_Item { + E_RAB_ID_t e_RAB_ID; + ReceiveStatusofULPDCPSDUs_t *receiveStatusofULPDCPSDUs; /* OPTIONAL */ + COUNTvalue_t uL_COUNTvalue; + COUNTvalue_t dL_COUNTvalue; + 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; +} E_RABs_SubjectToStatusTransfer_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToStatusTransfer_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c new file mode 100644 index 0000000..ab7f7a6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToStatusTransfer-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToStatusTransfer_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_List_specs_1 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_List), + offsetof(struct E_RABs_SubjectToStatusTransfer_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_List = { + "E-RABs-SubjectToStatusTransfer-List", + "E-RABs-SubjectToStatusTransfer-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToStatusTransfer_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h new file mode 100644 index 0000000..9f3c794 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToStatusTransfer_List_H_ +#define _E_RABs_SubjectToStatusTransfer_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToStatusTransfer-List */ +typedef struct E_RABs_SubjectToStatusTransfer_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToStatusTransfer_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c new file mode 100644 index 0000000..9b3fbaa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_Bearer), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer = { + "E-RABs-ToBeAdded-Item-SCG-Bearer", + "E-RABs-ToBeAdded-Item-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h new file mode 100644 index 0000000..50f093c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ +#define _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-Item-SCG-Bearer */ +typedef struct E_RABs_ToBeAdded_Item_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_Item_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c new file mode 100644 index 0000000..0f9e886 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_Bearer), + offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer = { + "E-RABs-ToBeAdded-Item-Split-Bearer", + "E-RABs-ToBeAdded-Item-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h new file mode 100644 index 0000000..06c770d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_Split_Bearer_H_ +#define _E_RABs_ToBeAdded_Item_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-Item-Split-Bearer */ +typedef struct E_RABs_ToBeAdded_Item_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_Item_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c new file mode 100644 index 0000000..cacfae3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item.h" + +#include "E-RABs-ToBeAdded-Item-SCG-Bearer.h" +#include "E-RABs-ToBeAdded-Item-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_Item, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_Item, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item), + offsetof(struct E_RABs_ToBeAdded_Item, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item, present), + sizeof(((struct E_RABs_ToBeAdded_Item *)0)->present), + asn_MAP_E_RABs_ToBeAdded_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item = { + "E-RABs-ToBeAdded-Item", + "E-RABs-ToBeAdded-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_Item_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h new file mode 100644 index 0000000..b978859 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_H_ +#define _E_RABs_ToBeAdded_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_Item_PR { + E_RABs_ToBeAdded_Item_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_Item_PR_sCG_Bearer, + E_RABs_ToBeAdded_Item_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_Item_PR; + +/* Forward declarations */ +struct E_RABs_ToBeAdded_Item_SCG_Bearer; +struct E_RABs_ToBeAdded_Item_Split_Bearer; + +/* E-RABs-ToBeAdded-Item */ +typedef struct E_RABs_ToBeAdded_Item { + E_RABs_ToBeAdded_Item_PR present; + union E_RABs_ToBeAdded_Item_u { + struct E_RABs_ToBeAdded_Item_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeAdded_Item_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c new file mode 100644 index 0000000..ab3801a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_List_ModReq), + offsetof(struct E_RABs_ToBeAdded_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List_ModReq = { + "E-RABs-ToBeAdded-List-ModReq", + "E-RABs-ToBeAdded-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h new file mode 100644 index 0000000..cd06eb3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_List_ModReq_H_ +#define _E_RABs_ToBeAdded_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-List-ModReq */ +typedef struct E_RABs_ToBeAdded_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c new file mode 100644 index 0000000..8f9adc3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_List), + offsetof(struct E_RABs_ToBeAdded_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List = { + "E-RABs-ToBeAdded-List", + "E-RABs-ToBeAdded-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h new file mode 100644 index 0000000..8da591c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_List_H_ +#define _E_RABs_ToBeAdded_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-List */ +typedef struct E_RABs_ToBeAdded_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..9697ee4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer", + "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..c806599 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..829df14 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer = { + "E-RABs-ToBeAdded-ModReqItem-Split-Bearer", + "E-RABs-ToBeAdded-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..88bd96e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c new file mode 100644 index 0000000..66d852d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem.h" + +#include "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem), + offsetof(struct E_RABs_ToBeAdded_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem = { + "E-RABs-ToBeAdded-ModReqItem", + "E-RABs-ToBeAdded-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h new file mode 100644 index 0000000..7894e52 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_H_ +#define _E_RABs_ToBeAdded_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_ModReqItem_PR { + E_RABs_ToBeAdded_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeAdded_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeAdded-ModReqItem */ +typedef struct E_RABs_ToBeAdded_ModReqItem { + E_RABs_ToBeAdded_ModReqItem_PR present; + union E_RABs_ToBeAdded_ModReqItem_u { + struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..614a691 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_oms_1[] = { 2, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..f5b8789 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent { + E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_UL_GTP_TEIDatPDCP; + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t rlc_Mode; + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..32b7a49 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h" + +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, max_MCG_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MCG-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MCG-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..1b6809f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent { + E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; + struct GBR_QosInformation *max_MCG_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c new file mode 100644 index 0000000..c6830ff --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c @@ -0,0 +1,168 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_5[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_5 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_5 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_5, CHOICE_constraint }, + asn_MBR_resource_configuration_5, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, drb_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DRB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "drb-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drb-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item = { + "E-RABs-ToBeAdded-SgNBAddReq-Item", + "E-RABs-ToBeAdded-SgNBAddReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h new file mode 100644 index 0000000..78985f4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h @@ -0,0 +1,95 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "DRB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item { + E_RAB_ID_t e_RAB_ID; + DRB_ID_t drb_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration { + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_u { + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeAdded_SgNBAddReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c new file mode 100644 index 0000000..7f1c50c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReqList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBAddReqList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqList_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqList), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList = { + "E-RABs-ToBeAdded-SgNBAddReqList", + "E-RABs-ToBeAdded-SgNBAddReqList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_SgNBAddReqList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReqList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReqList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h new file mode 100644 index 0000000..ecada2a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReqList_H_ +#define _E_RABs_ToBeAdded_SgNBAddReqList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-SgNBAddReqList */ +typedef struct E_RABs_ToBeAdded_SgNBAddReqList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReqList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReqList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..b1327ca --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 2, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..cd5935b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent { + E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_UL_GTP_TEIDatPDCP; + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t rlc_Mode; + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..f243f6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, max_MN_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MN-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MN-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..4b7a741 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent { + E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; + struct GBR_QosInformation *max_MN_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c new file mode 100644 index 0000000..79e76a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c @@ -0,0 +1,168 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_5[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_5 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_5 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_5, CHOICE_constraint }, + asn_MBR_resource_configuration_5, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, drb_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DRB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "drb-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drb-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item = { + "E-RABs-ToBeAdded-SgNBModReq-Item", + "E-RABs-ToBeAdded-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h new file mode 100644 index 0000000..b32db52 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h @@ -0,0 +1,95 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "DRB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeAdded-SgNBModReq-Item */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + DRB_ID_t drb_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeAdded_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c new file mode 100644 index 0000000..d8697f4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_List), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List = { + "E-RABs-ToBeAdded-SgNBModReq-List", + "E-RABs-ToBeAdded-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h new file mode 100644 index 0000000..df4a87c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_List_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-SgNBModReq-List */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c new file mode 100644 index 0000000..1d64aaa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeModified_List_ModReq), + offsetof(struct E_RABs_ToBeModified_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_List_ModReq = { + "E-RABs-ToBeModified-List-ModReq", + "E-RABs-ToBeModified-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h new file mode 100644 index 0000000..8c7a53a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_List_ModReq_H_ +#define _E_RABs_ToBeModified_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-List-ModReq */ +typedef struct E_RABs_ToBeModified_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..c4766f7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c @@ -0,0 +1,104 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeModified-ModReqItem-SCG-Bearer", + "E-RABs-ToBeModified-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..f09405b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct E_RAB_Level_QoS_Parameters *e_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_UL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeModified_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..a2cf744 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c @@ -0,0 +1,104 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem-Split-Bearer.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer = { + "E-RABs-ToBeModified-ModReqItem-Split-Bearer", + "E-RABs-ToBeModified-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..ce8ca31 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeModified_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct E_RAB_Level_QoS_Parameters *e_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeModified_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c new file mode 100644 index 0000000..1d00e01 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem.h" + +#include "E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeModified-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem), + offsetof(struct E_RABs_ToBeModified_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeModified_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem = { + "E-RABs-ToBeModified-ModReqItem", + "E-RABs-ToBeModified-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeModified_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h new file mode 100644 index 0000000..feb938c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_H_ +#define _E_RABs_ToBeModified_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_ModReqItem_PR { + E_RABs_ToBeModified_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeModified_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeModified_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeModified_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeModified-ModReqItem */ +typedef struct E_RABs_ToBeModified_ModReqItem { + E_RABs_ToBeModified_ModReqItem_PR present; + union E_RABs_ToBeModified_ModReqItem_u { + struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeModified_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..0957d8e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,105 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..98d4b43 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent { + struct E_RAB_Level_QoS_Parameters *requested_SCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* 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; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..2a70500 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, max_MN_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MN-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MN-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..fad3b01 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent { + struct E_RAB_Level_QoS_Parameters *full_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GBR_QosInformation *max_MN_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_UL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c new file mode 100644 index 0000000..f8459aa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item = { + "E-RABs-ToBeModified-SgNBModReq-Item", + "E-RABs-ToBeModified-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h new file mode 100644 index 0000000..eefa9f8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeModified-SgNBModReq-Item */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeModified_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c new file mode 100644 index 0000000..d3adacc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_List), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List = { + "E-RABs-ToBeModified-SgNBModReq-List", + "E-RABs-ToBeModified-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h new file mode 100644 index 0000000..551dc1f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_List_H_ +#define _E_RABs_ToBeModified_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-SgNBModReq-List */ +typedef struct E_RABs_ToBeModified_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..b89ec41 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..bebfc3b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* 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; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..3cec97e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, requested_MCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-MCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, s1_DL_GTP_TEIDatSgNB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTP-TEIDatSgNB" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-MCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-DL-GTP-TEIDatSgNB */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..1d60789 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent { + struct E_RAB_Level_QoS_Parameters *requested_MCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_DL_GTP_TEIDatSgNB; /* 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; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c new file mode 100644 index 0000000..01b48ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item = { + "E-RABs-ToBeModified-SgNBModReqd-Item", + "E-RABs-ToBeModified-SgNBModReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h new file mode 100644 index 0000000..ac6d529 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR { + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeModified-SgNBModReqd-Item */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration { + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_u { + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeModified_SgNBModReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c new file mode 100644 index 0000000..fb15b60 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqdList), + offsetof(struct E_RABs_ToBeModified_SgNBModReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList = { + "E-RABs-ToBeModified-SgNBModReqdList", + "E-RABs-ToBeModified-SgNBModReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_SgNBModReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqdList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h new file mode 100644 index 0000000..b15bca0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqdList_H_ +#define _E_RABs_ToBeModified_SgNBModReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-SgNBModReqdList */ +typedef struct E_RABs_ToBeModified_SgNBModReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqdList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c new file mode 100644 index 0000000..8289712 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_ModReq), + offsetof(struct E_RABs_ToBeReleased_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_ModReq = { + "E-RABs-ToBeReleased-List-ModReq", + "E-RABs-ToBeReleased-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h new file mode 100644 index 0000000..31786d5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_ModReq_H_ +#define _E_RABs_ToBeReleased_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-ModReq */ +typedef struct E_RABs_ToBeReleased_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c new file mode 100644 index 0000000..9aaca33 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-RelConf.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_RelConf_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_RelConf_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_RelConf_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_RelConf), + offsetof(struct E_RABs_ToBeReleased_List_RelConf, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelConf = { + "E-RABs-ToBeReleased-List-RelConf", + "E-RABs-ToBeReleased-List-RelConf", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_RelConf_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_RelConf_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_RelConf_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h new file mode 100644 index 0000000..cb44d3b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_RelConf_H_ +#define _E_RABs_ToBeReleased_List_RelConf_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-RelConf */ +typedef struct E_RABs_ToBeReleased_List_RelConf { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_RelConf_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelConf; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_RelConf_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c new file mode 100644 index 0000000..6fec5e6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-RelReq.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_RelReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_RelReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_RelReq_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_RelReq), + offsetof(struct E_RABs_ToBeReleased_List_RelReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelReq = { + "E-RABs-ToBeReleased-List-RelReq", + "E-RABs-ToBeReleased-List-RelReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_RelReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_RelReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_RelReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h new file mode 100644 index 0000000..df3c5df --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_RelReq_H_ +#define _E_RABs_ToBeReleased_List_RelReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-RelReq */ +typedef struct E_RABs_ToBeReleased_List_RelReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_RelReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_RelReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..512fc6d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_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-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer", + "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..5089f8b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..f84bc85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_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-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer = { + "E-RABs-ToBeReleased-ModReqItem-Split-Bearer", + "E-RABs-ToBeReleased-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..7543418 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c new file mode 100644 index 0000000..dcb91fc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem.h" + +#include "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem), + offsetof(struct E_RABs_ToBeReleased_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem = { + "E-RABs-ToBeReleased-ModReqItem", + "E-RABs-ToBeReleased-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h new file mode 100644 index 0000000..c887a52 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_H_ +#define _E_RABs_ToBeReleased_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_ModReqItem_PR { + E_RABs_ToBeReleased_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeReleased-ModReqItem */ +typedef struct E_RABs_ToBeReleased_ModReqItem { + E_RABs_ToBeReleased_ModReqItem_PR present; + union E_RABs_ToBeReleased_ModReqItem_u { + struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c new file mode 100644 index 0000000..25d2e4b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqd.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_ModReqd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqd_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqd), + offsetof(struct E_RABs_ToBeReleased_ModReqd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqd = { + "E-RABs-ToBeReleased-ModReqd", + "E-RABs-ToBeReleased-ModReqd", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_ModReqd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqd_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_ModReqd_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h new file mode 100644 index 0000000..4473dc4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqd_H_ +#define _E_RABs_ToBeReleased_ModReqd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-ModReqd */ +typedef struct E_RABs_ToBeReleased_ModReqd { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqd; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqd_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c new file mode 100644 index 0000000..7d8f527 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqdItem.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqdItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItem_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_E_RABs_ToBeReleased_ModReqdItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItem), + offsetof(struct E_RABs_ToBeReleased_ModReqdItem, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqdItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem = { + "E-RABs-ToBeReleased-ModReqdItem", + "E-RABs-ToBeReleased-ModReqdItem", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItem_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h new file mode 100644 index 0000000..a832ac3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqdItem_H_ +#define _E_RABs_ToBeReleased_ModReqdItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqdItem */ +typedef struct E_RABs_ToBeReleased_ModReqdItem { + E_RAB_ID_t e_RAB_ID; + 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; +} E_RABs_ToBeReleased_ModReqdItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqdItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c new file mode 100644 index 0000000..2309690 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer = { + "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer", + "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h new file mode 100644 index 0000000..eb2e5cf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelConfItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c new file mode 100644 index 0000000..4465b96 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_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-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer = { + "E-RABs-ToBeReleased-RelConfItem-Split-Bearer", + "E-RABs-ToBeReleased-RelConfItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h new file mode 100644 index 0000000..2721bff --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelConfItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_RelConfItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c new file mode 100644 index 0000000..995349d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem.h" + +#include "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_RelConfItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem), + offsetof(struct E_RABs_ToBeReleased_RelConfItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem = { + "E-RABs-ToBeReleased-RelConfItem", + "E-RABs-ToBeReleased-RelConfItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_RelConfItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h new file mode 100644 index 0000000..35fec51 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_H_ +#define _E_RABs_ToBeReleased_RelConfItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_RelConfItem_PR { + E_RABs_ToBeReleased_RelConfItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelConfItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_RelConfItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_RelConfItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer; +struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer; + +/* E-RABs-ToBeReleased-RelConfItem */ +typedef struct E_RABs_ToBeReleased_RelConfItem { + E_RABs_ToBeReleased_RelConfItem_PR present; + union E_RABs_ToBeReleased_RelConfItem_u { + struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c new file mode 100644 index 0000000..6833439 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer = { + "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer", + "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h new file mode 100644 index 0000000..292a2e4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c new file mode 100644 index 0000000..28a6331 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_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-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer = { + "E-RABs-ToBeReleased-RelReqItem-Split-Bearer", + "E-RABs-ToBeReleased-RelReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h new file mode 100644 index 0000000..28142f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_RelReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c new file mode 100644 index 0000000..555b573 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem.h" + +#include "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_RelReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem), + offsetof(struct E_RABs_ToBeReleased_RelReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem = { + "E-RABs-ToBeReleased-RelReqItem", + "E-RABs-ToBeReleased-RelReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_RelReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h new file mode 100644 index 0000000..eeca4f3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_H_ +#define _E_RABs_ToBeReleased_RelReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_RelReqItem_PR { + E_RABs_ToBeReleased_RelReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelReqItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_RelReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_RelReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer; +struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer; + +/* E-RABs-ToBeReleased-RelReqItem */ +typedef struct E_RABs_ToBeReleased_RelReqItem { + E_RABs_ToBeReleased_RelReqItem_PR present; + union E_RABs_ToBeReleased_RelReqItem_u { + struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..990d74a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..8bdfe49 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent { + 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; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..e36bf2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..552ff0e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c new file mode 100644 index 0000000..4573645 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item = { + "E-RABs-ToBeReleased-SgNBChaConf-Item", + "E-RABs-ToBeReleased-SgNBChaConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h new file mode 100644 index 0000000..33a13d1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeReleased_SgNBChaConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c new file mode 100644 index 0000000..0d5700f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBChaConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConfList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConfList), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList = { + "E-RABs-ToBeReleased-SgNBChaConfList", + "E-RABs-ToBeReleased-SgNBChaConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBChaConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConfList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h new file mode 100644 index 0000000..eb505f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConfList_H_ +#define _E_RABs_ToBeReleased_SgNBChaConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBChaConfList */ +typedef struct E_RABs_ToBeReleased_SgNBChaConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConfList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..cb1b356 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..4733b0c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent { + 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; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..b6bdbe1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..6f937f7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c new file mode 100644 index 0000000..3d8bce1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item = { + "E-RABs-ToBeReleased-SgNBModReq-Item", + "E-RABs-ToBeReleased-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h new file mode 100644 index 0000000..df69a7b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBModReq-Item */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeReleased_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c new file mode 100644 index 0000000..7364d5d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_List), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List = { + "E-RABs-ToBeReleased-SgNBModReq-List", + "E-RABs-ToBeReleased-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h new file mode 100644 index 0000000..cb0c017 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_List_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBModReq-List */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c new file mode 100644 index 0000000..e5734b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_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_E_RABs_ToBeReleased_SgNBModReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item = { + "E-RABs-ToBeReleased-SgNBModReqd-Item", + "E-RABs-ToBeReleased-SgNBModReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h new file mode 100644 index 0000000..50de74c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ +#define _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReqd-Item */ +typedef struct E_RABs_ToBeReleased_SgNBModReqd_Item { + E_RAB_ID_t e_RAB_ID; + 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; +} E_RABs_ToBeReleased_SgNBModReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c new file mode 100644 index 0000000..9c97506 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqdList), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList = { + "E-RABs-ToBeReleased-SgNBModReqdList", + "E-RABs-ToBeReleased-SgNBModReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBModReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqdList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h new file mode 100644 index 0000000..0c243ac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReqdList_H_ +#define _E_RABs_ToBeReleased_SgNBModReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBModReqdList */ +typedef struct E_RABs_ToBeReleased_SgNBModReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReqdList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..e1c30be --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..56425c4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent { + 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; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..cb2f796 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..2020d07 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c new file mode 100644 index 0000000..7dba1da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item = { + "E-RABs-ToBeReleased-SgNBRelConf-Item", + "E-RABs-ToBeReleased-SgNBRelConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h new file mode 100644 index 0000000..1ad017e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeReleased_SgNBRelConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c new file mode 100644 index 0000000..2cd8091 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConfList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConfList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList = { + "E-RABs-ToBeReleased-SgNBRelConfList", + "E-RABs-ToBeReleased-SgNBRelConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConfList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h new file mode 100644 index 0000000..7f4e58f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConfList_H_ +#define _E_RABs_ToBeReleased_SgNBRelConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelConfList */ +typedef struct E_RABs_ToBeReleased_SgNBRelConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConfList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..6b8b8dd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..debda2c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent { + 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; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..ed55ce1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..79e276f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* 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; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c new file mode 100644 index 0000000..a456452 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c @@ -0,0 +1,158 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item = { + "E-RABs-ToBeReleased-SgNBRelReq-Item", + "E-RABs-ToBeReleased-SgNBRelReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h new file mode 100644 index 0000000..3200d77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + 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; +} E_RABs_ToBeReleased_SgNBRelReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c new file mode 100644 index 0000000..2bc923f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList = { + "E-RABs-ToBeReleased-SgNBRelReqList", + "E-RABs-ToBeReleased-SgNBRelReqList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h new file mode 100644 index 0000000..e958117 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqList_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelReqList */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c new file mode 100644 index 0000000..0adbd3f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, rlc_Mode_transferred), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode-transferred" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rlc-Mode-transferred */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item = { + "E-RABs-ToBeReleased-SgNBRelReqd-Item", + "E-RABs-ToBeReleased-SgNBRelReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h new file mode 100644 index 0000000..7868a25 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReqd-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_Item { + E_RAB_ID_t e_RAB_ID; + RLCMode_t rlc_Mode_transferred; + 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; +} E_RABs_ToBeReleased_SgNBRelReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c new file mode 100644 index 0000000..4b056bb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqdList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList = { + "E-RABs-ToBeReleased-SgNBRelReqdList", + "E-RABs-ToBeReleased-SgNBRelReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqdList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h new file mode 100644 index 0000000..bd82dc4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqdList_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelReqdList */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqdList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c new file mode 100644 index 0000000..e558f40 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetup_Item, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetup_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeSetup_Item_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_Item_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_Item), + offsetof(struct E_RABs_ToBeSetup_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_Item = { + "E-RABs-ToBeSetup-Item", + "E-RABs-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h new file mode 100644 index 0000000..359a539 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_Item_H_ +#define _E_RABs_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeSetup-Item */ +typedef struct E_RABs_ToBeSetup_Item { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; + 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; +} E_RABs_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c new file mode 100644 index 0000000..aca479a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_List_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_List), + offsetof(struct E_RABs_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_List = { + "E-RABs-ToBeSetup-List", + "E-RABs-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeSetup_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h new file mode 100644 index 0000000..2a9ac9f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_List_H_ +#define _E_RABs_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeSetup-List */ +typedef struct E_RABs_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c new file mode 100644 index 0000000..ec16ed3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-ListRetrieve.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_ListRetrieve), + offsetof(struct E_RABs_ToBeSetup_ListRetrieve, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve = { + "E-RABs-ToBeSetup-ListRetrieve", + "E-RABs-ToBeSetup-ListRetrieve", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h new file mode 100644 index 0000000..efc1a48 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_ListRetrieve_H_ +#define _E_RABs_ToBeSetup_ListRetrieve_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeSetup-ListRetrieve */ +typedef struct E_RABs_ToBeSetup_ListRetrieve { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ListRetrieve_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_ListRetrieve_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c new file mode 100644 index 0000000..926faa4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetupRetrieve-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, bearerType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bearerType" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeSetupRetrieve_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bearerType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_Item_specs_1 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_Item), + offsetof(struct E_RABs_ToBeSetupRetrieve_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeSetupRetrieve_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item = { + "E-RABs-ToBeSetupRetrieve-Item", + "E-RABs-ToBeSetupRetrieve-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h new file mode 100644 index 0000000..ea5b5ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetupRetrieve_Item_H_ +#define _E_RABs_ToBeSetupRetrieve_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "BearerType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeSetupRetrieve-Item */ +typedef struct E_RABs_ToBeSetupRetrieve_Item { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + BearerType_t *bearerType; /* 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; +} E_RABs_ToBeSetupRetrieve_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetupRetrieve_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.c b/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.c new file mode 100644 index 0000000..75194a7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.c @@ -0,0 +1,94 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2AP-PDU.h" + +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_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_E2AP_PDU_specs_1 = { + sizeof(struct E2AP_PDU), + offsetof(struct E2AP_PDU, _asn_ctx), + offsetof(struct E2AP_PDU, present), + sizeof(((struct E2AP_PDU *)0)->present), + asn_MAP_E2AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { + "E2AP-PDU", + "E2AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, + asn_MBR_E2AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.h b/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.h new file mode 100644 index 0000000..a71a642 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2AP-PDU.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2AP_PDU_H_ +#define _E2AP_PDU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_PDU_PR { + E2AP_PDU_PR_NOTHING, /* No components present */ + E2AP_PDU_PR_initiatingMessage, + E2AP_PDU_PR_successfulOutcome, + E2AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} E2AP_PDU_PR; + +/* Forward declarations */ +struct InitiatingMessage; +struct SuccessfulOutcome; +struct UnsuccessfulOutcome; + +/* E2AP-PDU */ +typedef struct E2AP_PDU { + E2AP_PDU_PR present; + union E2AP_PDU_u { + struct InitiatingMessage *initiatingMessage; + struct SuccessfulOutcome *successfulOutcome; + struct UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_PDU_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c new file mode 100644 index 0000000..627d519 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c @@ -0,0 +1,155 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-actionDefinition.h" + +#include "ActionParameter-Item.h" +static int +memb_actionParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_actionParameter_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_actionParameter_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_actionParameter_List_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActionParameter_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_actionParameter_List_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_actionParameter_List_specs_3 = { + sizeof(struct E2SM_gNB_X2_actionDefinition__actionParameter_List), + offsetof(struct E2SM_gNB_X2_actionDefinition__actionParameter_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_actionParameter_List_3 = { + "actionParameter-List", + "actionParameter-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_actionParameter_List_tags_3, + sizeof(asn_DEF_actionParameter_List_tags_3) + /sizeof(asn_DEF_actionParameter_List_tags_3[0]) - 1, /* 1 */ + asn_DEF_actionParameter_List_tags_3, /* Same as above */ + sizeof(asn_DEF_actionParameter_List_tags_3) + /sizeof(asn_DEF_actionParameter_List_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_actionParameter_List_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_actionParameter_List_3, + 1, /* Single element */ + &asn_SPC_actionParameter_List_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_actionDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_actionDefinition, style_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Style_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "style-ID" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_actionDefinition, actionParameter_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_actionParameter_List_3, + 0, + { 0, &asn_PER_memb_actionParameter_List_constr_3, memb_actionParameter_List_constraint_1 }, + 0, 0, /* No default value */ + "actionParameter-List" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_actionDefinition_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_actionDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* style-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_actionDefinition_specs_1 = { + sizeof(struct E2SM_gNB_X2_actionDefinition), + offsetof(struct E2SM_gNB_X2_actionDefinition, _asn_ctx), + asn_MAP_E2SM_gNB_X2_actionDefinition_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_actionDefinition_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_actionDefinition = { + "E2SM-gNB-X2-actionDefinition", + "E2SM-gNB-X2-actionDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_actionDefinition_1, + 2, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_actionDefinition_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h new file mode 100644 index 0000000..3963199 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_actionDefinition_H_ +#define _E2SM_gNB_X2_actionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Style-ID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActionParameter_Item; + +/* E2SM-gNB-X2-actionDefinition */ +typedef struct E2SM_gNB_X2_actionDefinition { + Style_ID_t style_ID; + struct E2SM_gNB_X2_actionDefinition__actionParameter_List { + A_SEQUENCE_OF(struct ActionParameter_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *actionParameter_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_actionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_actionDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_actionDefinition_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c new file mode 100644 index 0000000..e88343b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-callProcessID.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_callProcessID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_callProcessID, callProcess_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CallProcess_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "callProcess-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_callProcessID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* callProcess-ID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_callProcessID_specs_1 = { + sizeof(struct E2SM_gNB_X2_callProcessID), + offsetof(struct E2SM_gNB_X2_callProcessID, _asn_ctx), + asn_MAP_E2SM_gNB_X2_callProcessID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_callProcessID = { + "E2SM-gNB-X2-callProcessID", + "E2SM-gNB-X2-callProcessID", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_callProcessID_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_callProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_callProcessID_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_callProcessID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h new file mode 100644 index 0000000..a2453de --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_callProcessID_H_ +#define _E2SM_gNB_X2_callProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CallProcess-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-callProcessID */ +typedef struct E2SM_gNB_X2_callProcessID { + CallProcess_ID_t callProcess_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_callProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_callProcessID; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_callProcessID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c new file mode 100644 index 0000000..f8134d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-controlHeader.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_controlHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlHeader, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlHeader, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_controlHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* interfaceDirection */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_controlHeader_specs_1 = { + sizeof(struct E2SM_gNB_X2_controlHeader), + offsetof(struct E2SM_gNB_X2_controlHeader, _asn_ctx), + asn_MAP_E2SM_gNB_X2_controlHeader_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlHeader = { + "E2SM-gNB-X2-controlHeader", + "E2SM-gNB-X2-controlHeader", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_controlHeader_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_controlHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_controlHeader_1, + 2, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_controlHeader_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h new file mode 100644 index 0000000..cfc47ab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_controlHeader_H_ +#define _E2SM_gNB_X2_controlHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-controlHeader */ +typedef struct E2SM_gNB_X2_controlHeader { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_controlHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_controlHeader_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c new file mode 100644 index 0000000..2d9f9ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-controlMessage.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_controlMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlMessage, interfaceMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_controlMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_controlMessage_specs_1 = { + sizeof(struct E2SM_gNB_X2_controlMessage), + offsetof(struct E2SM_gNB_X2_controlMessage, _asn_ctx), + asn_MAP_E2SM_gNB_X2_controlMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlMessage = { + "E2SM-gNB-X2-controlMessage", + "E2SM-gNB-X2-controlMessage", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_controlMessage_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_controlMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_controlMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_controlMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h new file mode 100644 index 0000000..1f74fcf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_controlMessage_H_ +#define _E2SM_gNB_X2_controlMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-controlMessage */ +typedef struct E2SM_gNB_X2_controlMessage { + InterfaceMessage_t interfaceMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_controlMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_controlMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c new file mode 100644 index 0000000..2ac825a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c @@ -0,0 +1,175 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-eventTriggerDefinition.h" + +#include "InterfaceProtocolIE-Item.h" +static int +memb_interfaceProtocolIE_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 15)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_interfaceProtocolIE_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_InterfaceProtocolIE_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_interfaceProtocolIE_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_interfaceProtocolIE_List_specs_5 = { + sizeof(struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List), + offsetof(struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_interfaceProtocolIE_List_5 = { + "interfaceProtocolIE-List", + "interfaceProtocolIE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_interfaceProtocolIE_List_tags_5, + sizeof(asn_DEF_interfaceProtocolIE_List_tags_5) + /sizeof(asn_DEF_interfaceProtocolIE_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_interfaceProtocolIE_List_tags_5, /* Same as above */ + sizeof(asn_DEF_interfaceProtocolIE_List_tags_5) + /sizeof(asn_DEF_interfaceProtocolIE_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_interfaceProtocolIE_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_interfaceProtocolIE_List_5, + 1, /* Single element */ + &asn_SPC_interfaceProtocolIE_List_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_eventTriggerDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceMessageType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessageType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessageType" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceProtocolIE_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_interfaceProtocolIE_List_5, + 0, + { 0, &asn_PER_memb_interfaceProtocolIE_List_constr_5, memb_interfaceProtocolIE_List_constraint_1 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-List" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* interfaceMessageType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* interfaceProtocolIE-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_eventTriggerDefinition_specs_1 = { + sizeof(struct E2SM_gNB_X2_eventTriggerDefinition), + offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, _asn_ctx), + asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition = { + "E2SM-gNB-X2-eventTriggerDefinition", + "E2SM-gNB-X2-eventTriggerDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_eventTriggerDefinition_1, + 4, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_eventTriggerDefinition_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h new file mode 100644 index 0000000..a11f1af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_eventTriggerDefinition_H_ +#define _E2SM_gNB_X2_eventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "InterfaceMessageType.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct InterfaceProtocolIE_Item; + +/* E2SM-gNB-X2-eventTriggerDefinition */ +typedef struct E2SM_gNB_X2_eventTriggerDefinition { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + InterfaceMessageType_t interfaceMessageType; + struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List { + A_SEQUENCE_OF(struct InterfaceProtocolIE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *interfaceProtocolIE_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_eventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_eventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c new file mode 100644 index 0000000..9de3543 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c @@ -0,0 +1,91 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-indicationHeader.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_indicationHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationHeader, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationHeader, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_indicationHeader, timestamp), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeStamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timestamp" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_indicationHeader_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_indicationHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timestamp */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_indicationHeader_specs_1 = { + sizeof(struct E2SM_gNB_X2_indicationHeader), + offsetof(struct E2SM_gNB_X2_indicationHeader, _asn_ctx), + asn_MAP_E2SM_gNB_X2_indicationHeader_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_indicationHeader_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationHeader = { + "E2SM-gNB-X2-indicationHeader", + "E2SM-gNB-X2-indicationHeader", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_indicationHeader_1, + 3, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_indicationHeader_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h new file mode 100644 index 0000000..467ee13 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_indicationHeader_H_ +#define _E2SM_gNB_X2_indicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "TimeStamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-indicationHeader */ +typedef struct E2SM_gNB_X2_indicationHeader { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + TimeStamp_t *timestamp; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_indicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_indicationHeader_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c new file mode 100644 index 0000000..dd77105 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-indicationMessage.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_indicationMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationMessage, interfaceMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_indicationMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_indicationMessage_specs_1 = { + sizeof(struct E2SM_gNB_X2_indicationMessage), + offsetof(struct E2SM_gNB_X2_indicationMessage, _asn_ctx), + asn_MAP_E2SM_gNB_X2_indicationMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationMessage = { + "E2SM-gNB-X2-indicationMessage", + "E2SM-gNB-X2-indicationMessage", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_indicationMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_indicationMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h new file mode 100644 index 0000000..2941eab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_indicationMessage_H_ +#define _E2SM_gNB_X2_indicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-indicationMessage */ +typedef struct E2SM_gNB_X2_indicationMessage { + InterfaceMessage_t interfaceMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_indicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_indicationMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EARFCN.c b/E2Manager/asn1codec/e2ap_engine/EARFCN.c new file mode 100644 index 0000000..651a195 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EARFCN.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EARFCN.h" + +int +EARFCN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EARFCN = { + "EARFCN", + "EARFCN", + &asn_OP_NativeInteger, + asn_DEF_EARFCN_tags_1, + sizeof(asn_DEF_EARFCN_tags_1) + /sizeof(asn_DEF_EARFCN_tags_1[0]), /* 1 */ + asn_DEF_EARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_EARFCN_tags_1) + /sizeof(asn_DEF_EARFCN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EARFCN_constr_1, EARFCN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EARFCN.h b/E2Manager/asn1codec/e2ap_engine/EARFCN.h new file mode 100644 index 0000000..817a0c5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EARFCN.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EARFCN_H_ +#define _EARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EARFCN */ +typedef long EARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EARFCN; +asn_struct_free_f EARFCN_free; +asn_struct_print_f EARFCN_print; +asn_constr_check_f EARFCN_constraint; +ber_type_decoder_f EARFCN_decode_ber; +der_type_encoder_f EARFCN_encode_der; +xer_type_decoder_f EARFCN_decode_xer; +xer_type_encoder_f EARFCN_encode_xer; +per_type_decoder_f EARFCN_decode_uper; +per_type_encoder_f EARFCN_encode_uper; +per_type_decoder_f EARFCN_decode_aper; +per_type_encoder_f EARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EARFCN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.c b/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.c new file mode 100644 index 0000000..0c257e2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EARFCNExtension.h" + +int +EARFCNExtension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 65536 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EARFCNExtension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 18, -1, 65536, 262143 } /* (65536..262143,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EARFCNExtension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EARFCNExtension = { + "EARFCNExtension", + "EARFCNExtension", + &asn_OP_NativeInteger, + asn_DEF_EARFCNExtension_tags_1, + sizeof(asn_DEF_EARFCNExtension_tags_1) + /sizeof(asn_DEF_EARFCNExtension_tags_1[0]), /* 1 */ + asn_DEF_EARFCNExtension_tags_1, /* Same as above */ + sizeof(asn_DEF_EARFCNExtension_tags_1) + /sizeof(asn_DEF_EARFCNExtension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EARFCNExtension_constr_1, EARFCNExtension_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.h b/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.h new file mode 100644 index 0000000..79f7b62 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EARFCNExtension.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EARFCNExtension_H_ +#define _EARFCNExtension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EARFCNExtension */ +typedef long EARFCNExtension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EARFCNExtension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EARFCNExtension; +asn_struct_free_f EARFCNExtension_free; +asn_struct_print_f EARFCNExtension_print; +asn_constr_check_f EARFCNExtension_constraint; +ber_type_decoder_f EARFCNExtension_decode_ber; +der_type_encoder_f EARFCNExtension_encode_der; +xer_type_decoder_f EARFCNExtension_decode_xer; +xer_type_encoder_f EARFCNExtension_encode_xer; +per_type_decoder_f EARFCNExtension_decode_uper; +per_type_encoder_f EARFCNExtension_encode_uper; +per_type_decoder_f EARFCNExtension_decode_aper; +per_type_encoder_f EARFCNExtension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EARFCNExtension_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ECGI.c b/E2Manager/asn1codec/e2ap_engine/ECGI.c new file mode 100644 index 0000000..bcb700c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ECGI.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ECGI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ECGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ECGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ECGI, eUTRANcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRANCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRANcellIdentifier" + }, + { ATF_POINTER, 1, offsetof(struct ECGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P134, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ECGI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ECGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ECGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eUTRANcellIdentifier */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1 = { + sizeof(struct ECGI), + offsetof(struct ECGI, _asn_ctx), + asn_MAP_ECGI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ECGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ECGI = { + "ECGI", + "ECGI", + &asn_OP_SEQUENCE, + asn_DEF_ECGI_tags_1, + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + asn_DEF_ECGI_tags_1, /* Same as above */ + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ECGI_1, + 3, /* Elements count */ + &asn_SPC_ECGI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ECGI.h b/E2Manager/asn1codec/e2ap_engine/ECGI.h new file mode 100644 index 0000000..1942a4e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ECGI.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ECGI_H_ +#define _ECGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "EUTRANCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ECGI */ +typedef struct ECGI { + PLMN_Identity_t pLMN_Identity; + EUTRANCellIdentifier_t eUTRANcellIdentifier; + 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; +} ECGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ECGI; +extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1; +extern asn_TYPE_member_t asn_MBR_ECGI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ECGI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c b/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c new file mode 100644 index 0000000..145783c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c @@ -0,0 +1,246 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EN-DC-ResourceConfiguration.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_pDCPatSgNB_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_mCGresources_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_sCGresources_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_pDCPatSgNB_value2enum_2[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_pDCPatSgNB_enum2value_2[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_pDCPatSgNB_specs_2 = { + asn_MAP_pDCPatSgNB_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_pDCPatSgNB_enum2value_2, /* 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_pDCPatSgNB_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_pDCPatSgNB_2 = { + "pDCPatSgNB", + "pDCPatSgNB", + &asn_OP_NativeEnumerated, + asn_DEF_pDCPatSgNB_tags_2, + sizeof(asn_DEF_pDCPatSgNB_tags_2) + /sizeof(asn_DEF_pDCPatSgNB_tags_2[0]) - 1, /* 1 */ + asn_DEF_pDCPatSgNB_tags_2, /* Same as above */ + sizeof(asn_DEF_pDCPatSgNB_tags_2) + /sizeof(asn_DEF_pDCPatSgNB_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_pDCPatSgNB_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_pDCPatSgNB_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_mCGresources_value2enum_6[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_mCGresources_enum2value_6[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_mCGresources_specs_6 = { + asn_MAP_mCGresources_value2enum_6, /* "tag" => N; sorted by tag */ + asn_MAP_mCGresources_enum2value_6, /* 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_mCGresources_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_mCGresources_6 = { + "mCGresources", + "mCGresources", + &asn_OP_NativeEnumerated, + asn_DEF_mCGresources_tags_6, + sizeof(asn_DEF_mCGresources_tags_6) + /sizeof(asn_DEF_mCGresources_tags_6[0]) - 1, /* 1 */ + asn_DEF_mCGresources_tags_6, /* Same as above */ + sizeof(asn_DEF_mCGresources_tags_6) + /sizeof(asn_DEF_mCGresources_tags_6[0]), /* 2 */ + { 0, &asn_PER_type_mCGresources_constr_6, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_mCGresources_specs_6 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_sCGresources_value2enum_10[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_sCGresources_enum2value_10[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_sCGresources_specs_10 = { + asn_MAP_sCGresources_value2enum_10, /* "tag" => N; sorted by tag */ + asn_MAP_sCGresources_enum2value_10, /* 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_sCGresources_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_sCGresources_10 = { + "sCGresources", + "sCGresources", + &asn_OP_NativeEnumerated, + asn_DEF_sCGresources_tags_10, + sizeof(asn_DEF_sCGresources_tags_10) + /sizeof(asn_DEF_sCGresources_tags_10[0]) - 1, /* 1 */ + asn_DEF_sCGresources_tags_10, /* Same as above */ + sizeof(asn_DEF_sCGresources_tags_10) + /sizeof(asn_DEF_sCGresources_tags_10[0]), /* 2 */ + { 0, &asn_PER_type_sCGresources_constr_10, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_sCGresources_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, pDCPatSgNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_pDCPatSgNB_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCPatSgNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, mCGresources), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_mCGresources_6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCGresources" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, sCGresources), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_sCGresources_10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCGresources" + }, + { ATF_POINTER, 1, offsetof(struct EN_DC_ResourceConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P137, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EN_DC_ResourceConfiguration_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_EN_DC_ResourceConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EN_DC_ResourceConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCPatSgNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mCGresources */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCGresources */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfiguration_specs_1 = { + sizeof(struct EN_DC_ResourceConfiguration), + offsetof(struct EN_DC_ResourceConfiguration, _asn_ctx), + asn_MAP_EN_DC_ResourceConfiguration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_EN_DC_ResourceConfiguration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfiguration = { + "EN-DC-ResourceConfiguration", + "EN-DC-ResourceConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_EN_DC_ResourceConfiguration_tags_1, + sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1) + /sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1[0]), /* 1 */ + asn_DEF_EN_DC_ResourceConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1) + /sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EN_DC_ResourceConfiguration_1, + 4, /* Elements count */ + &asn_SPC_EN_DC_ResourceConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h b/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h new file mode 100644 index 0000000..5197ac2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h @@ -0,0 +1,95 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EN_DC_ResourceConfiguration_H_ +#define _EN_DC_ResourceConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EN_DC_ResourceConfiguration__pDCPatSgNB { + EN_DC_ResourceConfiguration__pDCPatSgNB_present = 0, + EN_DC_ResourceConfiguration__pDCPatSgNB_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__pDCPatSgNB; +typedef enum EN_DC_ResourceConfiguration__mCGresources { + EN_DC_ResourceConfiguration__mCGresources_present = 0, + EN_DC_ResourceConfiguration__mCGresources_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__mCGresources; +typedef enum EN_DC_ResourceConfiguration__sCGresources { + EN_DC_ResourceConfiguration__sCGresources_present = 0, + EN_DC_ResourceConfiguration__sCGresources_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__sCGresources; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* EN-DC-ResourceConfiguration */ +typedef struct EN_DC_ResourceConfiguration { + long pDCPatSgNB; + long mCGresources; + long sCGresources; + 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; +} EN_DC_ResourceConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_pDCPatSgNB_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_mCGresources_6; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_sCGresources_10; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfiguration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EN_DC_ResourceConfiguration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENB-ID.c b/E2Manager/asn1codec/e2ap_engine/ENB-ID.c new file mode 100644 index 0000000..f9037b8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENB-ID.c @@ -0,0 +1,245 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { + sizeof(struct ENB_ID), + offsetof(struct ENB_ID, _asn_ctx), + offsetof(struct ENB_ID, present), + sizeof(((struct ENB_ID *)0)->present), + asn_MAP_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENB-ID.h b/E2Manager/asn1codec/e2ap_engine/ENB-ID.h new file mode 100644 index 0000000..45c0c6e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENB-ID.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENB_ID_H_ +#define _ENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_PR { + ENB_ID_PR_NOTHING, /* No components present */ + ENB_ID_PR_macro_eNB_ID, + ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + ENB_ID_PR_short_Macro_eNB_ID, + ENB_ID_PR_long_Macro_eNB_ID +} ENB_ID_PR; + +/* ENB-ID */ +typedef struct ENB_ID { + ENB_ID_PR present; + union ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.c b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.c new file mode 100644 index 0000000..e63b11f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_specs_1 = { + sizeof(struct ENBConfigurationUpdate), + offsetof(struct ENBConfigurationUpdate, _asn_ctx), + asn_MAP_ENBConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate = { + "ENBConfigurationUpdate", + "ENBConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdate_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.h b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.h new file mode 100644 index 0000000..be2cb28 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdate_H_ +#define _ENBConfigurationUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdate */ +typedef struct ENBConfigurationUpdate { + ProtocolIE_Container_119P28_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000..c5444b8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct ENBConfigurationUpdateAcknowledge), + offsetof(struct ENBConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_ENBConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge = { + "ENBConfigurationUpdateAcknowledge", + "ENBConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000..70d6be9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdateAcknowledge_H_ +#define _ENBConfigurationUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdateAcknowledge */ +typedef struct ENBConfigurationUpdateAcknowledge { + ProtocolIE_Container_119P29_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c new file mode 100644 index 0000000..ad926ca --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_specs_1 = { + sizeof(struct ENBConfigurationUpdateFailure), + offsetof(struct ENBConfigurationUpdateFailure, _asn_ctx), + asn_MAP_ENBConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure = { + "ENBConfigurationUpdateFailure", + "ENBConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h new file mode 100644 index 0000000..904066e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdateFailure_H_ +#define _ENBConfigurationUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdateFailure */ +typedef struct ENBConfigurationUpdateFailure { + ProtocolIE_Container_119P30_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.c b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.c new file mode 100644 index 0000000..785e018 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationFailure.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P100, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_specs_1 = { + sizeof(struct ENDCCellActivationFailure), + offsetof(struct ENDCCellActivationFailure, _asn_ctx), + asn_MAP_ENDCCellActivationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure = { + "ENDCCellActivationFailure", + "ENDCCellActivationFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationFailure_tags_1, + sizeof(asn_DEF_ENDCCellActivationFailure_tags_1) + /sizeof(asn_DEF_ENDCCellActivationFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationFailure_tags_1) + /sizeof(asn_DEF_ENDCCellActivationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.h b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.h new file mode 100644 index 0000000..9e35643 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationFailure_H_ +#define _ENDCCellActivationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationFailure */ +typedef struct ENDCCellActivationFailure { + ProtocolIE_Container_119P100_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.c b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.c new file mode 100644 index 0000000..63fcb66 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationRequest.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P98, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_specs_1 = { + sizeof(struct ENDCCellActivationRequest), + offsetof(struct ENDCCellActivationRequest, _asn_ctx), + asn_MAP_ENDCCellActivationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest = { + "ENDCCellActivationRequest", + "ENDCCellActivationRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationRequest_tags_1, + sizeof(asn_DEF_ENDCCellActivationRequest_tags_1) + /sizeof(asn_DEF_ENDCCellActivationRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationRequest_tags_1) + /sizeof(asn_DEF_ENDCCellActivationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.h b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.h new file mode 100644 index 0000000..db35ae9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationRequest_H_ +#define _ENDCCellActivationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationRequest */ +typedef struct ENDCCellActivationRequest { + ProtocolIE_Container_119P98_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.c b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.c new file mode 100644 index 0000000..3acfb26 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationResponse.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P99, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_specs_1 = { + sizeof(struct ENDCCellActivationResponse), + offsetof(struct ENDCCellActivationResponse, _asn_ctx), + asn_MAP_ENDCCellActivationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse = { + "ENDCCellActivationResponse", + "ENDCCellActivationResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationResponse_tags_1, + sizeof(asn_DEF_ENDCCellActivationResponse_tags_1) + /sizeof(asn_DEF_ENDCCellActivationResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationResponse_tags_1) + /sizeof(asn_DEF_ENDCCellActivationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.h b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.h new file mode 100644 index 0000000..0be53d8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCCellActivationResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationResponse_H_ +#define _ENDCCellActivationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationResponse */ +typedef struct ENDCCellActivationResponse { + ProtocolIE_Container_119P99_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c new file mode 100644 index 0000000..a2081b2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P91, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_specs_1 = { + sizeof(struct ENDCConfigurationUpdate), + offsetof(struct ENDCConfigurationUpdate, _asn_ctx), + asn_MAP_ENDCConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate = { + "ENDCConfigurationUpdate", + "ENDCConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdate_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h new file mode 100644 index 0000000..c0e0509 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdate_H_ +#define _ENDCConfigurationUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdate */ +typedef struct ENDCConfigurationUpdate { + ProtocolIE_Container_119P91_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000..4ad0ee3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P94, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge), + offsetof(struct ENDCConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge = { + "ENDCConfigurationUpdateAcknowledge", + "ENDCConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000..8831054 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdateAcknowledge_H_ +#define _ENDCConfigurationUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdateAcknowledge */ +typedef struct ENDCConfigurationUpdateAcknowledge { + ProtocolIE_Container_119P94_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c new file mode 100644 index 0000000..b8dfe83 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P97, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_specs_1 = { + sizeof(struct ENDCConfigurationUpdateFailure), + offsetof(struct ENDCConfigurationUpdateFailure, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure = { + "ENDCConfigurationUpdateFailure", + "ENDCConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h new file mode 100644 index 0000000..b0a3a2c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdateFailure_H_ +#define _ENDCConfigurationUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdateFailure */ +typedef struct ENDCConfigurationUpdateFailure { + ProtocolIE_Container_119P97_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c new file mode 100644 index 0000000..7cf8fad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCPartialResetConfirm.h" + +static asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P104, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_specs_1 = { + sizeof(struct ENDCPartialResetConfirm), + offsetof(struct ENDCPartialResetConfirm, _asn_ctx), + asn_MAP_ENDCPartialResetConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm = { + "ENDCPartialResetConfirm", + "ENDCPartialResetConfirm", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetConfirm_tags_1, + sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1) + /sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1[0]), /* 1 */ + asn_DEF_ENDCPartialResetConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1) + /sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetConfirm_1, + 1, /* Elements count */ + &asn_SPC_ENDCPartialResetConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h new file mode 100644 index 0000000..d4e211d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCPartialResetConfirm_H_ +#define _ENDCPartialResetConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCPartialResetConfirm */ +typedef struct ENDCPartialResetConfirm { + ProtocolIE_Container_119P104_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCPartialResetConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.c b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.c new file mode 100644 index 0000000..c62458d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCPartialResetRequired.h" + +static asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P103, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_specs_1 = { + sizeof(struct ENDCPartialResetRequired), + offsetof(struct ENDCPartialResetRequired, _asn_ctx), + asn_MAP_ENDCPartialResetRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired = { + "ENDCPartialResetRequired", + "ENDCPartialResetRequired", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetRequired_tags_1, + sizeof(asn_DEF_ENDCPartialResetRequired_tags_1) + /sizeof(asn_DEF_ENDCPartialResetRequired_tags_1[0]), /* 1 */ + asn_DEF_ENDCPartialResetRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetRequired_tags_1) + /sizeof(asn_DEF_ENDCPartialResetRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetRequired_1, + 1, /* Elements count */ + &asn_SPC_ENDCPartialResetRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.h b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.h new file mode 100644 index 0000000..1c8a44b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCPartialResetRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCPartialResetRequired_H_ +#define _ENDCPartialResetRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCPartialResetRequired */ +typedef struct ENDCPartialResetRequired { + ProtocolIE_Container_119P103_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCPartialResetRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c new file mode 100644 index 0000000..786cd39 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalFailure.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P117, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_specs_1 = { + sizeof(struct ENDCX2RemovalFailure), + offsetof(struct ENDCX2RemovalFailure, _asn_ctx), + asn_MAP_ENDCX2RemovalFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure = { + "ENDCX2RemovalFailure", + "ENDCX2RemovalFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalFailure_tags_1, + sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h new file mode 100644 index 0000000..0c660f2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalFailure_H_ +#define _ENDCX2RemovalFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalFailure */ +typedef struct ENDCX2RemovalFailure { + ProtocolIE_Container_119P117_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c new file mode 100644 index 0000000..bcf7274 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalRequest.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P111, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_specs_1 = { + sizeof(struct ENDCX2RemovalRequest), + offsetof(struct ENDCX2RemovalRequest, _asn_ctx), + asn_MAP_ENDCX2RemovalRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest = { + "ENDCX2RemovalRequest", + "ENDCX2RemovalRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalRequest_tags_1, + sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h new file mode 100644 index 0000000..be0dffb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalRequest_H_ +#define _ENDCX2RemovalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalRequest */ +typedef struct ENDCX2RemovalRequest { + ProtocolIE_Container_119P111_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c new file mode 100644 index 0000000..36a3332 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalResponse.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P114, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_specs_1 = { + sizeof(struct ENDCX2RemovalResponse), + offsetof(struct ENDCX2RemovalResponse, _asn_ctx), + asn_MAP_ENDCX2RemovalResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse = { + "ENDCX2RemovalResponse", + "ENDCX2RemovalResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalResponse_tags_1, + sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h new file mode 100644 index 0000000..57b10ef --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalResponse_H_ +#define _ENDCX2RemovalResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalResponse */ +typedef struct ENDCX2RemovalResponse { + ProtocolIE_Container_119P114_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.c new file mode 100644 index 0000000..f7e81a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupFailure.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_specs_1 = { + sizeof(struct ENDCX2SetupFailure), + offsetof(struct ENDCX2SetupFailure, _asn_ctx), + asn_MAP_ENDCX2SetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure = { + "ENDCX2SetupFailure", + "ENDCX2SetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupFailure_tags_1, + sizeof(asn_DEF_ENDCX2SetupFailure_tags_1) + /sizeof(asn_DEF_ENDCX2SetupFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupFailure_tags_1) + /sizeof(asn_DEF_ENDCX2SetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.h new file mode 100644 index 0000000..9f8ee9c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupFailure_H_ +#define _ENDCX2SetupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupFailure */ +typedef struct ENDCX2SetupFailure { + ProtocolIE_Container_119P90_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.c new file mode 100644 index 0000000..2bf0e08 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupRequest.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_specs_1 = { + sizeof(struct ENDCX2SetupRequest), + offsetof(struct ENDCX2SetupRequest, _asn_ctx), + asn_MAP_ENDCX2SetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest = { + "ENDCX2SetupRequest", + "ENDCX2SetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupRequest_tags_1, + sizeof(asn_DEF_ENDCX2SetupRequest_tags_1) + /sizeof(asn_DEF_ENDCX2SetupRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupRequest_tags_1) + /sizeof(asn_DEF_ENDCX2SetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.h new file mode 100644 index 0000000..cbebc92 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupRequest_H_ +#define _ENDCX2SetupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupRequest */ +typedef struct ENDCX2SetupRequest { + ProtocolIE_Container_119P84_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.c b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.c new file mode 100644 index 0000000..fcc75dd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupResponse.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_specs_1 = { + sizeof(struct ENDCX2SetupResponse), + offsetof(struct ENDCX2SetupResponse, _asn_ctx), + asn_MAP_ENDCX2SetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse = { + "ENDCX2SetupResponse", + "ENDCX2SetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupResponse_tags_1, + sizeof(asn_DEF_ENDCX2SetupResponse_tags_1) + /sizeof(asn_DEF_ENDCX2SetupResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupResponse_tags_1) + /sizeof(asn_DEF_ENDCX2SetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.h b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.h new file mode 100644 index 0000000..22b3367 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ENDCX2SetupResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupResponse_H_ +#define _ENDCX2SetupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupResponse */ +typedef struct ENDCX2SetupResponse { + ProtocolIE_Container_119P87_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EPLMNs.c b/E2Manager/asn1codec/e2ap_engine/EPLMNs.c new file mode 100644 index 0000000..349d211 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EPLMNs.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EPLMNs.h" + +asn_per_constraints_t asn_PER_type_EPLMNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EPLMNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_EPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_EPLMNs_specs_1 = { + sizeof(struct EPLMNs), + offsetof(struct EPLMNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_EPLMNs = { + "EPLMNs", + "EPLMNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_EPLMNs_tags_1, + sizeof(asn_DEF_EPLMNs_tags_1) + /sizeof(asn_DEF_EPLMNs_tags_1[0]), /* 1 */ + asn_DEF_EPLMNs_tags_1, /* Same as above */ + sizeof(asn_DEF_EPLMNs_tags_1) + /sizeof(asn_DEF_EPLMNs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EPLMNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_EPLMNs_1, + 1, /* Single element */ + &asn_SPC_EPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EPLMNs.h b/E2Manager/asn1codec/e2ap_engine/EPLMNs.h new file mode 100644 index 0000000..5896f54 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EPLMNs.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EPLMNs_H_ +#define _EPLMNs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EPLMNs */ +typedef struct EPLMNs { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EPLMNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EPLMNs; +extern asn_SET_OF_specifics_t asn_SPC_EPLMNs_specs_1; +extern asn_TYPE_member_t asn_MBR_EPLMNs_1[1]; +extern asn_per_constraints_t asn_PER_type_EPLMNs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EPLMNs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.c b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.c new file mode 100644 index 0000000..1386454 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ERABActivityNotifyItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem, activityReport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UserPlaneTrafficActivityReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "activityReport" + }, + { ATF_POINTER, 1, offsetof(struct ERABActivityNotifyItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P138, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ERABActivityNotifyItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ERABActivityNotifyItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* activityReport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_specs_1 = { + sizeof(struct ERABActivityNotifyItem), + offsetof(struct ERABActivityNotifyItem, _asn_ctx), + asn_MAP_ERABActivityNotifyItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ERABActivityNotifyItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem = { + "ERABActivityNotifyItem", + "ERABActivityNotifyItem", + &asn_OP_SEQUENCE, + asn_DEF_ERABActivityNotifyItem_tags_1, + sizeof(asn_DEF_ERABActivityNotifyItem_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItem_tags_1[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItem_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ERABActivityNotifyItem_1, + 3, /* Elements count */ + &asn_SPC_ERABActivityNotifyItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.h b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.h new file mode 100644 index 0000000..40f9807 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItem.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ERABActivityNotifyItem_H_ +#define _ERABActivityNotifyItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "UserPlaneTrafficActivityReport.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ERABActivityNotifyItem */ +typedef struct ERABActivityNotifyItem { + E_RAB_ID_t e_RAB_ID; + UserPlaneTrafficActivityReport_t activityReport; + 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; +} ERABActivityNotifyItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ERABActivityNotifyItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c new file mode 100644 index 0000000..92a1937 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ERABActivityNotifyItemList.h" + +#include "ERABActivityNotifyItem.h" +asn_per_constraints_t asn_PER_type_ERABActivityNotifyItemList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItemList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItemList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ERABActivityNotifyItemList_specs_1 = { + sizeof(struct ERABActivityNotifyItemList), + offsetof(struct ERABActivityNotifyItemList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItemList = { + "ERABActivityNotifyItemList", + "ERABActivityNotifyItemList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ERABActivityNotifyItemList_tags_1, + sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItemList_tags_1, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ERABActivityNotifyItemList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ERABActivityNotifyItemList_1, + 1, /* Single element */ + &asn_SPC_ERABActivityNotifyItemList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h new file mode 100644 index 0000000..e55edde --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ERABActivityNotifyItemList_H_ +#define _ERABActivityNotifyItemList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ERABActivityNotifyItem; + +/* ERABActivityNotifyItemList */ +typedef struct ERABActivityNotifyItemList { + A_SEQUENCE_OF(struct ERABActivityNotifyItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ERABActivityNotifyItemList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItemList; +extern asn_SET_OF_specifics_t asn_SPC_ERABActivityNotifyItemList_specs_1; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItemList_1[1]; +extern asn_per_constraints_t asn_PER_type_ERABActivityNotifyItemList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ERABActivityNotifyItemList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.c b/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.c new file mode 100644 index 0000000..7afe3c9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRA-Mode-Info.h" + +#include "FDD-Info.h" +#include "TDD-Info.h" +asn_per_constraints_t asn_PER_type_EUTRA_Mode_Info_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EUTRA_Mode_Info_1[] = { + { ATF_POINTER, 0, offsetof(struct EUTRA_Mode_Info, choice.fDD), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fDD" + }, + { ATF_POINTER, 0, offsetof(struct EUTRA_Mode_Info, choice.tDD), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tDD" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRA_Mode_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fDD */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tDD */ +}; +asn_CHOICE_specifics_t asn_SPC_EUTRA_Mode_Info_specs_1 = { + sizeof(struct EUTRA_Mode_Info), + offsetof(struct EUTRA_Mode_Info, _asn_ctx), + offsetof(struct EUTRA_Mode_Info, present), + sizeof(((struct EUTRA_Mode_Info *)0)->present), + asn_MAP_EUTRA_Mode_Info_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRA_Mode_Info = { + "EUTRA-Mode-Info", + "EUTRA-Mode-Info", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_EUTRA_Mode_Info_constr_1, CHOICE_constraint }, + asn_MBR_EUTRA_Mode_Info_1, + 2, /* Elements count */ + &asn_SPC_EUTRA_Mode_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.h b/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.h new file mode 100644 index 0000000..0ac76fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRA-Mode-Info.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRA_Mode_Info_H_ +#define _EUTRA_Mode_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EUTRA_Mode_Info_PR { + EUTRA_Mode_Info_PR_NOTHING, /* No components present */ + EUTRA_Mode_Info_PR_fDD, + EUTRA_Mode_Info_PR_tDD + /* Extensions may appear below */ + +} EUTRA_Mode_Info_PR; + +/* Forward declarations */ +struct FDD_Info; +struct TDD_Info; + +/* EUTRA-Mode-Info */ +typedef struct EUTRA_Mode_Info { + EUTRA_Mode_Info_PR present; + union EUTRA_Mode_Info_u { + struct FDD_Info *fDD; + struct TDD_Info *tDD; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRA_Mode_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRA_Mode_Info; +extern asn_CHOICE_specifics_t asn_SPC_EUTRA_Mode_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_EUTRA_Mode_Info_1[2]; +extern asn_per_constraints_t asn_PER_type_EUTRA_Mode_Info_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRA_Mode_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.c b/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.c new file mode 100644 index 0000000..ed504a0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANCellIdentifier.h" + +int +EUTRANCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EUTRANCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier = { + "EUTRANCellIdentifier", + "EUTRANCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_EUTRANCellIdentifier_tags_1, + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_EUTRANCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EUTRANCellIdentifier_constr_1, EUTRANCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.h b/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.h new file mode 100644 index 0000000..b1416d9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANCellIdentifier.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANCellIdentifier_H_ +#define _EUTRANCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANCellIdentifier */ +typedef BIT_STRING_t EUTRANCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier; +asn_struct_free_f EUTRANCellIdentifier_free; +asn_struct_print_f EUTRANCellIdentifier_print; +asn_constr_check_f EUTRANCellIdentifier_constraint; +ber_type_decoder_f EUTRANCellIdentifier_decode_ber; +der_type_encoder_f EUTRANCellIdentifier_encode_der; +xer_type_decoder_f EUTRANCellIdentifier_decode_xer; +xer_type_encoder_f EUTRANCellIdentifier_encode_xer; +per_type_decoder_f EUTRANCellIdentifier_decode_uper; +per_type_encoder_f EUTRANCellIdentifier_encode_uper; +per_type_decoder_f EUTRANCellIdentifier_decode_aper; +per_type_encoder_f EUTRANCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c new file mode 100644 index 0000000..fb60ad7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANRCellResourceCoordinationRequest.h" + +static asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P105, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_specs_1 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest), + offsetof(struct EUTRANRCellResourceCoordinationRequest, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest = { + "EUTRANRCellResourceCoordinationRequest", + "EUTRANRCellResourceCoordinationRequest", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationRequest_1, + 1, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h new file mode 100644 index 0000000..3932077 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANRCellResourceCoordinationRequest_H_ +#define _EUTRANRCellResourceCoordinationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANRCellResourceCoordinationRequest */ +typedef struct EUTRANRCellResourceCoordinationRequest { + ProtocolIE_Container_119P105_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANRCellResourceCoordinationRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c new file mode 100644 index 0000000..c9fb3fc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANRCellResourceCoordinationResponse.h" + +static asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P108, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_specs_1 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse), + offsetof(struct EUTRANRCellResourceCoordinationResponse, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse = { + "EUTRANRCellResourceCoordinationResponse", + "EUTRANRCellResourceCoordinationResponse", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationResponse_1, + 1, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h new file mode 100644 index 0000000..c71d6e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANRCellResourceCoordinationResponse_H_ +#define _EUTRANRCellResourceCoordinationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANRCellResourceCoordinationResponse */ +typedef struct EUTRANRCellResourceCoordinationResponse { + ProtocolIE_Container_119P108_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANRCellResourceCoordinationResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.c b/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.c new file mode 100644 index 0000000..04a8716 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANTraceID.h" + +int +EUTRANTraceID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EUTRANTraceID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EUTRANTraceID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANTraceID = { + "EUTRANTraceID", + "EUTRANTraceID", + &asn_OP_OCTET_STRING, + asn_DEF_EUTRANTraceID_tags_1, + sizeof(asn_DEF_EUTRANTraceID_tags_1) + /sizeof(asn_DEF_EUTRANTraceID_tags_1[0]), /* 1 */ + asn_DEF_EUTRANTraceID_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANTraceID_tags_1) + /sizeof(asn_DEF_EUTRANTraceID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EUTRANTraceID_constr_1, EUTRANTraceID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.h b/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.h new file mode 100644 index 0000000..9f6f4af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EUTRANTraceID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANTraceID_H_ +#define _EUTRANTraceID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANTraceID */ +typedef OCTET_STRING_t EUTRANTraceID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRANTraceID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANTraceID; +asn_struct_free_f EUTRANTraceID_free; +asn_struct_print_f EUTRANTraceID_print; +asn_constr_check_f EUTRANTraceID_constraint; +ber_type_decoder_f EUTRANTraceID_decode_ber; +der_type_encoder_f EUTRANTraceID_encode_der; +xer_type_decoder_f EUTRANTraceID_decode_xer; +xer_type_encoder_f EUTRANTraceID_encode_xer; +per_type_decoder_f EUTRANTraceID_decode_uper; +per_type_encoder_f EUTRANTraceID_encode_uper; +per_type_decoder_f EUTRANTraceID_decode_aper; +per_type_encoder_f EUTRANTraceID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANTraceID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.c b/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.c new file mode 100644 index 0000000..16a210a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EncryptionAlgorithms.h" + +int +EncryptionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EncryptionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EncryptionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EncryptionAlgorithms = { + "EncryptionAlgorithms", + "EncryptionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_EncryptionAlgorithms_tags_1, + sizeof(asn_DEF_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_EncryptionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_EncryptionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_EncryptionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EncryptionAlgorithms_constr_1, EncryptionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.h b/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.h new file mode 100644 index 0000000..ef2936c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EncryptionAlgorithms.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EncryptionAlgorithms_H_ +#define _EncryptionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EncryptionAlgorithms */ +typedef BIT_STRING_t EncryptionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EncryptionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EncryptionAlgorithms; +asn_struct_free_f EncryptionAlgorithms_free; +asn_struct_print_f EncryptionAlgorithms_print; +asn_constr_check_f EncryptionAlgorithms_constraint; +ber_type_decoder_f EncryptionAlgorithms_decode_ber; +der_type_encoder_f EncryptionAlgorithms_encode_der; +xer_type_decoder_f EncryptionAlgorithms_decode_xer; +xer_type_encoder_f EncryptionAlgorithms_encode_xer; +per_type_decoder_f EncryptionAlgorithms_decode_uper; +per_type_encoder_f EncryptionAlgorithms_encode_uper; +per_type_decoder_f EncryptionAlgorithms_decode_aper; +per_type_encoder_f EncryptionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EncryptionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.c b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.c new file mode 100644 index 0000000..fe104b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.c @@ -0,0 +1,139 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EnhancedRNTP.h" + +#include "EnhancedRNTPStartTime.h" +#include "ProtocolExtensionContainer.h" +static int +memb_enhancedRNTPBitmap_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 12 && size <= 8800)) { + /* 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_enhancedRNTPBitmap_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 14, 14, 12, 8800 } /* (SIZE(12..8800,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EnhancedRNTP_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP, enhancedRNTPBitmap), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enhancedRNTPBitmap_constr_2, memb_enhancedRNTPBitmap_constraint_1 }, + 0, 0, /* No default value */ + "enhancedRNTPBitmap" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP, rNTP_High_Power_Threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RNTP_Threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rNTP-High-Power-Threshold" + }, + { ATF_POINTER, 2, offsetof(struct EnhancedRNTP, enhancedRNTPStartTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EnhancedRNTPStartTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "enhancedRNTPStartTime" + }, + { ATF_POINTER, 1, offsetof(struct EnhancedRNTP, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P135, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EnhancedRNTP_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTP_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enhancedRNTPBitmap */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rNTP-High-Power-Threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* enhancedRNTPStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_specs_1 = { + sizeof(struct EnhancedRNTP), + offsetof(struct EnhancedRNTP, _asn_ctx), + asn_MAP_EnhancedRNTP_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_EnhancedRNTP_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP = { + "EnhancedRNTP", + "EnhancedRNTP", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTP_tags_1, + sizeof(asn_DEF_EnhancedRNTP_tags_1) + /sizeof(asn_DEF_EnhancedRNTP_tags_1[0]), /* 1 */ + asn_DEF_EnhancedRNTP_tags_1, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTP_tags_1) + /sizeof(asn_DEF_EnhancedRNTP_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTP_1, + 4, /* Elements count */ + &asn_SPC_EnhancedRNTP_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.h b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.h new file mode 100644 index 0000000..7e3588f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTP.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EnhancedRNTP_H_ +#define _EnhancedRNTP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "RNTP-Threshold.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EnhancedRNTPStartTime; +struct ProtocolExtensionContainer; + +/* EnhancedRNTP */ +typedef struct EnhancedRNTP { + BIT_STRING_t enhancedRNTPBitmap; + RNTP_Threshold_t rNTP_High_Power_Threshold; + struct EnhancedRNTPStartTime *enhancedRNTPStartTime; /* 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; +} EnhancedRNTP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_specs_1; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTP_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnhancedRNTP_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c new file mode 100644 index 0000000..3a44b30 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c @@ -0,0 +1,152 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EnhancedRNTPStartTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_startSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* 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_startSubframeNumber_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9)) { + /* 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_startSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 0, 1023 } /* (0..1023,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startSubframeNumber_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime, startSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSFN_constr_2, memb_startSFN_constraint_1 }, + 0, 0, /* No default value */ + "startSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime, startSubframeNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSubframeNumber_constr_3, memb_startSubframeNumber_constraint_1 }, + 0, 0, /* No default value */ + "startSubframeNumber" + }, + { ATF_POINTER, 1, offsetof(struct EnhancedRNTPStartTime, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P136, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EnhancedRNTPStartTime_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTPStartTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTPStartTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startSubframeNumber */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_specs_1 = { + sizeof(struct EnhancedRNTPStartTime), + offsetof(struct EnhancedRNTPStartTime, _asn_ctx), + asn_MAP_EnhancedRNTPStartTime_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_EnhancedRNTPStartTime_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime = { + "EnhancedRNTPStartTime", + "EnhancedRNTPStartTime", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTPStartTime_tags_1, + sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1) + /sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1[0]), /* 1 */ + asn_DEF_EnhancedRNTPStartTime_tags_1, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1) + /sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTPStartTime_1, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTPStartTime_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h new file mode 100644 index 0000000..617e34e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EnhancedRNTPStartTime_H_ +#define _EnhancedRNTPStartTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* EnhancedRNTPStartTime */ +typedef struct EnhancedRNTPStartTime { + long startSFN; + long startSubframeNumber; + 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; +} EnhancedRNTPStartTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_specs_1; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnhancedRNTPStartTime_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ErrorIndication.c b/E2Manager/asn1codec/e2ap_engine/ErrorIndication.c new file mode 100644 index 0000000..315096b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ErrorIndication.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ErrorIndication.h b/E2Manager/asn1codec/e2ap_engine/ErrorIndication.h new file mode 100644 index 0000000..5701ede --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ErrorIndication.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ErrorIndication */ +typedef struct ErrorIndication { + ProtocolIE_Container_119P21_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ErrorIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/EventType.c b/E2Manager/asn1codec/e2ap_engine/EventType.c new file mode 100644 index 0000000..d233c88 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EventType.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EventType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EventType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_EventType_value2enum_1[] = { + { 0, 22, "change-of-serving-cell" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_EventType_enum2value_1[] = { + 0 /* change-of-serving-cell(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_EventType_specs_1 = { + asn_MAP_EventType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EventType_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_EventType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EventType = { + "EventType", + "EventType", + &asn_OP_NativeEnumerated, + asn_DEF_EventType_tags_1, + sizeof(asn_DEF_EventType_tags_1) + /sizeof(asn_DEF_EventType_tags_1[0]), /* 1 */ + asn_DEF_EventType_tags_1, /* Same as above */ + sizeof(asn_DEF_EventType_tags_1) + /sizeof(asn_DEF_EventType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EventType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EventType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/EventType.h b/E2Manager/asn1codec/e2ap_engine/EventType.h new file mode 100644 index 0000000..239c4a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/EventType.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EventType_H_ +#define _EventType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EventType { + EventType_change_of_serving_cell = 0 + /* + * Enumeration is extensible + */ +} e_EventType; + +/* EventType */ +typedef long EventType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EventType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EventType; +extern const asn_INTEGER_specifics_t asn_SPC_EventType_specs_1; +asn_struct_free_f EventType_free; +asn_struct_print_f EventType_print; +asn_constr_check_f EventType_constraint; +ber_type_decoder_f EventType_decode_ber; +der_type_encoder_f EventType_encode_der; +xer_type_decoder_f EventType_decode_xer; +xer_type_encoder_f EventType_encode_xer; +per_type_decoder_f EventType_decode_uper; +per_type_encoder_f EventType_encode_uper; +per_type_decoder_f EventType_decode_aper; +per_type_encoder_f EventType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EventType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.c b/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.c new file mode 100644 index 0000000..1049bf4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedActivityPeriod.h" + +int +ExpectedActivityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedActivityPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExpectedActivityPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedActivityPeriod = { + "ExpectedActivityPeriod", + "ExpectedActivityPeriod", + &asn_OP_NativeInteger, + asn_DEF_ExpectedActivityPeriod_tags_1, + sizeof(asn_DEF_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + asn_DEF_ExpectedActivityPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedActivityPeriod_constr_1, ExpectedActivityPeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.h b/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.h new file mode 100644 index 0000000..db13b37 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedActivityPeriod.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedActivityPeriod_H_ +#define _ExpectedActivityPeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExpectedActivityPeriod */ +typedef long ExpectedActivityPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedActivityPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedActivityPeriod; +asn_struct_free_f ExpectedActivityPeriod_free; +asn_struct_print_f ExpectedActivityPeriod_print; +asn_constr_check_f ExpectedActivityPeriod_constraint; +ber_type_decoder_f ExpectedActivityPeriod_decode_ber; +der_type_encoder_f ExpectedActivityPeriod_encode_der; +xer_type_decoder_f ExpectedActivityPeriod_decode_xer; +xer_type_encoder_f ExpectedActivityPeriod_encode_xer; +per_type_decoder_f ExpectedActivityPeriod_decode_uper; +per_type_encoder_f ExpectedActivityPeriod_encode_uper; +per_type_decoder_f ExpectedActivityPeriod_decode_aper; +per_type_encoder_f ExpectedActivityPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedActivityPeriod_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.c b/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.c new file mode 100644 index 0000000..7cf74be --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.c @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedHOInterval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedHOInterval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ExpectedHOInterval_value2enum_1[] = { + { 0, 5, "sec15" }, + { 1, 5, "sec30" }, + { 2, 5, "sec60" }, + { 3, 5, "sec90" }, + { 4, 6, "sec120" }, + { 5, 6, "sec180" }, + { 6, 9, "long-time" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ExpectedHOInterval_enum2value_1[] = { + 6, /* long-time(6) */ + 4, /* sec120(4) */ + 0, /* sec15(0) */ + 5, /* sec180(5) */ + 1, /* sec30(1) */ + 2, /* sec60(2) */ + 3 /* sec90(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ExpectedHOInterval_specs_1 = { + asn_MAP_ExpectedHOInterval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ExpectedHOInterval_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ExpectedHOInterval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedHOInterval = { + "ExpectedHOInterval", + "ExpectedHOInterval", + &asn_OP_NativeEnumerated, + asn_DEF_ExpectedHOInterval_tags_1, + sizeof(asn_DEF_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_ExpectedHOInterval_tags_1[0]), /* 1 */ + asn_DEF_ExpectedHOInterval_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_ExpectedHOInterval_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedHOInterval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ExpectedHOInterval_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.h b/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.h new file mode 100644 index 0000000..302eb70 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedHOInterval.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedHOInterval_H_ +#define _ExpectedHOInterval_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ExpectedHOInterval { + ExpectedHOInterval_sec15 = 0, + ExpectedHOInterval_sec30 = 1, + ExpectedHOInterval_sec60 = 2, + ExpectedHOInterval_sec90 = 3, + ExpectedHOInterval_sec120 = 4, + ExpectedHOInterval_sec180 = 5, + ExpectedHOInterval_long_time = 6 + /* + * Enumeration is extensible + */ +} e_ExpectedHOInterval; + +/* ExpectedHOInterval */ +typedef long ExpectedHOInterval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedHOInterval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedHOInterval; +extern const asn_INTEGER_specifics_t asn_SPC_ExpectedHOInterval_specs_1; +asn_struct_free_f ExpectedHOInterval_free; +asn_struct_print_f ExpectedHOInterval_print; +asn_constr_check_f ExpectedHOInterval_constraint; +ber_type_decoder_f ExpectedHOInterval_decode_ber; +der_type_encoder_f ExpectedHOInterval_encode_der; +xer_type_decoder_f ExpectedHOInterval_decode_xer; +xer_type_encoder_f ExpectedHOInterval_encode_xer; +per_type_decoder_f ExpectedHOInterval_decode_uper; +per_type_encoder_f ExpectedHOInterval_encode_uper; +per_type_decoder_f ExpectedHOInterval_decode_aper; +per_type_encoder_f ExpectedHOInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedHOInterval_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.c b/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.c new file mode 100644 index 0000000..89bbd3f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedIdlePeriod.h" + +int +ExpectedIdlePeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedIdlePeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExpectedIdlePeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedIdlePeriod = { + "ExpectedIdlePeriod", + "ExpectedIdlePeriod", + &asn_OP_NativeInteger, + asn_DEF_ExpectedIdlePeriod_tags_1, + sizeof(asn_DEF_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + asn_DEF_ExpectedIdlePeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedIdlePeriod_constr_1, ExpectedIdlePeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.h b/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.h new file mode 100644 index 0000000..7f2b2bd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedIdlePeriod.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedIdlePeriod_H_ +#define _ExpectedIdlePeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExpectedIdlePeriod */ +typedef long ExpectedIdlePeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedIdlePeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedIdlePeriod; +asn_struct_free_f ExpectedIdlePeriod_free; +asn_struct_print_f ExpectedIdlePeriod_print; +asn_constr_check_f ExpectedIdlePeriod_constraint; +ber_type_decoder_f ExpectedIdlePeriod_decode_ber; +der_type_encoder_f ExpectedIdlePeriod_encode_der; +xer_type_decoder_f ExpectedIdlePeriod_decode_xer; +xer_type_encoder_f ExpectedIdlePeriod_encode_xer; +per_type_decoder_f ExpectedIdlePeriod_decode_uper; +per_type_encoder_f ExpectedIdlePeriod_encode_uper; +per_type_decoder_f ExpectedIdlePeriod_decode_aper; +per_type_encoder_f ExpectedIdlePeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedIdlePeriod_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c b/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c new file mode 100644 index 0000000..d48ab2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedUEActivityBehaviour.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_1[] = { + { ATF_POINTER, 4, offsetof(struct ExpectedUEActivityBehaviour, expectedActivityPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedActivityPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivityPeriod" + }, + { ATF_POINTER, 3, offsetof(struct ExpectedUEActivityBehaviour, expectedIdlePeriod), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedIdlePeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedIdlePeriod" + }, + { ATF_POINTER, 2, offsetof(struct ExpectedUEActivityBehaviour, sourceofUEActivityBehaviourInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SourceOfUEActivityBehaviourInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceofUEActivityBehaviourInformation" + }, + { ATF_POINTER, 1, offsetof(struct ExpectedUEActivityBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P143, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExpectedUEActivityBehaviour_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ExpectedUEActivityBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEActivityBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivityPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedIdlePeriod */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sourceofUEActivityBehaviourInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_specs_1 = { + sizeof(struct ExpectedUEActivityBehaviour), + offsetof(struct ExpectedUEActivityBehaviour, _asn_ctx), + asn_MAP_ExpectedUEActivityBehaviour_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ExpectedUEActivityBehaviour_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour = { + "ExpectedUEActivityBehaviour", + "ExpectedUEActivityBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEActivityBehaviour_tags_1, + sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + asn_DEF_ExpectedUEActivityBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEActivityBehaviour_1, + 4, /* Elements count */ + &asn_SPC_ExpectedUEActivityBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h b/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h new file mode 100644 index 0000000..ff4c8a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedUEActivityBehaviour_H_ +#define _ExpectedUEActivityBehaviour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ExpectedActivityPeriod.h" +#include "ExpectedIdlePeriod.h" +#include "SourceOfUEActivityBehaviourInformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ExpectedUEActivityBehaviour */ +typedef struct ExpectedUEActivityBehaviour { + ExpectedActivityPeriod_t *expectedActivityPeriod; /* OPTIONAL */ + ExpectedIdlePeriod_t *expectedIdlePeriod; /* OPTIONAL */ + SourceOfUEActivityBehaviourInformation_t *sourceofUEActivityBehaviourInformation; /* 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; +} ExpectedUEActivityBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_specs_1; +extern asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedUEActivityBehaviour_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.c b/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.c new file mode 100644 index 0000000..051f2e0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedUEBehaviour.h" + +#include "ExpectedUEActivityBehaviour.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_1[] = { + { ATF_POINTER, 3, offsetof(struct ExpectedUEBehaviour, expectedActivity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedUEActivityBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivity" + }, + { ATF_POINTER, 2, offsetof(struct ExpectedUEBehaviour, expectedHOInterval), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedHOInterval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedHOInterval" + }, + { ATF_POINTER, 1, offsetof(struct ExpectedUEBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P142, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExpectedUEBehaviour_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ExpectedUEBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedHOInterval */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_specs_1 = { + sizeof(struct ExpectedUEBehaviour), + offsetof(struct ExpectedUEBehaviour, _asn_ctx), + asn_MAP_ExpectedUEBehaviour_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ExpectedUEBehaviour_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour = { + "ExpectedUEBehaviour", + "ExpectedUEBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEBehaviour_tags_1, + sizeof(asn_DEF_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + asn_DEF_ExpectedUEBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEBehaviour_1, + 3, /* Elements count */ + &asn_SPC_ExpectedUEBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.h b/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.h new file mode 100644 index 0000000..3198631 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExpectedUEBehaviour.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedUEBehaviour_H_ +#define _ExpectedUEBehaviour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ExpectedHOInterval.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ExpectedUEActivityBehaviour; +struct ProtocolExtensionContainer; + +/* ExpectedUEBehaviour */ +typedef struct ExpectedUEBehaviour { + struct ExpectedUEActivityBehaviour *expectedActivity; /* OPTIONAL */ + ExpectedHOInterval_t *expectedHOInterval; /* 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; +} ExpectedUEBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_specs_1; +extern asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedUEBehaviour_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.c b/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.c new file mode 100644 index 0000000..79e37bf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExtendedBitRate.h" + +int +ExtendedBitRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 10000000001 && value <= 4000000000000)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_ExtendedBitRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 42, -1, 10000000001, 4000000000000 } /* (10000000001..4000000000000,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExtendedBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedBitRate = { + "ExtendedBitRate", + "ExtendedBitRate", + &asn_OP_INTEGER, + asn_DEF_ExtendedBitRate_tags_1, + sizeof(asn_DEF_ExtendedBitRate_tags_1) + /sizeof(asn_DEF_ExtendedBitRate_tags_1[0]), /* 1 */ + asn_DEF_ExtendedBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_ExtendedBitRate_tags_1) + /sizeof(asn_DEF_ExtendedBitRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExtendedBitRate_constr_1, ExtendedBitRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.h b/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.h new file mode 100644 index 0000000..ab31760 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExtendedBitRate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExtendedBitRate_H_ +#define _ExtendedBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExtendedBitRate */ +typedef INTEGER_t ExtendedBitRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExtendedBitRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExtendedBitRate; +asn_struct_free_f ExtendedBitRate_free; +asn_struct_print_f ExtendedBitRate_print; +asn_constr_check_f ExtendedBitRate_constraint; +ber_type_decoder_f ExtendedBitRate_decode_ber; +der_type_encoder_f ExtendedBitRate_encode_der; +xer_type_decoder_f ExtendedBitRate_decode_xer; +xer_type_encoder_f ExtendedBitRate_encode_xer; +per_type_decoder_f ExtendedBitRate_decode_uper; +per_type_encoder_f ExtendedBitRate_encode_uper; +per_type_decoder_f ExtendedBitRate_decode_aper; +per_type_encoder_f ExtendedBitRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExtendedBitRate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c b/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c new file mode 100644 index 0000000..ede603f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c @@ -0,0 +1,128 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExtendedULInterferenceOverloadInfo.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_associatedSubframes_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5)) { + /* 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_associatedSubframes_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 5, 5 } /* (SIZE(5..5)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo, associatedSubframes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_associatedSubframes_constr_2, memb_associatedSubframes_constraint_1 }, + 0, 0, /* No default value */ + "associatedSubframes" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo, extended_ul_InterferenceOverloadIndication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_InterferenceOverloadIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "extended-ul-InterferenceOverloadIndication" + }, + { ATF_POINTER, 1, offsetof(struct ExtendedULInterferenceOverloadInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P144, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExtendedULInterferenceOverloadInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExtendedULInterferenceOverloadInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* associatedSubframes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* extended-ul-InterferenceOverloadIndication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1 = { + sizeof(struct ExtendedULInterferenceOverloadInfo), + offsetof(struct ExtendedULInterferenceOverloadInfo, _asn_ctx), + asn_MAP_ExtendedULInterferenceOverloadInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ExtendedULInterferenceOverloadInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo = { + "ExtendedULInterferenceOverloadInfo", + "ExtendedULInterferenceOverloadInfo", + &asn_OP_SEQUENCE, + asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1, + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[0]), /* 1 */ + asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExtendedULInterferenceOverloadInfo_1, + 3, /* Elements count */ + &asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h b/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h new file mode 100644 index 0000000..2c2c869 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExtendedULInterferenceOverloadInfo_H_ +#define _ExtendedULInterferenceOverloadInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "UL-InterferenceOverloadIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ExtendedULInterferenceOverloadInfo */ +typedef struct ExtendedULInterferenceOverloadInfo { + BIT_STRING_t associatedSubframes; + UL_InterferenceOverloadIndication_t extended_ul_InterferenceOverloadIndication; + 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; +} ExtendedULInterferenceOverloadInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExtendedULInterferenceOverloadInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-Info.c b/E2Manager/asn1codec/e2ap_engine/FDD-Info.c new file mode 100644 index 0000000..2af7835 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-Info.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, uL_EARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-EARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, dL_EARFCN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-EARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, uL_Transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Transmission-Bandwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, dL_Transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Transmission-Bandwidth" + }, + { ATF_POINTER, 1, offsetof(struct FDD_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P145, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_Info_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_FDD_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-EARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-EARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_specs_1 = { + sizeof(struct FDD_Info), + offsetof(struct FDD_Info, _asn_ctx), + asn_MAP_FDD_Info_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_FDD_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_Info = { + "FDD-Info", + "FDD-Info", + &asn_OP_SEQUENCE, + asn_DEF_FDD_Info_tags_1, + sizeof(asn_DEF_FDD_Info_tags_1) + /sizeof(asn_DEF_FDD_Info_tags_1[0]), /* 1 */ + asn_DEF_FDD_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_Info_tags_1) + /sizeof(asn_DEF_FDD_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_Info_1, + 5, /* Elements count */ + &asn_SPC_FDD_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-Info.h b/E2Manager/asn1codec/e2ap_engine/FDD-Info.h new file mode 100644 index 0000000..203b603 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-Info.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_Info_H_ +#define _FDD_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EARFCN.h" +#include "Transmission-Bandwidth.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-Info */ +typedef struct FDD_Info { + EARFCN_t uL_EARFCN; + EARFCN_t dL_EARFCN; + Transmission_Bandwidth_t uL_Transmission_Bandwidth; + Transmission_Bandwidth_t dL_Transmission_Bandwidth; + 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; +} FDD_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_Info_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c b/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c new file mode 100644 index 0000000..b5286f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-InfoNeighbourServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, ul_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, dl_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NRFreqInfo" + }, + { ATF_POINTER, 1, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P94, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_InfoNeighbourServedNRCell_Information_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoNeighbourServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information, _asn_ctx), + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information = { + "FDD-InfoNeighbourServedNRCell-Information", + "FDD-InfoNeighbourServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1, + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1, + 3, /* Elements count */ + &asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h b/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h new file mode 100644 index 0000000..248a211 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_InfoNeighbourServedNRCell_Information_H_ +#define _FDD_InfoNeighbourServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-InfoNeighbourServedNRCell-Information */ +typedef struct FDD_InfoNeighbourServedNRCell_Information { + NRFreqInfo_t ul_NRFreqInfo; + NRFreqInfo_t dl_NRFreqInfo; + 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; +} FDD_InfoNeighbourServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_InfoNeighbourServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c b/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c new file mode 100644 index 0000000..a00ad0c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-InfoServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, ul_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, dl_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, ul_NR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NR-TxBW" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, dl_NR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NR-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct FDD_InfoServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P93, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_InfoServedNRCell_Information_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_FDD_InfoServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-NR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-NR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_specs_1 = { + sizeof(struct FDD_InfoServedNRCell_Information), + offsetof(struct FDD_InfoServedNRCell_Information, _asn_ctx), + asn_MAP_FDD_InfoServedNRCell_Information_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_FDD_InfoServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information = { + "FDD-InfoServedNRCell-Information", + "FDD-InfoServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoServedNRCell_Information_tags_1, + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_FDD_InfoServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoServedNRCell_Information_1, + 5, /* Elements count */ + &asn_SPC_FDD_InfoServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h b/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h new file mode 100644 index 0000000..9e17d9e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_InfoServedNRCell_Information_H_ +#define _FDD_InfoServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-InfoServedNRCell-Information */ +typedef struct FDD_InfoServedNRCell_Information { + NRFreqInfo_t ul_NRFreqInfo; + NRFreqInfo_t dl_NRFreqInfo; + NR_TxBW_t ul_NR_TxBW; + NR_TxBW_t dl_NR_TxBW; + 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; +} FDD_InfoServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_InfoServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.c b/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.c new file mode 100644 index 0000000..6ffbe38 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FiveGS-TAC.h" + +int +FiveGS_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_FiveGS_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC = { + "FiveGS-TAC", + "FiveGS-TAC", + &asn_OP_OCTET_STRING, + asn_DEF_FiveGS_TAC_tags_1, + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + asn_DEF_FiveGS_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FiveGS_TAC_constr_1, FiveGS_TAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.h b/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.h new file mode 100644 index 0000000..a390692 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FiveGS-TAC.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FiveGS_TAC_H_ +#define _FiveGS_TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FiveGS-TAC */ +typedef OCTET_STRING_t FiveGS_TAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC; +asn_struct_free_f FiveGS_TAC_free; +asn_struct_print_f FiveGS_TAC_print; +asn_constr_check_f FiveGS_TAC_constraint; +ber_type_decoder_f FiveGS_TAC_decode_ber; +der_type_encoder_f FiveGS_TAC_encode_der; +xer_type_decoder_f FiveGS_TAC_decode_xer; +xer_type_encoder_f FiveGS_TAC_encode_xer; +per_type_decoder_f FiveGS_TAC_decode_uper; +per_type_encoder_f FiveGS_TAC_encode_uper; +per_type_decoder_f FiveGS_TAC_decode_aper; +per_type_encoder_f FiveGS_TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FiveGS_TAC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.c new file mode 100644 index 0000000..5d79dde --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenInterRATs.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ForbiddenInterRATs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_ForbiddenInterRATs_enum2value_1[] = { + 0, /* all(0) */ + 3, /* cdma2000(3) */ + 5, /* cdma2000andutran(5) */ + 1, /* geran(1) */ + 4, /* geranandutran(4) */ + 2 /* utran(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ForbiddenInterRATs_specs_1 = { + asn_MAP_ForbiddenInterRATs_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_ForbiddenInterRATs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenInterRATs = { + "ForbiddenInterRATs", + "ForbiddenInterRATs", + &asn_OP_NativeEnumerated, + asn_DEF_ForbiddenInterRATs_tags_1, + sizeof(asn_DEF_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_ForbiddenInterRATs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenInterRATs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_ForbiddenInterRATs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenInterRATs_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ForbiddenInterRATs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.h new file mode 100644 index 0000000..2e8e202 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenInterRATs.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenInterRATs_H_ +#define _ForbiddenInterRATs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ForbiddenInterRATs { + ForbiddenInterRATs_all = 0, + ForbiddenInterRATs_geran = 1, + ForbiddenInterRATs_utran = 2, + ForbiddenInterRATs_cdma2000 = 3, + /* + * Enumeration is extensible + */ + ForbiddenInterRATs_geranandutran = 4, + ForbiddenInterRATs_cdma2000andutran = 5 +} e_ForbiddenInterRATs; + +/* ForbiddenInterRATs */ +typedef long ForbiddenInterRATs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ForbiddenInterRATs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenInterRATs; +extern const asn_INTEGER_specifics_t asn_SPC_ForbiddenInterRATs_specs_1; +asn_struct_free_f ForbiddenInterRATs_free; +asn_struct_print_f ForbiddenInterRATs_print; +asn_constr_check_f ForbiddenInterRATs_constraint; +ber_type_decoder_f ForbiddenInterRATs_decode_ber; +der_type_encoder_f ForbiddenInterRATs_encode_der; +xer_type_decoder_f ForbiddenInterRATs_decode_xer; +xer_type_encoder_f ForbiddenInterRATs_encode_xer; +per_type_decoder_f ForbiddenInterRATs_decode_uper; +per_type_encoder_f ForbiddenInterRATs_encode_uper; +per_type_decoder_f ForbiddenInterRATs_decode_aper; +per_type_encoder_f ForbiddenInterRATs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenInterRATs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.c new file mode 100644 index 0000000..29722fc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLACs.h" + +asn_per_constraints_t asn_PER_type_ForbiddenLACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenLACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenLACs_specs_1 = { + sizeof(struct ForbiddenLACs), + offsetof(struct ForbiddenLACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLACs = { + "ForbiddenLACs", + "ForbiddenLACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenLACs_tags_1, + sizeof(asn_DEF_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_ForbiddenLACs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLACs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_ForbiddenLACs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenLACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenLACs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenLACs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.h new file mode 100644 index 0000000..7733e54 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLACs.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLACs_H_ +#define _ForbiddenLACs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ForbiddenLACs */ +typedef struct ForbiddenLACs { + A_SEQUENCE_OF(LAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLACs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenLACs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLACs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenLACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLACs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.c new file mode 100644 index 0000000..39d4b3e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLAs-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item, forbiddenLACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenLACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLACs" + }, + { ATF_POINTER, 1, offsetof(struct ForbiddenLAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P147, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ForbiddenLAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenLAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenLACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_specs_1 = { + sizeof(struct ForbiddenLAs_Item), + offsetof(struct ForbiddenLAs_Item, _asn_ctx), + asn_MAP_ForbiddenLAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ForbiddenLAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item = { + "ForbiddenLAs-Item", + "ForbiddenLAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenLAs_Item_tags_1, + sizeof(asn_DEF_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenLAs_Item_1, + 3, /* Elements count */ + &asn_SPC_ForbiddenLAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.h new file mode 100644 index 0000000..05cdd84 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLAs_Item_H_ +#define _ForbiddenLAs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenLACs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ForbiddenLAs-Item */ +typedef struct ForbiddenLAs_Item { + PLMN_Identity_t pLMN_Identity; + 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; +} ForbiddenLAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLAs_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.c new file mode 100644 index 0000000..fe2699a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLAs.h" + +#include "ForbiddenLAs-Item.h" +asn_per_constraints_t asn_PER_type_ForbiddenLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenLAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenLAs_specs_1 = { + sizeof(struct ForbiddenLAs), + offsetof(struct ForbiddenLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs = { + "ForbiddenLAs", + "ForbiddenLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenLAs_tags_1, + sizeof(asn_DEF_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenLAs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenLAs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.h new file mode 100644 index 0000000..d05198a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenLAs.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLAs_H_ +#define _ForbiddenLAs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ForbiddenLAs_Item; + +/* ForbiddenLAs */ +typedef struct ForbiddenLAs { + A_SEQUENCE_OF(struct ForbiddenLAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenLAs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenLAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLAs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.c new file mode 100644 index 0000000..7f21f29 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTACs.h" + +asn_per_constraints_t asn_PER_type_ForbiddenTACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenTACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenTACs_specs_1 = { + sizeof(struct ForbiddenTACs), + offsetof(struct ForbiddenTACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTACs = { + "ForbiddenTACs", + "ForbiddenTACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenTACs_tags_1, + sizeof(asn_DEF_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_ForbiddenTACs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTACs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_ForbiddenTACs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenTACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenTACs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenTACs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.h new file mode 100644 index 0000000..f2cc9c3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTACs.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTACs_H_ +#define _ForbiddenTACs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ForbiddenTACs */ +typedef struct ForbiddenTACs { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTACs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenTACs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTACs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenTACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTACs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.c new file mode 100644 index 0000000..6e4561f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTAs-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item, forbiddenTACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenTACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTACs" + }, + { ATF_POINTER, 1, offsetof(struct ForbiddenTAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P146, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ForbiddenTAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenTAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenTACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_specs_1 = { + sizeof(struct ForbiddenTAs_Item), + offsetof(struct ForbiddenTAs_Item, _asn_ctx), + asn_MAP_ForbiddenTAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ForbiddenTAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item = { + "ForbiddenTAs-Item", + "ForbiddenTAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenTAs_Item_tags_1, + sizeof(asn_DEF_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_ForbiddenTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.h new file mode 100644 index 0000000..007d88d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTAs_Item_H_ +#define _ForbiddenTAs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenTACs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ForbiddenTAs-Item */ +typedef struct ForbiddenTAs_Item { + PLMN_Identity_t pLMN_Identity; + 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; +} ForbiddenTAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTAs_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.c b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.c new file mode 100644 index 0000000..a016c77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTAs.h" + +#include "ForbiddenTAs-Item.h" +asn_per_constraints_t asn_PER_type_ForbiddenTAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenTAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenTAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenTAs_specs_1 = { + sizeof(struct ForbiddenTAs), + offsetof(struct ForbiddenTAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs = { + "ForbiddenTAs", + "ForbiddenTAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenTAs_tags_1, + sizeof(asn_DEF_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTAs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenTAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenTAs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenTAs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.h b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.h new file mode 100644 index 0000000..6336765 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ForbiddenTAs.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTAs_H_ +#define _ForbiddenTAs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ForbiddenTAs_Item; + +/* ForbiddenTAs */ +typedef struct ForbiddenTAs { + A_SEQUENCE_OF(struct ForbiddenTAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenTAs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenTAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTAs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Fourframes.c b/E2Manager/asn1codec/e2ap_engine/Fourframes.c new file mode 100644 index 0000000..e701246 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Fourframes.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Fourframes.h" + +int +Fourframes_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_Fourframes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Fourframes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Fourframes = { + "Fourframes", + "Fourframes", + &asn_OP_BIT_STRING, + asn_DEF_Fourframes_tags_1, + sizeof(asn_DEF_Fourframes_tags_1) + /sizeof(asn_DEF_Fourframes_tags_1[0]), /* 1 */ + asn_DEF_Fourframes_tags_1, /* Same as above */ + sizeof(asn_DEF_Fourframes_tags_1) + /sizeof(asn_DEF_Fourframes_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Fourframes_constr_1, Fourframes_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Fourframes.h b/E2Manager/asn1codec/e2ap_engine/Fourframes.h new file mode 100644 index 0000000..7979b3e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Fourframes.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Fourframes_H_ +#define _Fourframes_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Fourframes */ +typedef BIT_STRING_t Fourframes_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Fourframes_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Fourframes; +asn_struct_free_f Fourframes_free; +asn_struct_print_f Fourframes_print; +asn_constr_check_f Fourframes_constraint; +ber_type_decoder_f Fourframes_decode_ber; +der_type_encoder_f Fourframes_encode_der; +xer_type_decoder_f Fourframes_decode_xer; +xer_type_encoder_f Fourframes_encode_xer; +per_type_decoder_f Fourframes_decode_uper; +per_type_encoder_f Fourframes_encode_uper; +per_type_decoder_f Fourframes_decode_aper; +per_type_encoder_f Fourframes_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Fourframes_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.c b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.c new file mode 100644 index 0000000..e4875a6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandIndicator.h" + +int +FreqBandIndicator_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FreqBandIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (1..256,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_FreqBandIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandIndicator = { + "FreqBandIndicator", + "FreqBandIndicator", + &asn_OP_NativeInteger, + asn_DEF_FreqBandIndicator_tags_1, + sizeof(asn_DEF_FreqBandIndicator_tags_1) + /sizeof(asn_DEF_FreqBandIndicator_tags_1[0]), /* 1 */ + asn_DEF_FreqBandIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandIndicator_tags_1) + /sizeof(asn_DEF_FreqBandIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FreqBandIndicator_constr_1, FreqBandIndicator_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.h b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.h new file mode 100644 index 0000000..7f95155 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicator.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandIndicator_H_ +#define _FreqBandIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FreqBandIndicator */ +typedef long FreqBandIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FreqBandIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicator; +asn_struct_free_f FreqBandIndicator_free; +asn_struct_print_f FreqBandIndicator_print; +asn_constr_check_f FreqBandIndicator_constraint; +ber_type_decoder_f FreqBandIndicator_decode_ber; +der_type_encoder_f FreqBandIndicator_encode_der; +xer_type_decoder_f FreqBandIndicator_decode_xer; +xer_type_encoder_f FreqBandIndicator_encode_xer; +per_type_decoder_f FreqBandIndicator_decode_uper; +per_type_encoder_f FreqBandIndicator_encode_uper; +per_type_decoder_f FreqBandIndicator_decode_aper; +per_type_encoder_f FreqBandIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c new file mode 100644 index 0000000..bbbc4fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandIndicatorPriority.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FreqBandIndicatorPriority_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_FreqBandIndicatorPriority_value2enum_1[] = { + { 0, 15, "not-broadcasted" }, + { 1, 11, "broadcasted" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_FreqBandIndicatorPriority_enum2value_1[] = { + 1, /* broadcasted(1) */ + 0 /* not-broadcasted(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_FreqBandIndicatorPriority_specs_1 = { + asn_MAP_FreqBandIndicatorPriority_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_FreqBandIndicatorPriority_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_FreqBandIndicatorPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorPriority = { + "FreqBandIndicatorPriority", + "FreqBandIndicatorPriority", + &asn_OP_NativeEnumerated, + asn_DEF_FreqBandIndicatorPriority_tags_1, + sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1) + /sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1[0]), /* 1 */ + asn_DEF_FreqBandIndicatorPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1) + /sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FreqBandIndicatorPriority_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_FreqBandIndicatorPriority_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h new file mode 100644 index 0000000..9899348 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandIndicatorPriority_H_ +#define _FreqBandIndicatorPriority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum FreqBandIndicatorPriority { + FreqBandIndicatorPriority_not_broadcasted = 0, + FreqBandIndicatorPriority_broadcasted = 1 + /* + * Enumeration is extensible + */ +} e_FreqBandIndicatorPriority; + +/* FreqBandIndicatorPriority */ +typedef long FreqBandIndicatorPriority_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FreqBandIndicatorPriority_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorPriority; +extern const asn_INTEGER_specifics_t asn_SPC_FreqBandIndicatorPriority_specs_1; +asn_struct_free_f FreqBandIndicatorPriority_free; +asn_struct_print_f FreqBandIndicatorPriority_print; +asn_constr_check_f FreqBandIndicatorPriority_constraint; +ber_type_decoder_f FreqBandIndicatorPriority_decode_ber; +der_type_encoder_f FreqBandIndicatorPriority_encode_der; +xer_type_decoder_f FreqBandIndicatorPriority_decode_xer; +xer_type_encoder_f FreqBandIndicatorPriority_encode_xer; +per_type_decoder_f FreqBandIndicatorPriority_decode_uper; +per_type_encoder_f FreqBandIndicatorPriority_encode_uper; +per_type_decoder_f FreqBandIndicatorPriority_decode_aper; +per_type_encoder_f FreqBandIndicatorPriority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandIndicatorPriority_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.c b/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.c new file mode 100644 index 0000000..be51c56 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.c @@ -0,0 +1,196 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandNrItem.h" + +#include "ProtocolExtensionContainer.h" +#include "SupportedSULFreqBandItem.h" +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1024)) { + /* 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_supportedSULBandList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 32)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_supportedSULBandList_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_supportedSULBandList_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_supportedSULBandList_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupportedSULFreqBandItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_supportedSULBandList_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_supportedSULBandList_specs_3 = { + sizeof(struct FreqBandNrItem__supportedSULBandList), + offsetof(struct FreqBandNrItem__supportedSULBandList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_supportedSULBandList_3 = { + "supportedSULBandList", + "supportedSULBandList", + &asn_OP_SEQUENCE_OF, + asn_DEF_supportedSULBandList_tags_3, + sizeof(asn_DEF_supportedSULBandList_tags_3) + /sizeof(asn_DEF_supportedSULBandList_tags_3[0]) - 1, /* 1 */ + asn_DEF_supportedSULBandList_tags_3, /* Same as above */ + sizeof(asn_DEF_supportedSULBandList_tags_3) + /sizeof(asn_DEF_supportedSULBandList_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_supportedSULBandList_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_supportedSULBandList_3, + 1, /* Single element */ + &asn_SPC_supportedSULBandList_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_freqBandIndicatorNr_constr_2, memb_freqBandIndicatorNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, supportedSULBandList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_supportedSULBandList_3, + 0, + { 0, &asn_PER_memb_supportedSULBandList_constr_3, memb_supportedSULBandList_constraint_1 }, + 0, 0, /* No default value */ + "supportedSULBandList" + }, + { ATF_POINTER, 1, offsetof(struct FreqBandNrItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P148, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FreqBandNrItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* supportedSULBandList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1 = { + sizeof(struct FreqBandNrItem), + offsetof(struct FreqBandNrItem, _asn_ctx), + asn_MAP_FreqBandNrItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_FreqBandNrItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem = { + "FreqBandNrItem", + "FreqBandNrItem", + &asn_OP_SEQUENCE, + asn_DEF_FreqBandNrItem_tags_1, + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + asn_DEF_FreqBandNrItem_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FreqBandNrItem_1, + 3, /* Elements count */ + &asn_SPC_FreqBandNrItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.h b/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.h new file mode 100644 index 0000000..c834e6d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/FreqBandNrItem.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandNrItem_H_ +#define _FreqBandNrItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct SupportedSULFreqBandItem; + +/* FreqBandNrItem */ +typedef struct FreqBandNrItem { + long freqBandIndicatorNr; + struct FreqBandNrItem__supportedSULBandList { + A_SEQUENCE_OF(struct SupportedSULFreqBandItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } supportedSULBandList; + 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; +} FreqBandNrItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem; +extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1; +extern asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandNrItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.c b/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.c new file mode 100644 index 0000000..bfc6bc2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GBR-QosInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GBR_QosInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_MaximumBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_MaximumBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateUL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_GuaranteedBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_GuaranteedBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateUL" + }, + { ATF_POINTER, 1, offsetof(struct GBR_QosInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P149, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GBR_QosInformation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_GBR_QosInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GBR_QosInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-MaximumBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-MaximumBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e-RAB-GuaranteedBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RAB-GuaranteedBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_specs_1 = { + sizeof(struct GBR_QosInformation), + offsetof(struct GBR_QosInformation, _asn_ctx), + asn_MAP_GBR_QosInformation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_GBR_QosInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation = { + "GBR-QosInformation", + "GBR-QosInformation", + &asn_OP_SEQUENCE, + asn_DEF_GBR_QosInformation_tags_1, + sizeof(asn_DEF_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_GBR_QosInformation_tags_1[0]), /* 1 */ + asn_DEF_GBR_QosInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_GBR_QosInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GBR_QosInformation_1, + 5, /* Elements count */ + &asn_SPC_GBR_QosInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.h b/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.h new file mode 100644 index 0000000..40dc2ff --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GBR-QosInformation.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GBR_QosInformation_H_ +#define _GBR_QosInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GBR-QosInformation */ +typedef struct GBR_QosInformation { + BitRate_t e_RAB_MaximumBitrateDL; + BitRate_t e_RAB_MaximumBitrateUL; + BitRate_t e_RAB_GuaranteedBitrateDL; + 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; +} GBR_QosInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_GBR_QosInformation_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GBR_QosInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GNB-ID.c b/E2Manager/asn1codec/e2ap_engine/GNB-ID.c new file mode 100644 index 0000000..4decec5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNB-ID.c @@ -0,0 +1,107 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = { + sizeof(struct GNB_ID), + offsetof(struct GNB_ID, _asn_ctx), + offsetof(struct GNB_ID, present), + sizeof(((struct GNB_ID *)0)->present), + asn_MAP_GNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID = { + "GNB-ID", + "GNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GNB_ID_constr_1, CHOICE_constraint }, + asn_MBR_GNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GNB-ID.h b/E2Manager/asn1codec/e2ap_engine/GNB-ID.h new file mode 100644 index 0000000..acaef0d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNB-ID.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNB_ID_H_ +#define _GNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_PR { + GNB_ID_PR_NOTHING, /* No components present */ + GNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} GNB_ID_PR; + +/* GNB-ID */ +typedef struct GNB_ID { + GNB_ID_PR present; + union GNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.c b/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.c new file mode 100644 index 0000000..0377ae1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNBOverloadInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNBOverloadInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_GNBOverloadInformation_value2enum_1[] = { + { 0, 10, "overloaded" }, + { 1, 14, "not-overloaded" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_GNBOverloadInformation_enum2value_1[] = { + 1, /* not-overloaded(1) */ + 0 /* overloaded(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_GNBOverloadInformation_specs_1 = { + asn_MAP_GNBOverloadInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_GNBOverloadInformation_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_GNBOverloadInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNBOverloadInformation = { + "GNBOverloadInformation", + "GNBOverloadInformation", + &asn_OP_NativeEnumerated, + asn_DEF_GNBOverloadInformation_tags_1, + sizeof(asn_DEF_GNBOverloadInformation_tags_1) + /sizeof(asn_DEF_GNBOverloadInformation_tags_1[0]), /* 1 */ + asn_DEF_GNBOverloadInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_GNBOverloadInformation_tags_1) + /sizeof(asn_DEF_GNBOverloadInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNBOverloadInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_GNBOverloadInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.h b/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.h new file mode 100644 index 0000000..b7c8540 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNBOverloadInformation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNBOverloadInformation_H_ +#define _GNBOverloadInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNBOverloadInformation { + GNBOverloadInformation_overloaded = 0, + GNBOverloadInformation_not_overloaded = 1 + /* + * Enumeration is extensible + */ +} e_GNBOverloadInformation; + +/* GNBOverloadInformation */ +typedef long GNBOverloadInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNBOverloadInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNBOverloadInformation; +extern const asn_INTEGER_specifics_t asn_SPC_GNBOverloadInformation_specs_1; +asn_struct_free_f GNBOverloadInformation_free; +asn_struct_print_f GNBOverloadInformation_print; +asn_constr_check_f GNBOverloadInformation_constraint; +ber_type_decoder_f GNBOverloadInformation_decode_ber; +der_type_encoder_f GNBOverloadInformation_encode_der; +xer_type_decoder_f GNBOverloadInformation_decode_xer; +xer_type_encoder_f GNBOverloadInformation_encode_xer; +per_type_decoder_f GNBOverloadInformation_decode_uper; +per_type_encoder_f GNBOverloadInformation_encode_uper; +per_type_decoder_f GNBOverloadInformation_decode_aper; +per_type_encoder_f GNBOverloadInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNBOverloadInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.c b/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.c new file mode 100644 index 0000000..7e9036c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNBStatusIndication.h" + +asn_TYPE_member_t asn_MBR_GNBStatusIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P119, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_GNBStatusIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GNBStatusIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndication_specs_1 = { + sizeof(struct GNBStatusIndication), + offsetof(struct GNBStatusIndication, _asn_ctx), + asn_MAP_GNBStatusIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GNBStatusIndication = { + "GNBStatusIndication", + "GNBStatusIndication", + &asn_OP_SEQUENCE, + asn_DEF_GNBStatusIndication_tags_1, + sizeof(asn_DEF_GNBStatusIndication_tags_1) + /sizeof(asn_DEF_GNBStatusIndication_tags_1[0]), /* 1 */ + asn_DEF_GNBStatusIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_GNBStatusIndication_tags_1) + /sizeof(asn_DEF_GNBStatusIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GNBStatusIndication_1, + 1, /* Elements count */ + &asn_SPC_GNBStatusIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.h b/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.h new file mode 100644 index 0000000..2bd8cf0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GNBStatusIndication.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNBStatusIndication_H_ +#define _GNBStatusIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNBStatusIndication */ +typedef struct GNBStatusIndication { + ProtocolIE_Container_119P119_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNBStatusIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNBStatusIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_GNBStatusIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNBStatusIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GTP-TEI.c b/E2Manager/asn1codec/e2ap_engine/GTP-TEI.c new file mode 100644 index 0000000..a191528 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GTP-TEI.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GTP-TEI.h" + +int +GTP_TEI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GTP_TEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GTP_TEI = { + "GTP-TEI", + "GTP-TEI", + &asn_OP_OCTET_STRING, + asn_DEF_GTP_TEI_tags_1, + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + asn_DEF_GTP_TEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GTP_TEI_constr_1, GTP_TEI_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GTP-TEI.h b/E2Manager/asn1codec/e2ap_engine/GTP-TEI.h new file mode 100644 index 0000000..d3f2369 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GTP-TEI.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GTP_TEI_H_ +#define _GTP_TEI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GTP-TEI */ +typedef OCTET_STRING_t GTP_TEI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GTP_TEI; +asn_struct_free_f GTP_TEI_free; +asn_struct_print_f GTP_TEI_print; +asn_constr_check_f GTP_TEI_constraint; +ber_type_decoder_f GTP_TEI_decode_ber; +der_type_encoder_f GTP_TEI_encode_der; +xer_type_decoder_f GTP_TEI_decode_xer; +xer_type_encoder_f GTP_TEI_encode_xer; +per_type_decoder_f GTP_TEI_decode_uper; +per_type_encoder_f GTP_TEI_encode_uper; +per_type_decoder_f GTP_TEI_decode_aper; +per_type_encoder_f GTP_TEI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GTP_TEI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.c b/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.c new file mode 100644 index 0000000..762bb26 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GTPtunnelEndpoint.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTP_TEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct GTPtunnelEndpoint, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P152, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GTPtunnelEndpoint_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GTPtunnelEndpoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GTPtunnelEndpoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_specs_1 = { + sizeof(struct GTPtunnelEndpoint), + offsetof(struct GTPtunnelEndpoint, _asn_ctx), + asn_MAP_GTPtunnelEndpoint_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GTPtunnelEndpoint_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint = { + "GTPtunnelEndpoint", + "GTPtunnelEndpoint", + &asn_OP_SEQUENCE, + asn_DEF_GTPtunnelEndpoint_tags_1, + sizeof(asn_DEF_GTPtunnelEndpoint_tags_1) + /sizeof(asn_DEF_GTPtunnelEndpoint_tags_1[0]), /* 1 */ + asn_DEF_GTPtunnelEndpoint_tags_1, /* Same as above */ + sizeof(asn_DEF_GTPtunnelEndpoint_tags_1) + /sizeof(asn_DEF_GTPtunnelEndpoint_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GTPtunnelEndpoint_1, + 3, /* Elements count */ + &asn_SPC_GTPtunnelEndpoint_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.h b/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.h new file mode 100644 index 0000000..4d0e9d2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GTPtunnelEndpoint.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GTPtunnelEndpoint_H_ +#define _GTPtunnelEndpoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TransportLayerAddress.h" +#include "GTP-TEI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GTPtunnelEndpoint */ +typedef struct GTPtunnelEndpoint { + TransportLayerAddress_t transportLayerAddress; + GTP_TEI_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; +} GTPtunnelEndpoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint; +extern asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_specs_1; +extern asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GTPtunnelEndpoint_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.c b/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.c new file mode 100644 index 0000000..2f199c7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GU-Group-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GU_Group_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID, mME_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Group-ID" + }, + { ATF_POINTER, 1, offsetof(struct GU_Group_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P153, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GU_Group_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GU_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GU_Group_ID_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 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_specs_1 = { + sizeof(struct GU_Group_ID), + offsetof(struct GU_Group_ID, _asn_ctx), + asn_MAP_GU_Group_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GU_Group_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GU_Group_ID = { + "GU-Group-ID", + "GU-Group-ID", + &asn_OP_SEQUENCE, + asn_DEF_GU_Group_ID_tags_1, + sizeof(asn_DEF_GU_Group_ID_tags_1) + /sizeof(asn_DEF_GU_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_GU_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GU_Group_ID_tags_1) + /sizeof(asn_DEF_GU_Group_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GU_Group_ID_1, + 3, /* Elements count */ + &asn_SPC_GU_Group_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.h b/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.h new file mode 100644 index 0000000..bcbd836 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GU-Group-ID.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GU_Group_ID_H_ +#define _GU_Group_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "MME-Group-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GU-Group-ID */ +typedef struct GU_Group_ID { + PLMN_Identity_t pLMN_Identity; + MME_Group_ID_t mME_Group_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; +} GU_Group_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GU_Group_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GU_Group_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GU_Group_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.c b/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.c new file mode 100644 index 0000000..6bb114b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GUGroupIDList.h" + +#include "GU-Group-ID.h" +asn_per_constraints_t asn_PER_type_GUGroupIDList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GUGroupIDList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GU_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUGroupIDList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_GUGroupIDList_specs_1 = { + sizeof(struct GUGroupIDList), + offsetof(struct GUGroupIDList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_GUGroupIDList = { + "GUGroupIDList", + "GUGroupIDList", + &asn_OP_SEQUENCE_OF, + asn_DEF_GUGroupIDList_tags_1, + sizeof(asn_DEF_GUGroupIDList_tags_1) + /sizeof(asn_DEF_GUGroupIDList_tags_1[0]), /* 1 */ + asn_DEF_GUGroupIDList_tags_1, /* Same as above */ + sizeof(asn_DEF_GUGroupIDList_tags_1) + /sizeof(asn_DEF_GUGroupIDList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GUGroupIDList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_GUGroupIDList_1, + 1, /* Single element */ + &asn_SPC_GUGroupIDList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.h b/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.h new file mode 100644 index 0000000..7edffa6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GUGroupIDList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GUGroupIDList_H_ +#define _GUGroupIDList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GU_Group_ID; + +/* GUGroupIDList */ +typedef struct GUGroupIDList { + A_SEQUENCE_OF(struct GU_Group_ID) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUGroupIDList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUGroupIDList; +extern asn_SET_OF_specifics_t asn_SPC_GUGroupIDList_specs_1; +extern asn_TYPE_member_t asn_MBR_GUGroupIDList_1[1]; +extern asn_per_constraints_t asn_PER_type_GUGroupIDList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUGroupIDList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GUMMEI.c b/E2Manager/asn1codec/e2ap_engine/GUMMEI.c new file mode 100644 index 0000000..e96e9a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GUMMEI.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GUMMEI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GUMMEI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, gU_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GU_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gU-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Code, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Code" + }, + { ATF_POINTER, 1, offsetof(struct GUMMEI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P154, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GUMMEI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gU-Group-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Code */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = { + sizeof(struct GUMMEI), + offsetof(struct GUMMEI, _asn_ctx), + asn_MAP_GUMMEI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GUMMEI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUMMEI = { + "GUMMEI", + "GUMMEI", + &asn_OP_SEQUENCE, + asn_DEF_GUMMEI_tags_1, + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + asn_DEF_GUMMEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GUMMEI_1, + 3, /* Elements count */ + &asn_SPC_GUMMEI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GUMMEI.h b/E2Manager/asn1codec/e2ap_engine/GUMMEI.h new file mode 100644 index 0000000..8c9579e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GUMMEI.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GUMMEI_H_ +#define _GUMMEI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GU-Group-ID.h" +#include "MME-Code.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GUMMEI */ +typedef struct GUMMEI { + GU_Group_ID_t gU_Group_ID; + 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; +} GUMMEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUMMEI; +extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1; +extern asn_TYPE_member_t asn_MBR_GUMMEI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUMMEI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.c b/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.c new file mode 100644 index 0000000..4636ddf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalENB-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalENB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P150, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GlobalENB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { + sizeof(struct GlobalENB_ID), + offsetof(struct GlobalENB_ID, _asn_ctx), + asn_MAP_GlobalENB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalENB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_tags_1, + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.h b/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.h new file mode 100644 index 0000000..8d705b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GlobalENB-ID.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalENB_ID_H_ +#define _GlobalENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GlobalENB-ID */ +typedef struct GlobalENB_ID { + PLMN_Identity_t pLMN_Identity; + 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; +} GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalENB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.c b/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.c new file mode 100644 index 0000000..bf77b6c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalGNB-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalGNB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P151, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GlobalGNB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = { + sizeof(struct GlobalGNB_ID), + offsetof(struct GlobalGNB_ID, _asn_ctx), + asn_MAP_GlobalGNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalGNB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = { + "GlobalGNB-ID", + "GlobalGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalGNB_ID_tags_1, + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalGNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.h b/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.h new file mode 100644 index 0000000..b531d32 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/GlobalGNB-ID.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalGNB_ID_H_ +#define _GlobalGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "GNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GlobalGNB-ID */ +typedef struct GlobalGNB_ID { + PLMN_Identity_t pLMN_Identity; + GNB_ID_t gNB_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; +} GlobalGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HFN.c b/E2Manager/asn1codec/e2ap_engine/HFN.c new file mode 100644 index 0000000..e640e77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFN.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFN.h" + +int +HFN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1048575)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, 0, 1048575 } /* (0..1048575) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFN = { + "HFN", + "HFN", + &asn_OP_NativeInteger, + asn_DEF_HFN_tags_1, + sizeof(asn_DEF_HFN_tags_1) + /sizeof(asn_DEF_HFN_tags_1[0]), /* 1 */ + asn_DEF_HFN_tags_1, /* Same as above */ + sizeof(asn_DEF_HFN_tags_1) + /sizeof(asn_DEF_HFN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFN_constr_1, HFN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HFN.h b/E2Manager/asn1codec/e2ap_engine/HFN.h new file mode 100644 index 0000000..9c35f95 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFN.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFN_H_ +#define _HFN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFN */ +typedef long HFN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFN; +asn_struct_free_f HFN_free; +asn_struct_print_f HFN_print; +asn_constr_check_f HFN_constraint; +ber_type_decoder_f HFN_decode_ber; +der_type_encoder_f HFN_encode_der; +xer_type_decoder_f HFN_decode_xer; +xer_type_encoder_f HFN_encode_xer; +per_type_decoder_f HFN_decode_uper; +per_type_encoder_f HFN_encode_uper; +per_type_decoder_f HFN_decode_aper; +per_type_encoder_f HFN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HFNModified.c b/E2Manager/asn1codec/e2ap_engine/HFNModified.c new file mode 100644 index 0000000..0453b6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFNModified.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFNModified.h" + +int +HFNModified_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 131071)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFNModified_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 0, 131071 } /* (0..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFNModified_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFNModified = { + "HFNModified", + "HFNModified", + &asn_OP_NativeInteger, + asn_DEF_HFNModified_tags_1, + sizeof(asn_DEF_HFNModified_tags_1) + /sizeof(asn_DEF_HFNModified_tags_1[0]), /* 1 */ + asn_DEF_HFNModified_tags_1, /* Same as above */ + sizeof(asn_DEF_HFNModified_tags_1) + /sizeof(asn_DEF_HFNModified_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFNModified_constr_1, HFNModified_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HFNModified.h b/E2Manager/asn1codec/e2ap_engine/HFNModified.h new file mode 100644 index 0000000..b8ea552 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFNModified.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFNModified_H_ +#define _HFNModified_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFNModified */ +typedef long HFNModified_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFNModified_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFNModified; +asn_struct_free_f HFNModified_free; +asn_struct_print_f HFNModified_print; +asn_constr_check_f HFNModified_constraint; +ber_type_decoder_f HFNModified_decode_ber; +der_type_encoder_f HFNModified_encode_der; +xer_type_decoder_f HFNModified_decode_xer; +xer_type_encoder_f HFNModified_encode_xer; +per_type_decoder_f HFNModified_decode_uper; +per_type_encoder_f HFNModified_encode_uper; +per_type_decoder_f HFNModified_decode_aper; +per_type_encoder_f HFNModified_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFNModified_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c b/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c new file mode 100644 index 0000000..e7a8916 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFNforPDCP-SNlength18.h" + +int +HFNforPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 16383)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFNforPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 16383 } /* (0..16383) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFNforPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFNforPDCP_SNlength18 = { + "HFNforPDCP-SNlength18", + "HFNforPDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_HFNforPDCP_SNlength18_tags_1, + sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_HFNforPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFNforPDCP_SNlength18_constr_1, HFNforPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h b/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h new file mode 100644 index 0000000..fc5a9b6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFNforPDCP_SNlength18_H_ +#define _HFNforPDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFNforPDCP-SNlength18 */ +typedef long HFNforPDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFNforPDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFNforPDCP_SNlength18; +asn_struct_free_f HFNforPDCP_SNlength18_free; +asn_struct_print_f HFNforPDCP_SNlength18_print; +asn_constr_check_f HFNforPDCP_SNlength18_constraint; +ber_type_decoder_f HFNforPDCP_SNlength18_decode_ber; +der_type_encoder_f HFNforPDCP_SNlength18_encode_der; +xer_type_decoder_f HFNforPDCP_SNlength18_decode_xer; +xer_type_encoder_f HFNforPDCP_SNlength18_encode_xer; +per_type_decoder_f HFNforPDCP_SNlength18_decode_uper; +per_type_encoder_f HFNforPDCP_SNlength18_encode_uper; +per_type_decoder_f HFNforPDCP_SNlength18_decode_aper; +per_type_encoder_f HFNforPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFNforPDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.c b/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.c new file mode 100644 index 0000000..1f5881f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HWLoadIndicator.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_HWLoadIndicator_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator, dLHWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLHWLoadIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator, uLHWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLHWLoadIndicator" + }, + { ATF_POINTER, 1, offsetof(struct HWLoadIndicator, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P156, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_HWLoadIndicator_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_HWLoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HWLoadIndicator_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dLHWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLHWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_specs_1 = { + sizeof(struct HWLoadIndicator), + offsetof(struct HWLoadIndicator, _asn_ctx), + asn_MAP_HWLoadIndicator_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_HWLoadIndicator_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator = { + "HWLoadIndicator", + "HWLoadIndicator", + &asn_OP_SEQUENCE, + asn_DEF_HWLoadIndicator_tags_1, + sizeof(asn_DEF_HWLoadIndicator_tags_1) + /sizeof(asn_DEF_HWLoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_HWLoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_HWLoadIndicator_tags_1) + /sizeof(asn_DEF_HWLoadIndicator_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HWLoadIndicator_1, + 3, /* Elements count */ + &asn_SPC_HWLoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.h b/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.h new file mode 100644 index 0000000..b5cd6a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HWLoadIndicator.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HWLoadIndicator_H_ +#define _HWLoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LoadIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* HWLoadIndicator */ +typedef struct HWLoadIndicator { + LoadIndicator_t dLHWLoadIndicator; + LoadIndicator_t uLHWLoadIndicator; + 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; +} HWLoadIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator; +extern asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_specs_1; +extern asn_TYPE_member_t asn_MBR_HWLoadIndicator_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _HWLoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverCancel.c b/E2Manager/asn1codec/e2ap_engine/HandoverCancel.c new file mode 100644 index 0000000..657f216 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverCancel.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverCancel.h" + +static asn_TYPE_member_t asn_MBR_HandoverCancel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverCancel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverCancel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_specs_1 = { + sizeof(struct HandoverCancel), + offsetof(struct HandoverCancel, _asn_ctx), + asn_MAP_HandoverCancel_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverCancel = { + "HandoverCancel", + "HandoverCancel", + &asn_OP_SEQUENCE, + asn_DEF_HandoverCancel_tags_1, + sizeof(asn_DEF_HandoverCancel_tags_1) + /sizeof(asn_DEF_HandoverCancel_tags_1[0]), /* 1 */ + asn_DEF_HandoverCancel_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverCancel_tags_1) + /sizeof(asn_DEF_HandoverCancel_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverCancel_1, + 1, /* Elements count */ + &asn_SPC_HandoverCancel_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverCancel.h b/E2Manager/asn1codec/e2ap_engine/HandoverCancel.h new file mode 100644 index 0000000..cab7e72 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverCancel.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverCancel_H_ +#define _HandoverCancel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverCancel */ +typedef struct HandoverCancel { + ProtocolIE_Container_119P20_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverCancel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverCancel; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverCancel_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.c b/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.c new file mode 100644 index 0000000..f866f69 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverPreparationFailure.h" + +static asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverPreparationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_specs_1 = { + sizeof(struct HandoverPreparationFailure), + offsetof(struct HandoverPreparationFailure, _asn_ctx), + asn_MAP_HandoverPreparationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure = { + "HandoverPreparationFailure", + "HandoverPreparationFailure", + &asn_OP_SEQUENCE, + asn_DEF_HandoverPreparationFailure_tags_1, + sizeof(asn_DEF_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_HandoverPreparationFailure_tags_1[0]), /* 1 */ + asn_DEF_HandoverPreparationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_HandoverPreparationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverPreparationFailure_1, + 1, /* Elements count */ + &asn_SPC_HandoverPreparationFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.h b/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.h new file mode 100644 index 0000000..f06fb6b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverPreparationFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverPreparationFailure_H_ +#define _HandoverPreparationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverPreparationFailure */ +typedef struct HandoverPreparationFailure { + ProtocolIE_Container_119P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverPreparationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverPreparationFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverReport.c b/E2Manager/asn1codec/e2ap_engine/HandoverReport.c new file mode 100644 index 0000000..cf035f7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverReport.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverReport.h" + +static asn_TYPE_member_t asn_MBR_HandoverReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_specs_1 = { + sizeof(struct HandoverReport), + offsetof(struct HandoverReport, _asn_ctx), + asn_MAP_HandoverReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReport = { + "HandoverReport", + "HandoverReport", + &asn_OP_SEQUENCE, + asn_DEF_HandoverReport_tags_1, + sizeof(asn_DEF_HandoverReport_tags_1) + /sizeof(asn_DEF_HandoverReport_tags_1[0]), /* 1 */ + asn_DEF_HandoverReport_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverReport_tags_1) + /sizeof(asn_DEF_HandoverReport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverReport_1, + 1, /* Elements count */ + &asn_SPC_HandoverReport_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverReport.h b/E2Manager/asn1codec/e2ap_engine/HandoverReport.h new file mode 100644 index 0000000..bb7bc73 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverReport.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverReport_H_ +#define _HandoverReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverReport */ +typedef struct HandoverReport { + ProtocolIE_Container_119P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverReport; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverReport_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverReportType.c b/E2Manager/asn1codec/e2ap_engine/HandoverReportType.c new file mode 100644 index 0000000..0734636 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverReportType.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverReportType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HandoverReportType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_HandoverReportType_value2enum_1[] = { + { 0, 10, "hoTooEarly" }, + { 1, 13, "hoToWrongCell" }, + { 2, 16, "interRATpingpong" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HandoverReportType_enum2value_1[] = { + 1, /* hoToWrongCell(1) */ + 0, /* hoTooEarly(0) */ + 2 /* interRATpingpong(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_HandoverReportType_specs_1 = { + asn_MAP_HandoverReportType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HandoverReportType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HandoverReportType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReportType = { + "HandoverReportType", + "HandoverReportType", + &asn_OP_NativeEnumerated, + asn_DEF_HandoverReportType_tags_1, + sizeof(asn_DEF_HandoverReportType_tags_1) + /sizeof(asn_DEF_HandoverReportType_tags_1[0]), /* 1 */ + asn_DEF_HandoverReportType_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverReportType_tags_1) + /sizeof(asn_DEF_HandoverReportType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HandoverReportType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HandoverReportType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverReportType.h b/E2Manager/asn1codec/e2ap_engine/HandoverReportType.h new file mode 100644 index 0000000..22bfd50 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverReportType.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverReportType_H_ +#define _HandoverReportType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HandoverReportType { + HandoverReportType_hoTooEarly = 0, + HandoverReportType_hoToWrongCell = 1, + /* + * Enumeration is extensible + */ + HandoverReportType_interRATpingpong = 2 +} e_HandoverReportType; + +/* HandoverReportType */ +typedef long HandoverReportType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HandoverReportType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HandoverReportType; +extern const asn_INTEGER_specifics_t asn_SPC_HandoverReportType_specs_1; +asn_struct_free_f HandoverReportType_free; +asn_struct_print_f HandoverReportType_print; +asn_constr_check_f HandoverReportType_constraint; +ber_type_decoder_f HandoverReportType_decode_ber; +der_type_encoder_f HandoverReportType_encode_der; +xer_type_decoder_f HandoverReportType_decode_xer; +xer_type_encoder_f HandoverReportType_encode_xer; +per_type_decoder_f HandoverReportType_decode_uper; +per_type_encoder_f HandoverReportType_encode_uper; +per_type_decoder_f HandoverReportType_decode_aper; +per_type_encoder_f HandoverReportType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverReportType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRequest.c b/E2Manager/asn1codec/e2ap_engine/HandoverRequest.c new file mode 100644 index 0000000..527e8fd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRequest.h" + +static asn_TYPE_member_t asn_MBR_HandoverRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_specs_1 = { + sizeof(struct HandoverRequest), + offsetof(struct HandoverRequest, _asn_ctx), + asn_MAP_HandoverRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequest = { + "HandoverRequest", + "HandoverRequest", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequest_tags_1, + sizeof(asn_DEF_HandoverRequest_tags_1) + /sizeof(asn_DEF_HandoverRequest_tags_1[0]), /* 1 */ + asn_DEF_HandoverRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRequest_tags_1) + /sizeof(asn_DEF_HandoverRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequest_1, + 1, /* Elements count */ + &asn_SPC_HandoverRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRequest.h b/E2Manager/asn1codec/e2ap_engine/HandoverRequest.h new file mode 100644 index 0000000..92906d1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRequest_H_ +#define _HandoverRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverRequest */ +typedef struct HandoverRequest { + ProtocolIE_Container_119P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c new file mode 100644 index 0000000..a3fdbad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_specs_1 = { + sizeof(struct HandoverRequestAcknowledge), + offsetof(struct HandoverRequestAcknowledge, _asn_ctx), + asn_MAP_HandoverRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge = { + "HandoverRequestAcknowledge", + "HandoverRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequestAcknowledge_tags_1, + sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_HandoverRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_HandoverRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h new file mode 100644 index 0000000..a3f3c7e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRequestAcknowledge_H_ +#define _HandoverRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverRequestAcknowledge */ +typedef struct HandoverRequestAcknowledge { + ProtocolIE_Container_119P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.c b/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.c new file mode 100644 index 0000000..0b230e0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.c @@ -0,0 +1,125 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRestrictionList.h" + +#include "EPLMNs.h" +#include "ForbiddenTAs.h" +#include "ForbiddenLAs.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_HandoverRestrictionList_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList, servingPLMN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servingPLMN" + }, + { ATF_POINTER, 5, offsetof(struct HandoverRestrictionList, equivalentPLMNs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EPLMNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "equivalentPLMNs" + }, + { ATF_POINTER, 4, offsetof(struct HandoverRestrictionList, forbiddenTAs), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenTAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTAs" + }, + { ATF_POINTER, 3, offsetof(struct HandoverRestrictionList, forbiddenLAs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLAs" + }, + { ATF_POINTER, 2, offsetof(struct HandoverRestrictionList, forbiddenInterRATs), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenInterRATs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenInterRATs" + }, + { ATF_POINTER, 1, offsetof(struct HandoverRestrictionList, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P155, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_HandoverRestrictionList_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_HandoverRestrictionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_specs_1 = { + sizeof(struct HandoverRestrictionList), + offsetof(struct HandoverRestrictionList, _asn_ctx), + asn_MAP_HandoverRestrictionList_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_HandoverRestrictionList_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList = { + "HandoverRestrictionList", + "HandoverRestrictionList", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRestrictionList_tags_1, + sizeof(asn_DEF_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_HandoverRestrictionList_tags_1[0]), /* 1 */ + asn_DEF_HandoverRestrictionList_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_HandoverRestrictionList_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRestrictionList_1, + 6, /* Elements count */ + &asn_SPC_HandoverRestrictionList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.h b/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.h new file mode 100644 index 0000000..b992845 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/HandoverRestrictionList.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRestrictionList_H_ +#define _HandoverRestrictionList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenInterRATs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EPLMNs; +struct ForbiddenTAs; +struct ForbiddenLAs; +struct ProtocolExtensionContainer; + +/* HandoverRestrictionList */ +typedef struct HandoverRestrictionList { + PLMN_Identity_t servingPLMN; + struct EPLMNs *equivalentPLMNs; /* OPTIONAL */ + struct ForbiddenTAs *forbiddenTAs; /* OPTIONAL */ + struct ForbiddenLAs *forbiddenLAs; /* OPTIONAL */ + 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; +} HandoverRestrictionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_specs_1; +extern asn_TYPE_member_t asn_MBR_HandoverRestrictionList_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRestrictionList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/INTEGER.c b/E2Manager/asn1codec/e2ap_engine/INTEGER.c new file mode 100644 index 0000000..1baaa8f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/INTEGER.c @@ -0,0 +1,1736 @@ + +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(specs && specs->field_unsigned) { + if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) + || ((unsigned long)value < (unsigned long)ct->lower_bound)) + || ((unsigned long)value > (unsigned long)ct->upper_bound) + ) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = (unsigned long)value - (unsigned long)ct->lower_bound; + } else { + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t 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--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/E2Manager/asn1codec/e2ap_engine/INTEGER.h b/E2Manager/asn1codec/e2ap_engine/INTEGER.h new file mode 100644 index 0000000..baa8307 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/INTEGER.h @@ -0,0 +1,109 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.c b/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.c new file mode 100644 index 0000000..1715352 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.c @@ -0,0 +1,527 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingMessage.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.X2SetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENDCX2SetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResourceStatusRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENBConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENDCConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.LoadInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LoadInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LoadInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.GNBStatusIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GNBStatusIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GNBStatusIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResourceStatusUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ErrorIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 15 }, /* RICsubscriptionRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 14 }, /* RICsubscriptionDeleteRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 13 }, /* RICserviceUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 12 }, /* RICcontrolRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 11 }, /* X2SetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 10 }, /* ENDCX2SetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 9 }, /* ResourceStatusRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 8 }, /* ENBConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 7 }, /* ENDCConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 6 }, /* ResetRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 5 }, /* RICindication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 4 }, /* RICserviceQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 3 }, /* LoadInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 2 }, /* GNBStatusIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 1 }, /* ResourceStatusUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 0 } /* ErrorIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct InitiatingMessage__value), + offsetof(struct InitiatingMessage__value, _asn_ctx), + offsetof(struct InitiatingMessage__value, present), + sizeof(((struct InitiatingMessage__value *)0)->present), + asn_MAP_value_tag2el_4, + 16, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 16, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_InitiatingMessage_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_InitiatingMessage_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.h b/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.h new file mode 100644 index 0000000..9317b2f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingMessage.h @@ -0,0 +1,145 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_RICsubscriptionRequest, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, + InitiatingMessage__value_PR_RICserviceUpdate, + InitiatingMessage__value_PR_RICcontrolRequest, + InitiatingMessage__value_PR_X2SetupRequest, + InitiatingMessage__value_PR_ENDCX2SetupRequest, + InitiatingMessage__value_PR_ResourceStatusRequest, + InitiatingMessage__value_PR_ENBConfigurationUpdate, + InitiatingMessage__value_PR_ENDCConfigurationUpdate, + InitiatingMessage__value_PR_ResetRequest, + InitiatingMessage__value_PR_RICindication, + InitiatingMessage__value_PR_RICserviceQuery, + InitiatingMessage__value_PR_LoadInformation, + InitiatingMessage__value_PR_GNBStatusIndication, + InitiatingMessage__value_PR_ResourceStatusUpdate, + InitiatingMessage__value_PR_ErrorIndication +} InitiatingMessage__value_PR; + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct InitiatingMessage__value { + InitiatingMessage__value_PR present; + union InitiatingMessage__value_u { + RICsubscriptionRequest_t RICsubscriptionRequest; + RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; + RICserviceUpdate_t RICserviceUpdate; + RICcontrolRequest_t RICcontrolRequest; + X2SetupRequest_t X2SetupRequest; + ENDCX2SetupRequest_t ENDCX2SetupRequest; + ResourceStatusRequest_t ResourceStatusRequest; + ENBConfigurationUpdate_t ENBConfigurationUpdate; + ENDCConfigurationUpdate_t ENDCConfigurationUpdate; + ResetRequest_t ResetRequest; + RICindication_t RICindication; + RICserviceQuery_t RICserviceQuery; + LoadInformation_t LoadInformation; + GNBStatusIndication_t GNBStatusIndication; + ResourceStatusUpdate_t ResourceStatusUpdate; + ErrorIndication_t ErrorIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c new file mode 100644 index 0000000..5ab217d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcConfigUpdate.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcConfigUpdate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcConfigUpdate_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcConfigUpdate, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P92, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcConfigUpdate, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P93, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcConfigUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcConfigUpdate_specs_1 = { + sizeof(struct InitiatingNodeType_EndcConfigUpdate), + offsetof(struct InitiatingNodeType_EndcConfigUpdate, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcConfigUpdate, present), + sizeof(((struct InitiatingNodeType_EndcConfigUpdate *)0)->present), + asn_MAP_InitiatingNodeType_EndcConfigUpdate_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcConfigUpdate = { + "InitiatingNodeType-EndcConfigUpdate", + "InitiatingNodeType-EndcConfigUpdate", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcConfigUpdate_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcConfigUpdate_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcConfigUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h new file mode 100644 index 0000000..41515d7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcConfigUpdate_H_ +#define _InitiatingNodeType_EndcConfigUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcConfigUpdate_PR { + InitiatingNodeType_EndcConfigUpdate_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcConfigUpdate_PR_init_eNB, + InitiatingNodeType_EndcConfigUpdate_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcConfigUpdate_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcConfigUpdate */ +typedef struct InitiatingNodeType_EndcConfigUpdate { + InitiatingNodeType_EndcConfigUpdate_PR present; + union InitiatingNodeType_EndcConfigUpdate_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcConfigUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcConfigUpdate; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcConfigUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c new file mode 100644 index 0000000..259fead --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcX2Removal.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcX2Removal_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcX2Removal_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Removal, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P112, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Removal, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P113, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcX2Removal_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcX2Removal_specs_1 = { + sizeof(struct InitiatingNodeType_EndcX2Removal), + offsetof(struct InitiatingNodeType_EndcX2Removal, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcX2Removal, present), + sizeof(((struct InitiatingNodeType_EndcX2Removal *)0)->present), + asn_MAP_InitiatingNodeType_EndcX2Removal_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Removal = { + "InitiatingNodeType-EndcX2Removal", + "InitiatingNodeType-EndcX2Removal", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcX2Removal_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcX2Removal_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcX2Removal_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h new file mode 100644 index 0000000..4d0f25b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcX2Removal_H_ +#define _InitiatingNodeType_EndcX2Removal_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcX2Removal_PR { + InitiatingNodeType_EndcX2Removal_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcX2Removal_PR_init_eNB, + InitiatingNodeType_EndcX2Removal_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcX2Removal_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcX2Removal */ +typedef struct InitiatingNodeType_EndcX2Removal { + InitiatingNodeType_EndcX2Removal_PR present; + union InitiatingNodeType_EndcX2Removal_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcX2Removal_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Removal; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcX2Removal_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c new file mode 100644 index 0000000..832ac81 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcX2Setup.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcX2Setup_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcX2Setup_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Setup, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Setup, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcX2Setup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcX2Setup_specs_1 = { + sizeof(struct InitiatingNodeType_EndcX2Setup), + offsetof(struct InitiatingNodeType_EndcX2Setup, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcX2Setup, present), + sizeof(((struct InitiatingNodeType_EndcX2Setup *)0)->present), + asn_MAP_InitiatingNodeType_EndcX2Setup_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Setup = { + "InitiatingNodeType-EndcX2Setup", + "InitiatingNodeType-EndcX2Setup", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcX2Setup_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcX2Setup_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcX2Setup_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h new file mode 100644 index 0000000..218ba60 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcX2Setup_H_ +#define _InitiatingNodeType_EndcX2Setup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcX2Setup_PR { + InitiatingNodeType_EndcX2Setup_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcX2Setup_PR_init_eNB, + InitiatingNodeType_EndcX2Setup_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcX2Setup_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcX2Setup */ +typedef struct InitiatingNodeType_EndcX2Setup { + InitiatingNodeType_EndcX2Setup_PR present; + union InitiatingNodeType_EndcX2Setup_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcX2Setup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Setup; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcX2Setup_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c new file mode 100644 index 0000000..ada40a4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EutranrCellResourceCoordination.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EutranrCellResourceCoordination_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EutranrCellResourceCoordination_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, choice.initiate_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P106, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiate-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, choice.initiate_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P107, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiate-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EutranrCellResourceCoordination_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiate-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* initiate-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EutranrCellResourceCoordination_specs_1 = { + sizeof(struct InitiatingNodeType_EutranrCellResourceCoordination), + offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, _asn_ctx), + offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, present), + sizeof(((struct InitiatingNodeType_EutranrCellResourceCoordination *)0)->present), + asn_MAP_InitiatingNodeType_EutranrCellResourceCoordination_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination = { + "InitiatingNodeType-EutranrCellResourceCoordination", + "InitiatingNodeType-EutranrCellResourceCoordination", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EutranrCellResourceCoordination_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EutranrCellResourceCoordination_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EutranrCellResourceCoordination_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h new file mode 100644 index 0000000..1bf4a46 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EutranrCellResourceCoordination_H_ +#define _InitiatingNodeType_EutranrCellResourceCoordination_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EutranrCellResourceCoordination_PR { + InitiatingNodeType_EutranrCellResourceCoordination_PR_NOTHING, /* No components present */ + InitiatingNodeType_EutranrCellResourceCoordination_PR_initiate_eNB, + InitiatingNodeType_EutranrCellResourceCoordination_PR_initiate_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EutranrCellResourceCoordination_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EutranrCellResourceCoordination */ +typedef struct InitiatingNodeType_EutranrCellResourceCoordination { + InitiatingNodeType_EutranrCellResourceCoordination_PR present; + union InitiatingNodeType_EutranrCellResourceCoordination_u { + struct ProtocolIE_Container *initiate_eNB; + struct ProtocolIE_Container *initiate_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EutranrCellResourceCoordination_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EutranrCellResourceCoordination_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c b/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c new file mode 100644 index 0000000..5a19646 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "IntegrityProtectionAlgorithms.h" + +int +IntegrityProtectionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_IntegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_IntegrityProtectionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IntegrityProtectionAlgorithms = { + "IntegrityProtectionAlgorithms", + "IntegrityProtectionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_IntegrityProtectionAlgorithms_tags_1, + sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_IntegrityProtectionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_IntegrityProtectionAlgorithms_constr_1, IntegrityProtectionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h b/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h new file mode 100644 index 0000000..f186004 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _IntegrityProtectionAlgorithms_H_ +#define _IntegrityProtectionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IntegrityProtectionAlgorithms */ +typedef BIT_STRING_t IntegrityProtectionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_IntegrityProtectionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_IntegrityProtectionAlgorithms; +asn_struct_free_f IntegrityProtectionAlgorithms_free; +asn_struct_print_f IntegrityProtectionAlgorithms_print; +asn_constr_check_f IntegrityProtectionAlgorithms_constraint; +ber_type_decoder_f IntegrityProtectionAlgorithms_decode_ber; +der_type_encoder_f IntegrityProtectionAlgorithms_encode_der; +xer_type_decoder_f IntegrityProtectionAlgorithms_decode_xer; +xer_type_encoder_f IntegrityProtectionAlgorithms_encode_xer; +per_type_decoder_f IntegrityProtectionAlgorithms_decode_uper; +per_type_encoder_f IntegrityProtectionAlgorithms_encode_uper; +per_type_decoder_f IntegrityProtectionAlgorithms_decode_aper; +per_type_encoder_f IntegrityProtectionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntegrityProtectionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Interface-ID.c b/E2Manager/asn1codec/e2ap_engine/Interface-ID.c new file mode 100644 index 0000000..2cb8931 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Interface-ID.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Interface-ID.h" + +#include "GlobalENB-ID.h" +#include "GlobalGNB-ID.h" +asn_per_constraints_t asn_PER_type_Interface_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Interface_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct Interface_ID, choice.global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, + { ATF_POINTER, 0, offsetof(struct Interface_ID, choice.global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Interface_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_Interface_ID_specs_1 = { + sizeof(struct Interface_ID), + offsetof(struct Interface_ID, _asn_ctx), + offsetof(struct Interface_ID, present), + sizeof(((struct Interface_ID *)0)->present), + asn_MAP_Interface_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Interface_ID = { + "Interface-ID", + "Interface-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Interface_ID_constr_1, CHOICE_constraint }, + asn_MBR_Interface_ID_1, + 2, /* Elements count */ + &asn_SPC_Interface_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Interface-ID.h b/E2Manager/asn1codec/e2ap_engine/Interface-ID.h new file mode 100644 index 0000000..4c1955f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Interface-ID.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Interface_ID_H_ +#define _Interface_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Interface_ID_PR { + Interface_ID_PR_NOTHING, /* No components present */ + Interface_ID_PR_global_eNB_ID, + Interface_ID_PR_global_gNB_ID + /* Extensions may appear below */ + +} Interface_ID_PR; + +/* Forward declarations */ +struct GlobalENB_ID; +struct GlobalGNB_ID; + +/* Interface-ID */ +typedef struct Interface_ID { + Interface_ID_PR present; + union Interface_ID_u { + struct GlobalENB_ID *global_eNB_ID; + struct GlobalGNB_ID *global_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Interface_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Interface_ID; +extern asn_CHOICE_specifics_t asn_SPC_Interface_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_Interface_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_Interface_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Interface_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.c b/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.c new file mode 100644 index 0000000..1a7298f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InterfaceDirection_value2enum_1[] = { + { 0, 8, "incoming" }, + { 1, 8, "outgoing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterfaceDirection_enum2value_1[] = { + 0, /* incoming(0) */ + 1 /* outgoing(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InterfaceDirection_specs_1 = { + asn_MAP_InterfaceDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterfaceDirection_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_InterfaceDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceDirection = { + "InterfaceDirection", + "InterfaceDirection", + &asn_OP_NativeEnumerated, + asn_DEF_InterfaceDirection_tags_1, + sizeof(asn_DEF_InterfaceDirection_tags_1) + /sizeof(asn_DEF_InterfaceDirection_tags_1[0]), /* 1 */ + asn_DEF_InterfaceDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceDirection_tags_1) + /sizeof(asn_DEF_InterfaceDirection_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceDirection_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterfaceDirection_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.h b/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.h new file mode 100644 index 0000000..fdd93bb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceDirection.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceDirection_H_ +#define _InterfaceDirection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceDirection { + InterfaceDirection_incoming = 0, + InterfaceDirection_outgoing = 1 + /* + * Enumeration is extensible + */ +} e_InterfaceDirection; + +/* InterfaceDirection */ +typedef long InterfaceDirection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceDirection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceDirection; +extern const asn_INTEGER_specifics_t asn_SPC_InterfaceDirection_specs_1; +asn_struct_free_f InterfaceDirection_free; +asn_struct_print_f InterfaceDirection_print; +asn_constr_check_f InterfaceDirection_constraint; +ber_type_decoder_f InterfaceDirection_decode_ber; +der_type_encoder_f InterfaceDirection_encode_der; +xer_type_decoder_f InterfaceDirection_decode_xer; +xer_type_encoder_f InterfaceDirection_encode_xer; +per_type_decoder_f InterfaceDirection_decode_uper; +per_type_encoder_f InterfaceDirection_encode_uper; +per_type_decoder_f InterfaceDirection_decode_aper; +per_type_encoder_f InterfaceDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceDirection_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.c b/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.c new file mode 100644 index 0000000..5656ac4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_InterfaceMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceMessage = { + "InterfaceMessage", + "InterfaceMessage", + &asn_OP_OCTET_STRING, + asn_DEF_InterfaceMessage_tags_1, + sizeof(asn_DEF_InterfaceMessage_tags_1) + /sizeof(asn_DEF_InterfaceMessage_tags_1[0]), /* 1 */ + asn_DEF_InterfaceMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceMessage_tags_1) + /sizeof(asn_DEF_InterfaceMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.h b/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.h new file mode 100644 index 0000000..2d25168 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceMessage.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceMessage_H_ +#define _InterfaceMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceMessage */ +typedef OCTET_STRING_t InterfaceMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceMessage; +asn_struct_free_f InterfaceMessage_free; +asn_struct_print_f InterfaceMessage_print; +asn_constr_check_f InterfaceMessage_constraint; +ber_type_decoder_f InterfaceMessage_decode_ber; +der_type_encoder_f InterfaceMessage_encode_der; +xer_type_decoder_f InterfaceMessage_decode_xer; +xer_type_encoder_f InterfaceMessage_encode_xer; +per_type_decoder_f InterfaceMessage_decode_uper; +per_type_encoder_f InterfaceMessage_encode_uper; +per_type_decoder_f InterfaceMessage_decode_aper; +per_type_encoder_f InterfaceMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.c b/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.c new file mode 100644 index 0000000..ddd0194 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceMessageType.h" + +asn_TYPE_member_t asn_MBR_InterfaceMessageType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceMessageType, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceMessageType, typeOfMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceMessageType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceMessageType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeOfMessage */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceMessageType_specs_1 = { + sizeof(struct InterfaceMessageType), + offsetof(struct InterfaceMessageType, _asn_ctx), + asn_MAP_InterfaceMessageType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceMessageType = { + "InterfaceMessageType", + "InterfaceMessageType", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceMessageType_tags_1, + sizeof(asn_DEF_InterfaceMessageType_tags_1) + /sizeof(asn_DEF_InterfaceMessageType_tags_1[0]), /* 1 */ + asn_DEF_InterfaceMessageType_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceMessageType_tags_1) + /sizeof(asn_DEF_InterfaceMessageType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InterfaceMessageType_1, + 2, /* Elements count */ + &asn_SPC_InterfaceMessageType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.h b/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.h new file mode 100644 index 0000000..a62c802 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceMessageType.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceMessageType_H_ +#define _InterfaceMessageType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TypeOfMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceMessageType */ +typedef struct InterfaceMessageType { + ProcedureCode_t procedureCode; + TypeOfMessage_t typeOfMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceMessageType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceMessageType; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceMessageType_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceMessageType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceMessageType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c new file mode 100644 index 0000000..3b131d9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-ID.h" + +int +InterfaceProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using ProtocolIE_ID, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_InterfaceProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_ID = { + "InterfaceProtocolIE-ID", + "InterfaceProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_InterfaceProtocolIE_ID_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceProtocolIE_ID_constr_1, InterfaceProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h new file mode 100644 index 0000000..8d91ee5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_ID_H_ +#define _InterfaceProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceProtocolIE-ID */ +typedef ProtocolIE_ID_t InterfaceProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_ID; +asn_struct_free_f InterfaceProtocolIE_ID_free; +asn_struct_print_f InterfaceProtocolIE_ID_print; +asn_constr_check_f InterfaceProtocolIE_ID_constraint; +ber_type_decoder_f InterfaceProtocolIE_ID_decode_ber; +der_type_encoder_f InterfaceProtocolIE_ID_encode_der; +xer_type_decoder_f InterfaceProtocolIE_ID_decode_xer; +xer_type_encoder_f InterfaceProtocolIE_ID_encode_xer; +per_type_decoder_f InterfaceProtocolIE_ID_decode_uper; +per_type_encoder_f InterfaceProtocolIE_ID_encode_uper; +per_type_decoder_f InterfaceProtocolIE_ID_decode_aper; +per_type_encoder_f InterfaceProtocolIE_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c new file mode 100644 index 0000000..230c47f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c @@ -0,0 +1,89 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Item.h" + +asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_Test), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_Test, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-Test" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_Value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceProtocolIE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceProtocolIE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interfaceProtocolIE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceProtocolIE-Test */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* interfaceProtocolIE-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceProtocolIE_Item_specs_1 = { + sizeof(struct InterfaceProtocolIE_Item), + offsetof(struct InterfaceProtocolIE_Item, _asn_ctx), + asn_MAP_InterfaceProtocolIE_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Item = { + "InterfaceProtocolIE-Item", + "InterfaceProtocolIE-Item", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceProtocolIE_Item_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InterfaceProtocolIE_Item_1, + 3, /* Elements count */ + &asn_SPC_InterfaceProtocolIE_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h new file mode 100644 index 0000000..adf7659 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Item_H_ +#define _InterfaceProtocolIE_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceProtocolIE-ID.h" +#include "InterfaceProtocolIE-Test.h" +#include "InterfaceProtocolIE-Value.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceProtocolIE-Item */ +typedef struct InterfaceProtocolIE_Item { + InterfaceProtocolIE_ID_t interfaceProtocolIE_ID; + InterfaceProtocolIE_Test_t interfaceProtocolIE_Test; + InterfaceProtocolIE_Value_t interfaceProtocolIE_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceProtocolIE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceProtocolIE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c new file mode 100644 index 0000000..7cbcbea --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Test.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Test_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InterfaceProtocolIE_Test_value2enum_1[] = { + { 0, 5, "equal" }, + { 1, 11, "greaterthan" }, + { 2, 8, "lessthan" }, + { 3, 8, "contains" }, + { 4, 7, "present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterfaceProtocolIE_Test_enum2value_1[] = { + 3, /* contains(3) */ + 0, /* equal(0) */ + 1, /* greaterthan(1) */ + 2, /* lessthan(2) */ + 4 /* present(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InterfaceProtocolIE_Test_specs_1 = { + asn_MAP_InterfaceProtocolIE_Test_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterfaceProtocolIE_Test_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_InterfaceProtocolIE_Test_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Test = { + "InterfaceProtocolIE-Test", + "InterfaceProtocolIE-Test", + &asn_OP_NativeEnumerated, + asn_DEF_InterfaceProtocolIE_Test_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_Test_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceProtocolIE_Test_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterfaceProtocolIE_Test_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h new file mode 100644 index 0000000..0ef0dd9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Test_H_ +#define _InterfaceProtocolIE_Test_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceProtocolIE_Test { + InterfaceProtocolIE_Test_equal = 0, + InterfaceProtocolIE_Test_greaterthan = 1, + InterfaceProtocolIE_Test_lessthan = 2, + InterfaceProtocolIE_Test_contains = 3, + InterfaceProtocolIE_Test_present = 4 + /* + * Enumeration is extensible + */ +} e_InterfaceProtocolIE_Test; + +/* InterfaceProtocolIE-Test */ +typedef long InterfaceProtocolIE_Test_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Test_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Test; +extern const asn_INTEGER_specifics_t asn_SPC_InterfaceProtocolIE_Test_specs_1; +asn_struct_free_f InterfaceProtocolIE_Test_free; +asn_struct_print_f InterfaceProtocolIE_Test_print; +asn_constr_check_f InterfaceProtocolIE_Test_constraint; +ber_type_decoder_f InterfaceProtocolIE_Test_decode_ber; +der_type_encoder_f InterfaceProtocolIE_Test_encode_der; +xer_type_decoder_f InterfaceProtocolIE_Test_decode_xer; +xer_type_encoder_f InterfaceProtocolIE_Test_encode_xer; +per_type_decoder_f InterfaceProtocolIE_Test_decode_uper; +per_type_encoder_f InterfaceProtocolIE_Test_encode_uper; +per_type_decoder_f InterfaceProtocolIE_Test_decode_aper; +per_type_encoder_f InterfaceProtocolIE_Test_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Test_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c new file mode 100644 index 0000000..4e0819a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c @@ -0,0 +1,111 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Value.h" + +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueOctS" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceProtocolIE_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* valueOctS */ +}; +asn_CHOICE_specifics_t asn_SPC_InterfaceProtocolIE_Value_specs_1 = { + sizeof(struct InterfaceProtocolIE_Value), + offsetof(struct InterfaceProtocolIE_Value, _asn_ctx), + offsetof(struct InterfaceProtocolIE_Value, present), + sizeof(((struct InterfaceProtocolIE_Value *)0)->present), + asn_MAP_InterfaceProtocolIE_Value_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Value = { + "InterfaceProtocolIE-Value", + "InterfaceProtocolIE-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InterfaceProtocolIE_Value_constr_1, CHOICE_constraint }, + asn_MBR_InterfaceProtocolIE_Value_1, + 5, /* Elements count */ + &asn_SPC_InterfaceProtocolIE_Value_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h new file mode 100644 index 0000000..8436aa6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Value_H_ +#define _InterfaceProtocolIE_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceProtocolIE_Value_PR { + InterfaceProtocolIE_Value_PR_NOTHING, /* No components present */ + InterfaceProtocolIE_Value_PR_valueInt, + InterfaceProtocolIE_Value_PR_valueEnum, + InterfaceProtocolIE_Value_PR_valueBool, + InterfaceProtocolIE_Value_PR_valueBitS, + InterfaceProtocolIE_Value_PR_valueOctS + /* Extensions may appear below */ + +} InterfaceProtocolIE_Value_PR; + +/* InterfaceProtocolIE-Value */ +typedef struct InterfaceProtocolIE_Value { + InterfaceProtocolIE_Value_PR present; + union InterfaceProtocolIE_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceProtocolIE_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Value; +extern asn_CHOICE_specifics_t asn_SPC_InterfaceProtocolIE_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Value_1[5]; +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Value_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.c b/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.c new file mode 100644 index 0000000..981759d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfacesToTrace.h" + +int +InterfacesToTrace_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfacesToTrace_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_InterfacesToTrace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfacesToTrace = { + "InterfacesToTrace", + "InterfacesToTrace", + &asn_OP_BIT_STRING, + asn_DEF_InterfacesToTrace_tags_1, + sizeof(asn_DEF_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_InterfacesToTrace_tags_1[0]), /* 1 */ + asn_DEF_InterfacesToTrace_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_InterfacesToTrace_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfacesToTrace_constr_1, InterfacesToTrace_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.h b/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.h new file mode 100644 index 0000000..ef9dbd5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InterfacesToTrace.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfacesToTrace_H_ +#define _InterfacesToTrace_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfacesToTrace */ +typedef BIT_STRING_t InterfacesToTrace_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfacesToTrace_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfacesToTrace; +asn_struct_free_f InterfacesToTrace_free; +asn_struct_print_f InterfacesToTrace_print; +asn_constr_check_f InterfacesToTrace_constraint; +ber_type_decoder_f InterfacesToTrace_decode_ber; +der_type_encoder_f InterfacesToTrace_encode_der; +xer_type_decoder_f InterfacesToTrace_decode_xer; +xer_type_encoder_f InterfacesToTrace_encode_xer; +per_type_decoder_f InterfacesToTrace_decode_uper; +per_type_encoder_f InterfacesToTrace_encode_uper; +per_type_decoder_f InterfacesToTrace_decode_aper; +per_type_encoder_f InterfacesToTrace_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfacesToTrace_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/InvokeIndication.c b/E2Manager/asn1codec/e2ap_engine/InvokeIndication.c new file mode 100644 index 0000000..87409e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InvokeIndication.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InvokeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InvokeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InvokeIndication_value2enum_1[] = { + { 0, 15, "abs-information" }, + { 1, 23, "naics-information-start" }, + { 2, 22, "naics-information-stop" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InvokeIndication_enum2value_1[] = { + 0, /* abs-information(0) */ + 1, /* naics-information-start(1) */ + 2 /* naics-information-stop(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InvokeIndication_specs_1 = { + asn_MAP_InvokeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InvokeIndication_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* 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_InvokeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InvokeIndication = { + "InvokeIndication", + "InvokeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_InvokeIndication_tags_1, + sizeof(asn_DEF_InvokeIndication_tags_1) + /sizeof(asn_DEF_InvokeIndication_tags_1[0]), /* 1 */ + asn_DEF_InvokeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_InvokeIndication_tags_1) + /sizeof(asn_DEF_InvokeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InvokeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InvokeIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/InvokeIndication.h b/E2Manager/asn1codec/e2ap_engine/InvokeIndication.h new file mode 100644 index 0000000..f4572a3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/InvokeIndication.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InvokeIndication_H_ +#define _InvokeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InvokeIndication { + InvokeIndication_abs_information = 0, + /* + * Enumeration is extensible + */ + InvokeIndication_naics_information_start = 1, + InvokeIndication_naics_information_stop = 2 +} e_InvokeIndication; + +/* InvokeIndication */ +typedef long InvokeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InvokeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InvokeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_InvokeIndication_specs_1; +asn_struct_free_f InvokeIndication_free; +asn_struct_print_f InvokeIndication_print; +asn_constr_check_f InvokeIndication_constraint; +ber_type_decoder_f InvokeIndication_decode_ber; +der_type_encoder_f InvokeIndication_encode_der; +xer_type_decoder_f InvokeIndication_decode_xer; +xer_type_encoder_f InvokeIndication_encode_xer; +per_type_decoder_f InvokeIndication_decode_uper; +per_type_encoder_f InvokeIndication_encode_uper; +per_type_decoder_f InvokeIndication_decode_aper; +per_type_encoder_f InvokeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InvokeIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.c b/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.c new file mode 100644 index 0000000..70a79a4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Key-eNodeB-Star.h" + +int +Key_eNodeB_Star_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Key_eNodeB_Star_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Key_eNodeB_Star_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Key_eNodeB_Star = { + "Key-eNodeB-Star", + "Key-eNodeB-Star", + &asn_OP_BIT_STRING, + asn_DEF_Key_eNodeB_Star_tags_1, + sizeof(asn_DEF_Key_eNodeB_Star_tags_1) + /sizeof(asn_DEF_Key_eNodeB_Star_tags_1[0]), /* 1 */ + asn_DEF_Key_eNodeB_Star_tags_1, /* Same as above */ + sizeof(asn_DEF_Key_eNodeB_Star_tags_1) + /sizeof(asn_DEF_Key_eNodeB_Star_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Key_eNodeB_Star_constr_1, Key_eNodeB_Star_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.h b/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.h new file mode 100644 index 0000000..442e229 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Key-eNodeB-Star.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Key_eNodeB_Star_H_ +#define _Key_eNodeB_Star_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Key-eNodeB-Star */ +typedef BIT_STRING_t Key_eNodeB_Star_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Key_eNodeB_Star_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Key_eNodeB_Star; +asn_struct_free_f Key_eNodeB_Star_free; +asn_struct_print_f Key_eNodeB_Star_print; +asn_constr_check_f Key_eNodeB_Star_constraint; +ber_type_decoder_f Key_eNodeB_Star_decode_ber; +der_type_encoder_f Key_eNodeB_Star_encode_der; +xer_type_decoder_f Key_eNodeB_Star_decode_xer; +xer_type_encoder_f Key_eNodeB_Star_encode_xer; +per_type_decoder_f Key_eNodeB_Star_decode_uper; +per_type_encoder_f Key_eNodeB_Star_encode_uper; +per_type_decoder_f Key_eNodeB_Star_decode_aper; +per_type_encoder_f Key_eNodeB_Star_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Key_eNodeB_Star_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LAC.c b/E2Manager/asn1codec/e2ap_engine/LAC.c new file mode 100644 index 0000000..211c6a9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LAC.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LAC.h" + +int +LAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LAC = { + "LAC", + "LAC", + &asn_OP_OCTET_STRING, + asn_DEF_LAC_tags_1, + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + asn_DEF_LAC_tags_1, /* Same as above */ + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LAC_constr_1, LAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LAC.h b/E2Manager/asn1codec/e2ap_engine/LAC.h new file mode 100644 index 0000000..b620d6f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LAC.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LAC_H_ +#define _LAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LAC */ +typedef OCTET_STRING_t LAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LAC; +asn_struct_free_f LAC_free; +asn_struct_print_f LAC_print; +asn_constr_check_f LAC_constraint; +ber_type_decoder_f LAC_decode_ber; +der_type_encoder_f LAC_encode_der; +xer_type_decoder_f LAC_decode_xer; +xer_type_encoder_f LAC_encode_xer; +per_type_decoder_f LAC_decode_uper; +per_type_encoder_f LAC_encode_uper; +per_type_decoder_f LAC_decode_aper; +per_type_encoder_f LAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LAC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LCID.c b/E2Manager/asn1codec/e2ap_engine/LCID.c new file mode 100644 index 0000000..8255e8a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LCID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LCID.h" + +int +LCID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LCID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 1, 32 } /* (1..32,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LCID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LCID = { + "LCID", + "LCID", + &asn_OP_NativeInteger, + asn_DEF_LCID_tags_1, + sizeof(asn_DEF_LCID_tags_1) + /sizeof(asn_DEF_LCID_tags_1[0]), /* 1 */ + asn_DEF_LCID_tags_1, /* Same as above */ + sizeof(asn_DEF_LCID_tags_1) + /sizeof(asn_DEF_LCID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LCID_constr_1, LCID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LCID.h b/E2Manager/asn1codec/e2ap_engine/LCID.h new file mode 100644 index 0000000..1213cf5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LCID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LCID_H_ +#define _LCID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LCID */ +typedef long LCID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LCID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LCID; +asn_struct_free_f LCID_free; +asn_struct_print_f LCID_print; +asn_constr_check_f LCID_constraint; +ber_type_decoder_f LCID_decode_ber; +der_type_encoder_f LCID_encode_der; +xer_type_decoder_f LCID_decode_xer; +xer_type_encoder_f LCID_encode_xer; +per_type_decoder_f LCID_decode_uper; +per_type_encoder_f LCID_encode_uper; +per_type_decoder_f LCID_decode_aper; +per_type_encoder_f LCID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LCID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LHN-ID.c b/E2Manager/asn1codec/e2ap_engine/LHN-ID.c new file mode 100644 index 0000000..4c2ecfe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LHN-ID.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LHN-ID.h" + +int +LHN_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 32 && size <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LHN_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 32, 256 } /* (SIZE(32..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LHN_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LHN_ID = { + "LHN-ID", + "LHN-ID", + &asn_OP_OCTET_STRING, + asn_DEF_LHN_ID_tags_1, + sizeof(asn_DEF_LHN_ID_tags_1) + /sizeof(asn_DEF_LHN_ID_tags_1[0]), /* 1 */ + asn_DEF_LHN_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_LHN_ID_tags_1) + /sizeof(asn_DEF_LHN_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LHN_ID_constr_1, LHN_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LHN-ID.h b/E2Manager/asn1codec/e2ap_engine/LHN-ID.h new file mode 100644 index 0000000..f7b3a26 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LHN-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LHN_ID_H_ +#define _LHN_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LHN-ID */ +typedef OCTET_STRING_t LHN_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LHN_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LHN_ID; +asn_struct_free_f LHN_ID_free; +asn_struct_print_f LHN_ID_print; +asn_constr_check_f LHN_ID_constraint; +ber_type_decoder_f LHN_ID_decode_ber; +der_type_encoder_f LHN_ID_encode_der; +xer_type_decoder_f LHN_ID_decode_xer; +xer_type_encoder_f LHN_ID_encode_xer; +per_type_decoder_f LHN_ID_decode_uper; +per_type_encoder_f LHN_ID_encode_uper; +per_type_decoder_f LHN_ID_decode_aper; +per_type_encoder_f LHN_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LHN_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.c b/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.c new file mode 100644 index 0000000..deecece --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedCell-Item.h" + +#include "LastVisitedEUTRANCellInformation.h" +#include "LastVisitedGERANCellInformation.h" +asn_per_constraints_t asn_PER_type_LastVisitedCell_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_LastVisitedCell_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct LastVisitedCell_Item, choice.e_UTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedEUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-UTRAN-Cell" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedCell_Item, choice.uTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uTRAN-Cell" + }, + { ATF_POINTER, 0, offsetof(struct LastVisitedCell_Item, choice.gERAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_LastVisitedGERANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gERAN-Cell" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedCell_Item, choice.nG_RAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedNGRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nG-RAN-Cell" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedCell_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-UTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gERAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nG-RAN-Cell */ +}; +asn_CHOICE_specifics_t asn_SPC_LastVisitedCell_Item_specs_1 = { + sizeof(struct LastVisitedCell_Item), + offsetof(struct LastVisitedCell_Item, _asn_ctx), + offsetof(struct LastVisitedCell_Item, present), + sizeof(((struct LastVisitedCell_Item *)0)->present), + asn_MAP_LastVisitedCell_Item_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedCell_Item = { + "LastVisitedCell-Item", + "LastVisitedCell-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_LastVisitedCell_Item_constr_1, CHOICE_constraint }, + asn_MBR_LastVisitedCell_Item_1, + 4, /* Elements count */ + &asn_SPC_LastVisitedCell_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.h b/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.h new file mode 100644 index 0000000..67cf54c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedCell-Item.h @@ -0,0 +1,85 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedCell_Item_H_ +#define _LastVisitedCell_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LastVisitedUTRANCellInformation.h" +#include "LastVisitedNGRANCellInformation.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LastVisitedCell_Item_PR { + LastVisitedCell_Item_PR_NOTHING, /* No components present */ + LastVisitedCell_Item_PR_e_UTRAN_Cell, + LastVisitedCell_Item_PR_uTRAN_Cell, + LastVisitedCell_Item_PR_gERAN_Cell, + /* Extensions may appear below */ + LastVisitedCell_Item_PR_nG_RAN_Cell +} LastVisitedCell_Item_PR; + +/* Forward declarations */ +struct LastVisitedEUTRANCellInformation; +struct LastVisitedGERANCellInformation; + +/* LastVisitedCell-Item */ +typedef struct LastVisitedCell_Item { + LastVisitedCell_Item_PR present; + union LastVisitedCell_Item_u { + struct LastVisitedEUTRANCellInformation *e_UTRAN_Cell; + LastVisitedUTRANCellInformation_t uTRAN_Cell; + struct LastVisitedGERANCellInformation *gERAN_Cell; + /* + * This type is extensible, + * possible extensions are below. + */ + LastVisitedNGRANCellInformation_t nG_RAN_Cell; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedCell_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedCell_Item; +extern asn_CHOICE_specifics_t asn_SPC_LastVisitedCell_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedCell_Item_1[4]; +extern asn_per_constraints_t asn_PER_type_LastVisitedCell_Item_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedCell_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c b/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c new file mode 100644 index 0000000..b86e89e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedEUTRANCellInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, global_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, cellType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellType" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, time_UE_StayedInCell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Time_UE_StayedInCell, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "time-UE-StayedInCell" + }, + { ATF_POINTER, 1, offsetof(struct LastVisitedEUTRANCellInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P157, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_LastVisitedEUTRANCellInformation_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_LastVisitedEUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedEUTRANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* time-UE-StayedInCell */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_specs_1 = { + sizeof(struct LastVisitedEUTRANCellInformation), + offsetof(struct LastVisitedEUTRANCellInformation, _asn_ctx), + asn_MAP_LastVisitedEUTRANCellInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_LastVisitedEUTRANCellInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation = { + "LastVisitedEUTRANCellInformation", + "LastVisitedEUTRANCellInformation", + &asn_OP_SEQUENCE, + asn_DEF_LastVisitedEUTRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedEUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LastVisitedEUTRANCellInformation_1, + 4, /* Elements count */ + &asn_SPC_LastVisitedEUTRANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h b/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h new file mode 100644 index 0000000..49851f1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedEUTRANCellInformation_H_ +#define _LastVisitedEUTRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "CellType.h" +#include "Time-UE-StayedInCell.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* LastVisitedEUTRANCellInformation */ +typedef struct LastVisitedEUTRANCellInformation { + ECGI_t global_Cell_ID; + CellType_t cellType; + 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; +} LastVisitedEUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedEUTRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c b/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c new file mode 100644 index 0000000..6fef4ef --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedGERANCellInformation.h" + +asn_per_constraints_t asn_PER_type_LastVisitedGERANCellInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_LastVisitedGERANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedGERANCellInformation, choice.undefined), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "undefined" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedGERANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* undefined */ +}; +asn_CHOICE_specifics_t asn_SPC_LastVisitedGERANCellInformation_specs_1 = { + sizeof(struct LastVisitedGERANCellInformation), + offsetof(struct LastVisitedGERANCellInformation, _asn_ctx), + offsetof(struct LastVisitedGERANCellInformation, present), + sizeof(((struct LastVisitedGERANCellInformation *)0)->present), + asn_MAP_LastVisitedGERANCellInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedGERANCellInformation = { + "LastVisitedGERANCellInformation", + "LastVisitedGERANCellInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_LastVisitedGERANCellInformation_constr_1, CHOICE_constraint }, + asn_MBR_LastVisitedGERANCellInformation_1, + 1, /* Elements count */ + &asn_SPC_LastVisitedGERANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h b/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h new file mode 100644 index 0000000..3883f8b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedGERANCellInformation_H_ +#define _LastVisitedGERANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LastVisitedGERANCellInformation_PR { + LastVisitedGERANCellInformation_PR_NOTHING, /* No components present */ + LastVisitedGERANCellInformation_PR_undefined + /* Extensions may appear below */ + +} LastVisitedGERANCellInformation_PR; + +/* LastVisitedGERANCellInformation */ +typedef struct LastVisitedGERANCellInformation { + LastVisitedGERANCellInformation_PR present; + union 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; +} LastVisitedGERANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedGERANCellInformation; +extern asn_CHOICE_specifics_t asn_SPC_LastVisitedGERANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedGERANCellInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_LastVisitedGERANCellInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedGERANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c b/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c new file mode 100644 index 0000000..85512df --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedNGRANCellInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_LastVisitedNGRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedNGRANCellInformation = { + "LastVisitedNGRANCellInformation", + "LastVisitedNGRANCellInformation", + &asn_OP_OCTET_STRING, + asn_DEF_LastVisitedNGRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedNGRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h b/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h new file mode 100644 index 0000000..6ac5ac8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedNGRANCellInformation_H_ +#define _LastVisitedNGRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LastVisitedNGRANCellInformation */ +typedef OCTET_STRING_t LastVisitedNGRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedNGRANCellInformation; +asn_struct_free_f LastVisitedNGRANCellInformation_free; +asn_struct_print_f LastVisitedNGRANCellInformation_print; +asn_constr_check_f LastVisitedNGRANCellInformation_constraint; +ber_type_decoder_f LastVisitedNGRANCellInformation_decode_ber; +der_type_encoder_f LastVisitedNGRANCellInformation_encode_der; +xer_type_decoder_f LastVisitedNGRANCellInformation_decode_xer; +xer_type_encoder_f LastVisitedNGRANCellInformation_encode_xer; +per_type_decoder_f LastVisitedNGRANCellInformation_decode_uper; +per_type_encoder_f LastVisitedNGRANCellInformation_encode_uper; +per_type_decoder_f LastVisitedNGRANCellInformation_decode_aper; +per_type_encoder_f LastVisitedNGRANCellInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedNGRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c b/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c new file mode 100644 index 0000000..e21ea53 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedUTRANCellInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_LastVisitedUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedUTRANCellInformation = { + "LastVisitedUTRANCellInformation", + "LastVisitedUTRANCellInformation", + &asn_OP_OCTET_STRING, + asn_DEF_LastVisitedUTRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h b/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h new file mode 100644 index 0000000..9275acd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedUTRANCellInformation_H_ +#define _LastVisitedUTRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LastVisitedUTRANCellInformation */ +typedef OCTET_STRING_t LastVisitedUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedUTRANCellInformation; +asn_struct_free_f LastVisitedUTRANCellInformation_free; +asn_struct_print_f LastVisitedUTRANCellInformation_print; +asn_constr_check_f LastVisitedUTRANCellInformation_constraint; +ber_type_decoder_f LastVisitedUTRANCellInformation_decode_ber; +der_type_encoder_f LastVisitedUTRANCellInformation_encode_der; +xer_type_decoder_f LastVisitedUTRANCellInformation_decode_xer; +xer_type_encoder_f LastVisitedUTRANCellInformation_encode_xer; +per_type_decoder_f LastVisitedUTRANCellInformation_decode_uper; +per_type_encoder_f LastVisitedUTRANCellInformation_encode_uper; +per_type_decoder_f LastVisitedUTRANCellInformation_decode_aper; +per_type_encoder_f LastVisitedUTRANCellInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedUTRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Limited-list.c b/E2Manager/asn1codec/e2ap_engine/Limited-list.c new file mode 100644 index 0000000..f3a2a68 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Limited-list.c @@ -0,0 +1,123 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Limited-list.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_Limited_list_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Limited_list__Member, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct Limited_list__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P98, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct Limited_list__Member), + offsetof(struct Limited_list__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 2, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 2, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Limited_list_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Limited_list_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_Limited_list_specs_1 = { + sizeof(struct Limited_list), + offsetof(struct Limited_list, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Limited_list = { + "Limited-list", + "Limited-list", + &asn_OP_SEQUENCE_OF, + asn_DEF_Limited_list_tags_1, + sizeof(asn_DEF_Limited_list_tags_1) + /sizeof(asn_DEF_Limited_list_tags_1[0]), /* 1 */ + asn_DEF_Limited_list_tags_1, /* Same as above */ + sizeof(asn_DEF_Limited_list_tags_1) + /sizeof(asn_DEF_Limited_list_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Limited_list_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Limited_list_1, + 1, /* Single element */ + &asn_SPC_Limited_list_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Limited-list.h b/E2Manager/asn1codec/e2ap_engine/Limited-list.h new file mode 100644 index 0000000..d244dd2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Limited-list.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Limited_list_H_ +#define _Limited_list_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NRCGI.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct Limited_list__Member { + NRCGI_t nrCellID; + 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; +} Limited_list__Member; + +/* Limited-list */ +typedef struct Limited_list { + A_SEQUENCE_OF(Limited_list__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Limited_list_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Limited_list; +extern asn_SET_OF_specifics_t asn_SPC_Limited_list_specs_1; +extern asn_TYPE_member_t asn_MBR_Limited_list_1[1]; +extern asn_per_constraints_t asn_PER_type_Limited_list_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Limited_list_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Links-to-log.c b/E2Manager/asn1codec/e2ap_engine/Links-to-log.c new file mode 100644 index 0000000..3468bec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Links-to-log.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Links-to-log.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Links_to_log_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Links_to_log_value2enum_1[] = { + { 0, 6, "uplink" }, + { 1, 8, "downlink" }, + { 2, 24, "both-uplink-and-downlink" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Links_to_log_enum2value_1[] = { + 2, /* both-uplink-and-downlink(2) */ + 1, /* downlink(1) */ + 0 /* uplink(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Links_to_log_specs_1 = { + asn_MAP_Links_to_log_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Links_to_log_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Links_to_log_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Links_to_log = { + "Links-to-log", + "Links-to-log", + &asn_OP_NativeEnumerated, + asn_DEF_Links_to_log_tags_1, + sizeof(asn_DEF_Links_to_log_tags_1) + /sizeof(asn_DEF_Links_to_log_tags_1[0]), /* 1 */ + asn_DEF_Links_to_log_tags_1, /* Same as above */ + sizeof(asn_DEF_Links_to_log_tags_1) + /sizeof(asn_DEF_Links_to_log_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Links_to_log_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Links_to_log_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Links-to-log.h b/E2Manager/asn1codec/e2ap_engine/Links-to-log.h new file mode 100644 index 0000000..442a688 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Links-to-log.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Links_to_log_H_ +#define _Links_to_log_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Links_to_log { + Links_to_log_uplink = 0, + Links_to_log_downlink = 1, + Links_to_log_both_uplink_and_downlink = 2 + /* + * Enumeration is extensible + */ +} e_Links_to_log; + +/* Links-to-log */ +typedef long Links_to_log_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Links_to_log_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Links_to_log; +extern const asn_INTEGER_specifics_t asn_SPC_Links_to_log_specs_1; +asn_struct_free_f Links_to_log_free; +asn_struct_print_f Links_to_log_print; +asn_constr_check_f Links_to_log_constraint; +ber_type_decoder_f Links_to_log_decode_ber; +der_type_encoder_f Links_to_log_encode_der; +xer_type_decoder_f Links_to_log_decode_xer; +xer_type_encoder_f Links_to_log_encode_xer; +per_type_decoder_f Links_to_log_decode_uper; +per_type_encoder_f Links_to_log_encode_uper; +per_type_decoder_f Links_to_log_decode_aper; +per_type_encoder_f Links_to_log_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Links_to_log_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c new file mode 100644 index 0000000..5101f13 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinEUTRACoordinationReq.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinEUTRACoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinEUTRACoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinEUTRACoordinationReq_specs_1 = { + sizeof(struct ListofEUTRACellsinEUTRACoordinationReq), + offsetof(struct ListofEUTRACellsinEUTRACoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq = { + "ListofEUTRACellsinEUTRACoordinationReq", + "ListofEUTRACellsinEUTRACoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinEUTRACoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinEUTRACoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinEUTRACoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h new file mode 100644 index 0000000..1534ae9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinEUTRACoordinationReq_H_ +#define _ListofEUTRACellsinEUTRACoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinEUTRACoordinationReq */ +typedef struct ListofEUTRACellsinEUTRACoordinationReq { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinEUTRACoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinEUTRACoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c new file mode 100644 index 0000000..7a9d739 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinEUTRACoordinationResp.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinEUTRACoordinationResp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinEUTRACoordinationResp_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinEUTRACoordinationResp_specs_1 = { + sizeof(struct ListofEUTRACellsinEUTRACoordinationResp), + offsetof(struct ListofEUTRACellsinEUTRACoordinationResp, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp = { + "ListofEUTRACellsinEUTRACoordinationResp", + "ListofEUTRACellsinEUTRACoordinationResp", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinEUTRACoordinationResp_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinEUTRACoordinationResp_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinEUTRACoordinationResp_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h new file mode 100644 index 0000000..a8e44a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinEUTRACoordinationResp_H_ +#define _ListofEUTRACellsinEUTRACoordinationResp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinEUTRACoordinationResp */ +typedef struct ListofEUTRACellsinEUTRACoordinationResp { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinEUTRACoordinationResp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinEUTRACoordinationResp_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c new file mode 100644 index 0000000..29f0d2a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinNRCoordinationReq.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinNRCoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinNRCoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinNRCoordinationReq_specs_1 = { + sizeof(struct ListofEUTRACellsinNRCoordinationReq), + offsetof(struct ListofEUTRACellsinNRCoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinNRCoordinationReq = { + "ListofEUTRACellsinNRCoordinationReq", + "ListofEUTRACellsinNRCoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinNRCoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinNRCoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinNRCoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h new file mode 100644 index 0000000..ff442b4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinNRCoordinationReq_H_ +#define _ListofEUTRACellsinNRCoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinNRCoordinationReq */ +typedef struct ListofEUTRACellsinNRCoordinationReq { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinNRCoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinNRCoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinNRCoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c new file mode 100644 index 0000000..ff3cd34 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofNRCellsinNRCoordinationReq.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ListofNRCellsinNRCoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 0, 64 } /* (SIZE(0..64)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofNRCellsinNRCoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofNRCellsinNRCoordinationReq_specs_1 = { + sizeof(struct ListofNRCellsinNRCoordinationReq), + offsetof(struct ListofNRCellsinNRCoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationReq = { + "ListofNRCellsinNRCoordinationReq", + "ListofNRCellsinNRCoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1, + sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofNRCellsinNRCoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofNRCellsinNRCoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofNRCellsinNRCoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h new file mode 100644 index 0000000..63ccfd5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofNRCellsinNRCoordinationReq_H_ +#define _ListofNRCellsinNRCoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ListofNRCellsinNRCoordinationReq */ +typedef struct ListofNRCellsinNRCoordinationReq { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofNRCellsinNRCoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofNRCellsinNRCoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c new file mode 100644 index 0000000..7786a19 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofNRCellsinNRCoordinationResp.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ListofNRCellsinNRCoordinationResp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 0, 64 } /* (SIZE(0..64)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofNRCellsinNRCoordinationResp_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofNRCellsinNRCoordinationResp_specs_1 = { + sizeof(struct ListofNRCellsinNRCoordinationResp), + offsetof(struct ListofNRCellsinNRCoordinationResp, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationResp = { + "ListofNRCellsinNRCoordinationResp", + "ListofNRCellsinNRCoordinationResp", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1, + sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[0]), /* 1 */ + asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofNRCellsinNRCoordinationResp_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofNRCellsinNRCoordinationResp_1, + 1, /* Single element */ + &asn_SPC_ListofNRCellsinNRCoordinationResp_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h new file mode 100644 index 0000000..6f2f033 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofNRCellsinNRCoordinationResp_H_ +#define _ListofNRCellsinNRCoordinationResp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ListofNRCellsinNRCoordinationResp */ +typedef struct ListofNRCellsinNRCoordinationResp { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofNRCellsinNRCoordinationResp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationResp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofNRCellsinNRCoordinationResp_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LoadIndicator.c b/E2Manager/asn1codec/e2ap_engine/LoadIndicator.c new file mode 100644 index 0000000..e3c9753 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LoadIndicator.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LoadIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LoadIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_LoadIndicator_value2enum_1[] = { + { 0, 7, "lowLoad" }, + { 1, 10, "mediumLoad" }, + { 2, 8, "highLoad" }, + { 3, 8, "overLoad" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_LoadIndicator_enum2value_1[] = { + 2, /* highLoad(2) */ + 0, /* lowLoad(0) */ + 1, /* mediumLoad(1) */ + 3 /* overLoad(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_LoadIndicator_specs_1 = { + asn_MAP_LoadIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_LoadIndicator_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_LoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LoadIndicator = { + "LoadIndicator", + "LoadIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_LoadIndicator_tags_1, + sizeof(asn_DEF_LoadIndicator_tags_1) + /sizeof(asn_DEF_LoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_LoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_LoadIndicator_tags_1) + /sizeof(asn_DEF_LoadIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LoadIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_LoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LoadIndicator.h b/E2Manager/asn1codec/e2ap_engine/LoadIndicator.h new file mode 100644 index 0000000..6df39dd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LoadIndicator.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LoadIndicator_H_ +#define _LoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LoadIndicator { + LoadIndicator_lowLoad = 0, + LoadIndicator_mediumLoad = 1, + LoadIndicator_highLoad = 2, + LoadIndicator_overLoad = 3 + /* + * Enumeration is extensible + */ +} e_LoadIndicator; + +/* LoadIndicator */ +typedef long LoadIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LoadIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LoadIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_LoadIndicator_specs_1; +asn_struct_free_f LoadIndicator_free; +asn_struct_print_f LoadIndicator_print; +asn_constr_check_f LoadIndicator_constraint; +ber_type_decoder_f LoadIndicator_decode_ber; +der_type_encoder_f LoadIndicator_encode_der; +xer_type_decoder_f LoadIndicator_decode_xer; +xer_type_encoder_f LoadIndicator_encode_xer; +per_type_decoder_f LoadIndicator_decode_uper; +per_type_encoder_f LoadIndicator_encode_uper; +per_type_decoder_f LoadIndicator_decode_aper; +per_type_encoder_f LoadIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LoadInformation.c b/E2Manager/asn1codec/e2ap_engine/LoadInformation.c new file mode 100644 index 0000000..92f49c7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LoadInformation.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LoadInformation.h" + +asn_TYPE_member_t asn_MBR_LoadInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_LoadInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LoadInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_specs_1 = { + sizeof(struct LoadInformation), + offsetof(struct LoadInformation, _asn_ctx), + asn_MAP_LoadInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LoadInformation = { + "LoadInformation", + "LoadInformation", + &asn_OP_SEQUENCE, + asn_DEF_LoadInformation_tags_1, + sizeof(asn_DEF_LoadInformation_tags_1) + /sizeof(asn_DEF_LoadInformation_tags_1[0]), /* 1 */ + asn_DEF_LoadInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LoadInformation_tags_1) + /sizeof(asn_DEF_LoadInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LoadInformation_1, + 1, /* Elements count */ + &asn_SPC_LoadInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LoadInformation.h b/E2Manager/asn1codec/e2ap_engine/LoadInformation.h new file mode 100644 index 0000000..157b591 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LoadInformation.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LoadInformation_H_ +#define _LoadInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LoadInformation */ +typedef struct LoadInformation { + ProtocolIE_Container_119P27_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LoadInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LoadInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LoadInformation_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LoadInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.c b/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.c new file mode 100644 index 0000000..bde512d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LocationReportingInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_LocationReportingInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation, eventType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EventType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eventType" + }, + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation, reportArea), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportArea, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportArea" + }, + { ATF_POINTER, 1, offsetof(struct LocationReportingInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P158, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_LocationReportingInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_LocationReportingInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LocationReportingInformation_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_specs_1 = { + sizeof(struct LocationReportingInformation), + offsetof(struct LocationReportingInformation, _asn_ctx), + asn_MAP_LocationReportingInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_LocationReportingInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation = { + "LocationReportingInformation", + "LocationReportingInformation", + &asn_OP_SEQUENCE, + asn_DEF_LocationReportingInformation_tags_1, + sizeof(asn_DEF_LocationReportingInformation_tags_1) + /sizeof(asn_DEF_LocationReportingInformation_tags_1[0]), /* 1 */ + asn_DEF_LocationReportingInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LocationReportingInformation_tags_1) + /sizeof(asn_DEF_LocationReportingInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LocationReportingInformation_1, + 3, /* Elements count */ + &asn_SPC_LocationReportingInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.h b/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.h new file mode 100644 index 0000000..9689f77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/LocationReportingInformation.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LocationReportingInformation_H_ +#define _LocationReportingInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EventType.h" +#include "ReportArea.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* LocationReportingInformation */ +typedef struct LocationReportingInformation { + EventType_t eventType; + 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; +} LocationReportingInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LocationReportingInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LocationReportingInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.c b/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.c new file mode 100644 index 0000000..f908c4f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1PeriodicReporting.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M1PeriodicReporting_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting, reportInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportIntervalMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting, reportAmount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportAmountMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportAmount" + }, + { ATF_POINTER, 1, offsetof(struct M1PeriodicReporting, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P159, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M1PeriodicReporting_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M1PeriodicReporting_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1PeriodicReporting_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportInterval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportAmount */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_specs_1 = { + sizeof(struct M1PeriodicReporting), + offsetof(struct M1PeriodicReporting, _asn_ctx), + asn_MAP_M1PeriodicReporting_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M1PeriodicReporting_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting = { + "M1PeriodicReporting", + "M1PeriodicReporting", + &asn_OP_SEQUENCE, + asn_DEF_M1PeriodicReporting_tags_1, + sizeof(asn_DEF_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_M1PeriodicReporting_tags_1[0]), /* 1 */ + asn_DEF_M1PeriodicReporting_tags_1, /* Same as above */ + sizeof(asn_DEF_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_M1PeriodicReporting_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1PeriodicReporting_1, + 3, /* Elements count */ + &asn_SPC_M1PeriodicReporting_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.h b/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.h new file mode 100644 index 0000000..10a648c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1PeriodicReporting.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1PeriodicReporting_H_ +#define _M1PeriodicReporting_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReportIntervalMDT.h" +#include "ReportAmountMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M1PeriodicReporting */ +typedef struct M1PeriodicReporting { + ReportIntervalMDT_t reportInterval; + 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; +} M1PeriodicReporting_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting; +extern asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_specs_1; +extern asn_TYPE_member_t asn_MBR_M1PeriodicReporting_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1PeriodicReporting_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.c b/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.c new file mode 100644 index 0000000..b1816e2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1ReportingTrigger.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M1ReportingTrigger_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M1ReportingTrigger_value2enum_1[] = { + { 0, 8, "periodic" }, + { 1, 16, "a2eventtriggered" }, + { 2, 25, "a2eventtriggered-periodic" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M1ReportingTrigger_enum2value_1[] = { + 1, /* a2eventtriggered(1) */ + 2, /* a2eventtriggered-periodic(2) */ + 0 /* periodic(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M1ReportingTrigger_specs_1 = { + asn_MAP_M1ReportingTrigger_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M1ReportingTrigger_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M1ReportingTrigger_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M1ReportingTrigger = { + "M1ReportingTrigger", + "M1ReportingTrigger", + &asn_OP_NativeEnumerated, + asn_DEF_M1ReportingTrigger_tags_1, + sizeof(asn_DEF_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_M1ReportingTrigger_tags_1[0]), /* 1 */ + asn_DEF_M1ReportingTrigger_tags_1, /* Same as above */ + sizeof(asn_DEF_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_M1ReportingTrigger_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M1ReportingTrigger_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M1ReportingTrigger_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.h b/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.h new file mode 100644 index 0000000..75a437e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1ReportingTrigger.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1ReportingTrigger_H_ +#define _M1ReportingTrigger_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M1ReportingTrigger { + M1ReportingTrigger_periodic = 0, + M1ReportingTrigger_a2eventtriggered = 1, + /* + * Enumeration is extensible + */ + M1ReportingTrigger_a2eventtriggered_periodic = 2 +} e_M1ReportingTrigger; + +/* M1ReportingTrigger */ +typedef long M1ReportingTrigger_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M1ReportingTrigger_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M1ReportingTrigger; +extern const asn_INTEGER_specifics_t asn_SPC_M1ReportingTrigger_specs_1; +asn_struct_free_f M1ReportingTrigger_free; +asn_struct_print_f M1ReportingTrigger_print; +asn_constr_check_f M1ReportingTrigger_constraint; +ber_type_decoder_f M1ReportingTrigger_decode_ber; +der_type_encoder_f M1ReportingTrigger_encode_der; +xer_type_decoder_f M1ReportingTrigger_decode_xer; +xer_type_encoder_f M1ReportingTrigger_encode_xer; +per_type_decoder_f M1ReportingTrigger_decode_uper; +per_type_encoder_f M1ReportingTrigger_encode_uper; +per_type_decoder_f M1ReportingTrigger_decode_aper; +per_type_encoder_f M1ReportingTrigger_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1ReportingTrigger_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.c b/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.c new file mode 100644 index 0000000..7951c4c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1ThresholdEventA2.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2, measurementThreshold), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementThresholdA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementThreshold" + }, + { ATF_POINTER, 1, offsetof(struct M1ThresholdEventA2, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P160, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M1ThresholdEventA2_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_M1ThresholdEventA2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1ThresholdEventA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementThreshold */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_specs_1 = { + sizeof(struct M1ThresholdEventA2), + offsetof(struct M1ThresholdEventA2, _asn_ctx), + asn_MAP_M1ThresholdEventA2_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_M1ThresholdEventA2_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2 = { + "M1ThresholdEventA2", + "M1ThresholdEventA2", + &asn_OP_SEQUENCE, + asn_DEF_M1ThresholdEventA2_tags_1, + sizeof(asn_DEF_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_M1ThresholdEventA2_tags_1[0]), /* 1 */ + asn_DEF_M1ThresholdEventA2_tags_1, /* Same as above */ + sizeof(asn_DEF_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_M1ThresholdEventA2_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1ThresholdEventA2_1, + 2, /* Elements count */ + &asn_SPC_M1ThresholdEventA2_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.h b/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.h new file mode 100644 index 0000000..3b34f25 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M1ThresholdEventA2.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1ThresholdEventA2_H_ +#define _M1ThresholdEventA2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementThresholdA2.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M1ThresholdEventA2 */ +typedef struct M1ThresholdEventA2 { + 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; +} M1ThresholdEventA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2; +extern asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_specs_1; +extern asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1ThresholdEventA2_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M3Configuration.c b/E2Manager/asn1codec/e2ap_engine/M3Configuration.c new file mode 100644 index 0000000..fb7ae34 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M3Configuration.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M3Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M3Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration, m3period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M3period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m3period" + }, + { ATF_POINTER, 1, offsetof(struct M3Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P161, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M3Configuration_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_M3Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M3Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m3period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_specs_1 = { + sizeof(struct M3Configuration), + offsetof(struct M3Configuration, _asn_ctx), + asn_MAP_M3Configuration_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_M3Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M3Configuration = { + "M3Configuration", + "M3Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M3Configuration_tags_1, + sizeof(asn_DEF_M3Configuration_tags_1) + /sizeof(asn_DEF_M3Configuration_tags_1[0]), /* 1 */ + asn_DEF_M3Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M3Configuration_tags_1) + /sizeof(asn_DEF_M3Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M3Configuration_1, + 2, /* Elements count */ + &asn_SPC_M3Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M3Configuration.h b/E2Manager/asn1codec/e2ap_engine/M3Configuration.h new file mode 100644 index 0000000..c44b90b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M3Configuration.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M3Configuration_H_ +#define _M3Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M3period.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M3Configuration */ +typedef struct M3Configuration { + M3period_t m3period; + 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; +} M3Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M3Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M3Configuration_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M3Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M3period.c b/E2Manager/asn1codec/e2ap_engine/M3period.c new file mode 100644 index 0000000..daa09c2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M3period.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M3period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M3period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M3period_value2enum_1[] = { + { 0, 5, "ms100" }, + { 1, 6, "ms1000" }, + { 2, 7, "ms10000" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M3period_enum2value_1[] = { + 0, /* ms100(0) */ + 1, /* ms1000(1) */ + 2 /* ms10000(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M3period_specs_1 = { + asn_MAP_M3period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M3period_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M3period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M3period = { + "M3period", + "M3period", + &asn_OP_NativeEnumerated, + asn_DEF_M3period_tags_1, + sizeof(asn_DEF_M3period_tags_1) + /sizeof(asn_DEF_M3period_tags_1[0]), /* 1 */ + asn_DEF_M3period_tags_1, /* Same as above */ + sizeof(asn_DEF_M3period_tags_1) + /sizeof(asn_DEF_M3period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M3period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M3period_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M3period.h b/E2Manager/asn1codec/e2ap_engine/M3period.h new file mode 100644 index 0000000..873b528 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M3period.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M3period_H_ +#define _M3period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M3period { + M3period_ms100 = 0, + M3period_ms1000 = 1, + M3period_ms10000 = 2 + /* + * Enumeration is extensible + */ +} e_M3period; + +/* M3period */ +typedef long M3period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M3period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M3period; +extern const asn_INTEGER_specifics_t asn_SPC_M3period_specs_1; +asn_struct_free_f M3period_free; +asn_struct_print_f M3period_print; +asn_constr_check_f M3period_constraint; +ber_type_decoder_f M3period_decode_ber; +der_type_encoder_f M3period_encode_der; +xer_type_decoder_f M3period_decode_xer; +xer_type_encoder_f M3period_encode_xer; +per_type_decoder_f M3period_decode_uper; +per_type_encoder_f M3period_encode_uper; +per_type_decoder_f M3period_decode_aper; +per_type_encoder_f M3period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M3period_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M4Configuration.c b/E2Manager/asn1codec/e2ap_engine/M4Configuration.c new file mode 100644 index 0000000..ebaa7ca --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M4Configuration.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M4Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M4Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration, m4period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M4period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration, m4_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M4Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P162, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M4Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M4Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M4Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m4period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m4-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_specs_1 = { + sizeof(struct M4Configuration), + offsetof(struct M4Configuration, _asn_ctx), + asn_MAP_M4Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M4Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M4Configuration = { + "M4Configuration", + "M4Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M4Configuration_tags_1, + sizeof(asn_DEF_M4Configuration_tags_1) + /sizeof(asn_DEF_M4Configuration_tags_1[0]), /* 1 */ + asn_DEF_M4Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M4Configuration_tags_1) + /sizeof(asn_DEF_M4Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M4Configuration_1, + 3, /* Elements count */ + &asn_SPC_M4Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M4Configuration.h b/E2Manager/asn1codec/e2ap_engine/M4Configuration.h new file mode 100644 index 0000000..1174c87 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M4Configuration.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M4Configuration_H_ +#define _M4Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M4period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M4Configuration */ +typedef struct M4Configuration { + M4period_t m4period; + Links_to_log_t m4_links_to_log; + 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; +} M4Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M4Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M4Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M4Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M4period.c b/E2Manager/asn1codec/e2ap_engine/M4period.c new file mode 100644 index 0000000..bf057fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M4period.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M4period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M4period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M4period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M4period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M4period_specs_1 = { + asn_MAP_M4period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M4period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M4period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M4period = { + "M4period", + "M4period", + &asn_OP_NativeEnumerated, + asn_DEF_M4period_tags_1, + sizeof(asn_DEF_M4period_tags_1) + /sizeof(asn_DEF_M4period_tags_1[0]), /* 1 */ + asn_DEF_M4period_tags_1, /* Same as above */ + sizeof(asn_DEF_M4period_tags_1) + /sizeof(asn_DEF_M4period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M4period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M4period_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M4period.h b/E2Manager/asn1codec/e2ap_engine/M4period.h new file mode 100644 index 0000000..4fecdb8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M4period.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M4period_H_ +#define _M4period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M4period { + M4period_ms1024 = 0, + M4period_ms2048 = 1, + M4period_ms5120 = 2, + M4period_ms10240 = 3, + M4period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_M4period; + +/* M4period */ +typedef long M4period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M4period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M4period; +extern const asn_INTEGER_specifics_t asn_SPC_M4period_specs_1; +asn_struct_free_f M4period_free; +asn_struct_print_f M4period_print; +asn_constr_check_f M4period_constraint; +ber_type_decoder_f M4period_decode_ber; +der_type_encoder_f M4period_encode_der; +xer_type_decoder_f M4period_decode_xer; +xer_type_encoder_f M4period_encode_xer; +per_type_decoder_f M4period_decode_uper; +per_type_encoder_f M4period_encode_uper; +per_type_decoder_f M4period_decode_aper; +per_type_encoder_f M4period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M4period_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M5Configuration.c b/E2Manager/asn1codec/e2ap_engine/M5Configuration.c new file mode 100644 index 0000000..a92546f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M5Configuration.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M5Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M5Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration, m5period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M5period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration, m5_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M5Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P163, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M5Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M5Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M5Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m5period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m5-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_specs_1 = { + sizeof(struct M5Configuration), + offsetof(struct M5Configuration, _asn_ctx), + asn_MAP_M5Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M5Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M5Configuration = { + "M5Configuration", + "M5Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M5Configuration_tags_1, + sizeof(asn_DEF_M5Configuration_tags_1) + /sizeof(asn_DEF_M5Configuration_tags_1[0]), /* 1 */ + asn_DEF_M5Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M5Configuration_tags_1) + /sizeof(asn_DEF_M5Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M5Configuration_1, + 3, /* Elements count */ + &asn_SPC_M5Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M5Configuration.h b/E2Manager/asn1codec/e2ap_engine/M5Configuration.h new file mode 100644 index 0000000..98129be --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M5Configuration.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M5Configuration_H_ +#define _M5Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M5period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M5Configuration */ +typedef struct M5Configuration { + M5period_t m5period; + Links_to_log_t m5_links_to_log; + 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; +} M5Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M5Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M5Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M5Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M5period.c b/E2Manager/asn1codec/e2ap_engine/M5period.c new file mode 100644 index 0000000..27e4eeb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M5period.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M5period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M5period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M5period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M5period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M5period_specs_1 = { + asn_MAP_M5period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M5period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M5period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M5period = { + "M5period", + "M5period", + &asn_OP_NativeEnumerated, + asn_DEF_M5period_tags_1, + sizeof(asn_DEF_M5period_tags_1) + /sizeof(asn_DEF_M5period_tags_1[0]), /* 1 */ + asn_DEF_M5period_tags_1, /* Same as above */ + sizeof(asn_DEF_M5period_tags_1) + /sizeof(asn_DEF_M5period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M5period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M5period_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M5period.h b/E2Manager/asn1codec/e2ap_engine/M5period.h new file mode 100644 index 0000000..18d5b70 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M5period.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M5period_H_ +#define _M5period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M5period { + M5period_ms1024 = 0, + M5period_ms2048 = 1, + M5period_ms5120 = 2, + M5period_ms10240 = 3, + M5period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_M5period; + +/* M5period */ +typedef long M5period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M5period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M5period; +extern const asn_INTEGER_specifics_t asn_SPC_M5period_specs_1; +asn_struct_free_f M5period_free; +asn_struct_print_f M5period_print; +asn_constr_check_f M5period_constraint; +ber_type_decoder_f M5period_decode_ber; +der_type_encoder_f M5period_encode_der; +xer_type_decoder_f M5period_decode_xer; +xer_type_encoder_f M5period_encode_xer; +per_type_decoder_f M5period_decode_uper; +per_type_encoder_f M5period_encode_uper; +per_type_decoder_f M5period_decode_aper; +per_type_encoder_f M5period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M5period_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M6Configuration.c b/E2Manager/asn1codec/e2ap_engine/M6Configuration.c new file mode 100644 index 0000000..2c8994b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6Configuration.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M6Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration, m6report_interval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M6report_interval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6report-interval" + }, + { ATF_POINTER, 1, offsetof(struct M6Configuration, m6delay_threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M6delay_threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6delay-threshold" + }, + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration, m6_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M6Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P164, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M6Configuration_oms_1[] = { 1, 3 }; +static const ber_tlv_tag_t asn_DEF_M6Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M6Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m6report-interval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m6delay-threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m6-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_specs_1 = { + sizeof(struct M6Configuration), + offsetof(struct M6Configuration, _asn_ctx), + asn_MAP_M6Configuration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_M6Configuration_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M6Configuration = { + "M6Configuration", + "M6Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M6Configuration_tags_1, + sizeof(asn_DEF_M6Configuration_tags_1) + /sizeof(asn_DEF_M6Configuration_tags_1[0]), /* 1 */ + asn_DEF_M6Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M6Configuration_tags_1) + /sizeof(asn_DEF_M6Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M6Configuration_1, + 4, /* Elements count */ + &asn_SPC_M6Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M6Configuration.h b/E2Manager/asn1codec/e2ap_engine/M6Configuration.h new file mode 100644 index 0000000..259e553 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6Configuration.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6Configuration_H_ +#define _M6Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M6report-interval.h" +#include "M6delay-threshold.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M6Configuration */ +typedef struct M6Configuration { + M6report_interval_t m6report_interval; + M6delay_threshold_t *m6delay_threshold; /* OPTIONAL */ + Links_to_log_t m6_links_to_log; + 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; +} M6Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M6Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M6Configuration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.c b/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.c new file mode 100644 index 0000000..12b33b8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.c @@ -0,0 +1,94 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6delay-threshold.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M6delay_threshold_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M6delay_threshold_value2enum_1[] = { + { 0, 4, "ms30" }, + { 1, 4, "ms40" }, + { 2, 4, "ms50" }, + { 3, 4, "ms60" }, + { 4, 4, "ms70" }, + { 5, 4, "ms80" }, + { 6, 4, "ms90" }, + { 7, 5, "ms100" }, + { 8, 5, "ms150" }, + { 9, 5, "ms300" }, + { 10, 5, "ms500" }, + { 11, 5, "ms750" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M6delay_threshold_enum2value_1[] = { + 7, /* ms100(7) */ + 8, /* ms150(8) */ + 0, /* ms30(0) */ + 9, /* ms300(9) */ + 1, /* ms40(1) */ + 2, /* ms50(2) */ + 10, /* ms500(10) */ + 3, /* ms60(3) */ + 4, /* ms70(4) */ + 11, /* ms750(11) */ + 5, /* ms80(5) */ + 6 /* ms90(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M6delay_threshold_specs_1 = { + asn_MAP_M6delay_threshold_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M6delay_threshold_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M6delay_threshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M6delay_threshold = { + "M6delay-threshold", + "M6delay-threshold", + &asn_OP_NativeEnumerated, + asn_DEF_M6delay_threshold_tags_1, + sizeof(asn_DEF_M6delay_threshold_tags_1) + /sizeof(asn_DEF_M6delay_threshold_tags_1[0]), /* 1 */ + asn_DEF_M6delay_threshold_tags_1, /* Same as above */ + sizeof(asn_DEF_M6delay_threshold_tags_1) + /sizeof(asn_DEF_M6delay_threshold_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M6delay_threshold_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M6delay_threshold_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.h b/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.h new file mode 100644 index 0000000..792afc5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6delay-threshold.h @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6delay_threshold_H_ +#define _M6delay_threshold_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M6delay_threshold { + M6delay_threshold_ms30 = 0, + M6delay_threshold_ms40 = 1, + M6delay_threshold_ms50 = 2, + M6delay_threshold_ms60 = 3, + M6delay_threshold_ms70 = 4, + M6delay_threshold_ms80 = 5, + M6delay_threshold_ms90 = 6, + M6delay_threshold_ms100 = 7, + M6delay_threshold_ms150 = 8, + M6delay_threshold_ms300 = 9, + M6delay_threshold_ms500 = 10, + M6delay_threshold_ms750 = 11 + /* + * Enumeration is extensible + */ +} e_M6delay_threshold; + +/* M6delay-threshold */ +typedef long M6delay_threshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M6delay_threshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M6delay_threshold; +extern const asn_INTEGER_specifics_t asn_SPC_M6delay_threshold_specs_1; +asn_struct_free_f M6delay_threshold_free; +asn_struct_print_f M6delay_threshold_print; +asn_constr_check_f M6delay_threshold_constraint; +ber_type_decoder_f M6delay_threshold_decode_ber; +der_type_encoder_f M6delay_threshold_encode_der; +xer_type_decoder_f M6delay_threshold_decode_xer; +xer_type_encoder_f M6delay_threshold_encode_xer; +per_type_decoder_f M6delay_threshold_decode_uper; +per_type_encoder_f M6delay_threshold_encode_uper; +per_type_decoder_f M6delay_threshold_decode_aper; +per_type_encoder_f M6delay_threshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6delay_threshold_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M6report-interval.c b/E2Manager/asn1codec/e2ap_engine/M6report-interval.c new file mode 100644 index 0000000..7ac53ef --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6report-interval.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6report-interval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M6report_interval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M6report_interval_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M6report_interval_enum2value_1[] = { + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M6report_interval_specs_1 = { + asn_MAP_M6report_interval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M6report_interval_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M6report_interval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M6report_interval = { + "M6report-interval", + "M6report-interval", + &asn_OP_NativeEnumerated, + asn_DEF_M6report_interval_tags_1, + sizeof(asn_DEF_M6report_interval_tags_1) + /sizeof(asn_DEF_M6report_interval_tags_1[0]), /* 1 */ + asn_DEF_M6report_interval_tags_1, /* Same as above */ + sizeof(asn_DEF_M6report_interval_tags_1) + /sizeof(asn_DEF_M6report_interval_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M6report_interval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M6report_interval_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M6report-interval.h b/E2Manager/asn1codec/e2ap_engine/M6report-interval.h new file mode 100644 index 0000000..deed0b9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M6report-interval.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6report_interval_H_ +#define _M6report_interval_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M6report_interval { + M6report_interval_ms1024 = 0, + M6report_interval_ms2048 = 1, + M6report_interval_ms5120 = 2, + M6report_interval_ms10240 = 3 + /* + * Enumeration is extensible + */ +} e_M6report_interval; + +/* M6report-interval */ +typedef long M6report_interval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M6report_interval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M6report_interval; +extern const asn_INTEGER_specifics_t asn_SPC_M6report_interval_specs_1; +asn_struct_free_f M6report_interval_free; +asn_struct_print_f M6report_interval_print; +asn_constr_check_f M6report_interval_constraint; +ber_type_decoder_f M6report_interval_decode_ber; +der_type_encoder_f M6report_interval_encode_der; +xer_type_decoder_f M6report_interval_decode_xer; +xer_type_encoder_f M6report_interval_encode_xer; +per_type_decoder_f M6report_interval_decode_uper; +per_type_encoder_f M6report_interval_encode_uper; +per_type_decoder_f M6report_interval_decode_aper; +per_type_encoder_f M6report_interval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6report_interval_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M7Configuration.c b/E2Manager/asn1codec/e2ap_engine/M7Configuration.c new file mode 100644 index 0000000..111922f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M7Configuration.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M7Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M7Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration, m7period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M7period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration, m7_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M7Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P165, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M7Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M7Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M7Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m7period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m7-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_specs_1 = { + sizeof(struct M7Configuration), + offsetof(struct M7Configuration, _asn_ctx), + asn_MAP_M7Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M7Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M7Configuration = { + "M7Configuration", + "M7Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M7Configuration_tags_1, + sizeof(asn_DEF_M7Configuration_tags_1) + /sizeof(asn_DEF_M7Configuration_tags_1[0]), /* 1 */ + asn_DEF_M7Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M7Configuration_tags_1) + /sizeof(asn_DEF_M7Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M7Configuration_1, + 3, /* Elements count */ + &asn_SPC_M7Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M7Configuration.h b/E2Manager/asn1codec/e2ap_engine/M7Configuration.h new file mode 100644 index 0000000..a447d9c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M7Configuration.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M7Configuration_H_ +#define _M7Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M7period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M7Configuration */ +typedef struct M7Configuration { + M7period_t m7period; + Links_to_log_t m7_links_to_log; + 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; +} M7Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M7Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M7Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M7Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/M7period.c b/E2Manager/asn1codec/e2ap_engine/M7period.c new file mode 100644 index 0000000..7d7d6d6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M7period.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M7period.h" + +int +M7period_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 60)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M7period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 1, 60 } /* (1..60,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_M7period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M7period = { + "M7period", + "M7period", + &asn_OP_NativeInteger, + asn_DEF_M7period_tags_1, + sizeof(asn_DEF_M7period_tags_1) + /sizeof(asn_DEF_M7period_tags_1[0]), /* 1 */ + asn_DEF_M7period_tags_1, /* Same as above */ + sizeof(asn_DEF_M7period_tags_1) + /sizeof(asn_DEF_M7period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M7period_constr_1, M7period_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/M7period.h b/E2Manager/asn1codec/e2ap_engine/M7period.h new file mode 100644 index 0000000..3783de4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/M7period.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M7period_H_ +#define _M7period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* M7period */ +typedef long M7period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M7period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M7period; +asn_struct_free_f M7period_free; +asn_struct_print_f M7period_print; +asn_constr_check_f M7period_constraint; +ber_type_decoder_f M7period_decode_ber; +der_type_encoder_f M7period_encode_der; +xer_type_decoder_f M7period_decode_xer; +xer_type_encoder_f M7period_encode_xer; +per_type_decoder_f M7period_decode_uper; +per_type_encoder_f M7period_encode_uper; +per_type_decoder_f M7period_decode_aper; +per_type_encoder_f M7period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M7period_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c new file mode 100644 index 0000000..0601f60 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBMS-Service-Area-Identity-List.h" + +asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MBMS_Service_Area_Identity_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MBMS_Service_Area_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBMS_Service_Area_Identity_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MBMS_Service_Area_Identity_List_specs_1 = { + sizeof(struct MBMS_Service_Area_Identity_List), + offsetof(struct MBMS_Service_Area_Identity_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity_List = { + "MBMS-Service-Area-Identity-List", + "MBMS-Service-Area-Identity-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MBMS_Service_Area_Identity_List_tags_1, + sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1[0]), /* 1 */ + asn_DEF_MBMS_Service_Area_Identity_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBMS_Service_Area_Identity_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MBMS_Service_Area_Identity_List_1, + 1, /* Single element */ + &asn_SPC_MBMS_Service_Area_Identity_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h new file mode 100644 index 0000000..523f485 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBMS_Service_Area_Identity_List_H_ +#define _MBMS_Service_Area_Identity_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MBMS-Service-Area-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBMS-Service-Area-Identity-List */ +typedef struct MBMS_Service_Area_Identity_List { + A_SEQUENCE_OF(MBMS_Service_Area_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBMS_Service_Area_Identity_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity_List; +extern asn_SET_OF_specifics_t asn_SPC_MBMS_Service_Area_Identity_List_specs_1; +extern asn_TYPE_member_t asn_MBR_MBMS_Service_Area_Identity_List_1[1]; +extern asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBMS_Service_Area_Identity_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c new file mode 100644 index 0000000..ee40d82 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBMS-Service-Area-Identity.h" + +int +MBMS_Service_Area_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MBMS_Service_Area_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity = { + "MBMS-Service-Area-Identity", + "MBMS-Service-Area-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_MBMS_Service_Area_Identity_tags_1, + sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1[0]), /* 1 */ + asn_DEF_MBMS_Service_Area_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBMS_Service_Area_Identity_constr_1, MBMS_Service_Area_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h new file mode 100644 index 0000000..59ee2b4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBMS_Service_Area_Identity_H_ +#define _MBMS_Service_Area_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBMS-Service-Area-Identity */ +typedef OCTET_STRING_t MBMS_Service_Area_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity; +asn_struct_free_f MBMS_Service_Area_Identity_free; +asn_struct_print_f MBMS_Service_Area_Identity_print; +asn_constr_check_f MBMS_Service_Area_Identity_constraint; +ber_type_decoder_f MBMS_Service_Area_Identity_decode_ber; +der_type_encoder_f MBMS_Service_Area_Identity_encode_der; +xer_type_decoder_f MBMS_Service_Area_Identity_decode_xer; +xer_type_encoder_f MBMS_Service_Area_Identity_encode_xer; +per_type_decoder_f MBMS_Service_Area_Identity_decode_uper; +per_type_encoder_f MBMS_Service_Area_Identity_encode_uper; +per_type_decoder_f MBMS_Service_Area_Identity_decode_aper; +per_type_encoder_f MBMS_Service_Area_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBMS_Service_Area_Identity_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c new file mode 100644 index 0000000..7f7b119 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBSFN-Subframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, radioframeAllocationPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioframeAllocationPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioframeAllocationPeriod" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, radioframeAllocationOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioframeAllocationOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioframeAllocationOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, subframeAllocation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubframeAllocation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeAllocation" + }, + { ATF_POINTER, 1, offsetof(struct MBSFN_Subframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P168, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MBSFN_Subframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MBSFN_Subframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioframeAllocationPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* radioframeAllocationOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subframeAllocation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_specs_1 = { + sizeof(struct MBSFN_Subframe_Info), + offsetof(struct MBSFN_Subframe_Info, _asn_ctx), + asn_MAP_MBSFN_Subframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MBSFN_Subframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info = { + "MBSFN-Subframe-Info", + "MBSFN-Subframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_MBSFN_Subframe_Info_tags_1, + sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MBSFN_Subframe_Info_1, + 4, /* Elements count */ + &asn_SPC_MBSFN_Subframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h new file mode 100644 index 0000000..2905294 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBSFN_Subframe_Info_H_ +#define _MBSFN_Subframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RadioframeAllocationPeriod.h" +#include "RadioframeAllocationOffset.h" +#include "SubframeAllocation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MBSFN-Subframe-Info */ +typedef struct MBSFN_Subframe_Info { + RadioframeAllocationPeriod_t radioframeAllocationPeriod; + RadioframeAllocationOffset_t radioframeAllocationOffset; + SubframeAllocation_t subframeAllocation; + 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; +} MBSFN_Subframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBSFN_Subframe_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c new file mode 100644 index 0000000..67d76a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBSFN-Subframe-Infolist.h" + +#include "MBSFN-Subframe-Info.h" +asn_per_constraints_t asn_PER_type_MBSFN_Subframe_Infolist_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Infolist_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Infolist_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MBSFN_Subframe_Infolist_specs_1 = { + sizeof(struct MBSFN_Subframe_Infolist), + offsetof(struct MBSFN_Subframe_Infolist, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Infolist = { + "MBSFN-Subframe-Infolist", + "MBSFN-Subframe-Infolist", + &asn_OP_SEQUENCE_OF, + asn_DEF_MBSFN_Subframe_Infolist_tags_1, + sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Infolist_tags_1, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBSFN_Subframe_Infolist_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MBSFN_Subframe_Infolist_1, + 1, /* Single element */ + &asn_SPC_MBSFN_Subframe_Infolist_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h new file mode 100644 index 0000000..3b3850c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBSFN_Subframe_Infolist_H_ +#define _MBSFN_Subframe_Infolist_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MBSFN_Subframe_Info; + +/* MBSFN-Subframe-Infolist */ +typedef struct MBSFN_Subframe_Infolist { + A_SEQUENCE_OF(struct MBSFN_Subframe_Info) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBSFN_Subframe_Infolist_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Infolist; +extern asn_SET_OF_specifics_t asn_SPC_MBSFN_Subframe_Infolist_specs_1; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Infolist_1[1]; +extern asn_per_constraints_t asn_PER_type_MBSFN_Subframe_Infolist_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBSFN_Subframe_Infolist_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Activation.c b/E2Manager/asn1codec/e2ap_engine/MDT-Activation.c new file mode 100644 index 0000000..f003355 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Activation.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Activation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MDT_Activation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MDT_Activation_value2enum_1[] = { + { 0, 18, "immediate-MDT-only" }, + { 1, 23, "immediate-MDT-and-Trace" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MDT_Activation_enum2value_1[] = { + 1, /* immediate-MDT-and-Trace(1) */ + 0 /* immediate-MDT-only(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MDT_Activation_specs_1 = { + asn_MAP_MDT_Activation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MDT_Activation_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_MDT_Activation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Activation = { + "MDT-Activation", + "MDT-Activation", + &asn_OP_NativeEnumerated, + asn_DEF_MDT_Activation_tags_1, + sizeof(asn_DEF_MDT_Activation_tags_1) + /sizeof(asn_DEF_MDT_Activation_tags_1[0]), /* 1 */ + asn_DEF_MDT_Activation_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Activation_tags_1) + /sizeof(asn_DEF_MDT_Activation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDT_Activation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MDT_Activation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Activation.h b/E2Manager/asn1codec/e2ap_engine/MDT-Activation.h new file mode 100644 index 0000000..22e14c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Activation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Activation_H_ +#define _MDT_Activation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MDT_Activation { + MDT_Activation_immediate_MDT_only = 0, + MDT_Activation_immediate_MDT_and_Trace = 1 + /* + * Enumeration is extensible + */ +} e_MDT_Activation; + +/* MDT-Activation */ +typedef long MDT_Activation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MDT_Activation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Activation; +extern const asn_INTEGER_specifics_t asn_SPC_MDT_Activation_specs_1; +asn_struct_free_f MDT_Activation_free; +asn_struct_print_f MDT_Activation_print; +asn_constr_check_f MDT_Activation_constraint; +ber_type_decoder_f MDT_Activation_decode_ber; +der_type_encoder_f MDT_Activation_encode_der; +xer_type_decoder_f MDT_Activation_decode_xer; +xer_type_encoder_f MDT_Activation_encode_xer; +per_type_decoder_f MDT_Activation_decode_uper; +per_type_encoder_f MDT_Activation_encode_uper; +per_type_decoder_f MDT_Activation_decode_aper; +per_type_encoder_f MDT_Activation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Activation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.c b/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.c new file mode 100644 index 0000000..3cee5dd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.c @@ -0,0 +1,134 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Configuration.h" + +#include "M1ThresholdEventA2.h" +#include "M1PeriodicReporting.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_MDT_Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, mdt_Activation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MDT_Activation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mdt-Activation" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, areaScopeOfMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_AreaScopeOfMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "areaScopeOfMDT" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, measurementsToActivate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, m1reportingTrigger), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1ReportingTrigger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1reportingTrigger" + }, + { ATF_POINTER, 3, offsetof(struct MDT_Configuration, m1thresholdeventA2), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1ThresholdEventA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1thresholdeventA2" + }, + { ATF_POINTER, 2, offsetof(struct MDT_Configuration, m1periodicReporting), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1PeriodicReporting, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1periodicReporting" + }, + { ATF_POINTER, 1, offsetof(struct MDT_Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P166, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MDT_Configuration_oms_1[] = { 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_MDT_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_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 }, /* measurementsToActivate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m1reportingTrigger */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* m1thresholdeventA2 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m1periodicReporting */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_specs_1 = { + sizeof(struct MDT_Configuration), + offsetof(struct MDT_Configuration, _asn_ctx), + asn_MAP_MDT_Configuration_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_MDT_Configuration_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Configuration = { + "MDT-Configuration", + "MDT-Configuration", + &asn_OP_SEQUENCE, + asn_DEF_MDT_Configuration_tags_1, + sizeof(asn_DEF_MDT_Configuration_tags_1) + /sizeof(asn_DEF_MDT_Configuration_tags_1[0]), /* 1 */ + asn_DEF_MDT_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Configuration_tags_1) + /sizeof(asn_DEF_MDT_Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MDT_Configuration_1, + 7, /* Elements count */ + &asn_SPC_MDT_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.h b/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.h new file mode 100644 index 0000000..df684d6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Configuration.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Configuration_H_ +#define _MDT_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MDT-Activation.h" +#include "AreaScopeOfMDT.h" +#include "MeasurementsToActivate.h" +#include "M1ReportingTrigger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct M1ThresholdEventA2; +struct M1PeriodicReporting; +struct ProtocolExtensionContainer; + +/* MDT-Configuration */ +typedef struct MDT_Configuration { + MDT_Activation_t mdt_Activation; + AreaScopeOfMDT_t areaScopeOfMDT; + MeasurementsToActivate_t measurementsToActivate; + M1ReportingTrigger_t m1reportingTrigger; + struct M1ThresholdEventA2 *m1thresholdeventA2; /* OPTIONAL */ + struct M1PeriodicReporting *m1periodicReporting; /* 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; +} MDT_Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MDT_Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_MDT_Configuration_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.c b/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.c new file mode 100644 index 0000000..56cf66c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Location-Info.h" + +int +MDT_Location_Info_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MDT_Location_Info_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MDT_Location_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Location_Info = { + "MDT-Location-Info", + "MDT-Location-Info", + &asn_OP_BIT_STRING, + asn_DEF_MDT_Location_Info_tags_1, + sizeof(asn_DEF_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_MDT_Location_Info_tags_1[0]), /* 1 */ + asn_DEF_MDT_Location_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_MDT_Location_Info_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDT_Location_Info_constr_1, MDT_Location_Info_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.h b/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.h new file mode 100644 index 0000000..5c89612 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDT-Location-Info.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Location_Info_H_ +#define _MDT_Location_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MDT-Location-Info */ +typedef BIT_STRING_t MDT_Location_Info_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MDT_Location_Info_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Location_Info; +asn_struct_free_f MDT_Location_Info_free; +asn_struct_print_f MDT_Location_Info_print; +asn_constr_check_f MDT_Location_Info_constraint; +ber_type_decoder_f MDT_Location_Info_decode_ber; +der_type_encoder_f MDT_Location_Info_encode_der; +xer_type_decoder_f MDT_Location_Info_decode_xer; +xer_type_encoder_f MDT_Location_Info_encode_xer; +per_type_decoder_f MDT_Location_Info_decode_uper; +per_type_encoder_f MDT_Location_Info_encode_uper; +per_type_decoder_f MDT_Location_Info_decode_aper; +per_type_encoder_f MDT_Location_Info_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Location_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.c b/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.c new file mode 100644 index 0000000..57d5165 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDTPLMNList.h" + +asn_per_constraints_t asn_PER_type_MDTPLMNList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MDTPLMNList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MDTPLMNList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MDTPLMNList_specs_1 = { + sizeof(struct MDTPLMNList), + offsetof(struct MDTPLMNList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MDTPLMNList = { + "MDTPLMNList", + "MDTPLMNList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MDTPLMNList_tags_1, + sizeof(asn_DEF_MDTPLMNList_tags_1) + /sizeof(asn_DEF_MDTPLMNList_tags_1[0]), /* 1 */ + asn_DEF_MDTPLMNList_tags_1, /* Same as above */ + sizeof(asn_DEF_MDTPLMNList_tags_1) + /sizeof(asn_DEF_MDTPLMNList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDTPLMNList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MDTPLMNList_1, + 1, /* Single element */ + &asn_SPC_MDTPLMNList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.h b/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.h new file mode 100644 index 0000000..17bb3a9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MDTPLMNList.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDTPLMNList_H_ +#define _MDTPLMNList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MDTPLMNList */ +typedef struct MDTPLMNList { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MDTPLMNList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MDTPLMNList; +extern asn_SET_OF_specifics_t asn_SPC_MDTPLMNList_specs_1; +extern asn_TYPE_member_t asn_MBR_MDTPLMNList_1[1]; +extern asn_per_constraints_t asn_PER_type_MDTPLMNList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDTPLMNList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MME-Code.c b/E2Manager/asn1codec/e2ap_engine/MME-Code.c new file mode 100644 index 0000000..7147bf3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MME-Code.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MME-Code.h" + +int +MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Code = { + "MME-Code", + "MME-Code", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Code_tags_1, + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + asn_DEF_MME_Code_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MME_Code_constr_1, MME_Code_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MME-Code.h b/E2Manager/asn1codec/e2ap_engine/MME-Code.h new file mode 100644 index 0000000..16f6793 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MME-Code.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MME_Code_H_ +#define _MME_Code_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Code */ +typedef OCTET_STRING_t MME_Code_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Code_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Code; +asn_struct_free_f MME_Code_free; +asn_struct_print_f MME_Code_print; +asn_constr_check_f MME_Code_constraint; +ber_type_decoder_f MME_Code_decode_ber; +der_type_encoder_f MME_Code_encode_der; +xer_type_decoder_f MME_Code_decode_xer; +xer_type_encoder_f MME_Code_encode_xer; +per_type_decoder_f MME_Code_decode_uper; +per_type_encoder_f MME_Code_encode_uper; +per_type_decoder_f MME_Code_decode_aper; +per_type_encoder_f MME_Code_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Code_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.c b/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.c new file mode 100644 index 0000000..3e29a0f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MME-Group-ID.h" + +int +MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = { + "MME-Group-ID", + "MME-Group-ID", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Group_ID_tags_1, + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_MME_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MME_Group_ID_constr_1, MME_Group_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.h b/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.h new file mode 100644 index 0000000..85239c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MME-Group-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MME_Group_ID_H_ +#define _MME_Group_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Group-ID */ +typedef OCTET_STRING_t MME_Group_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Group_ID; +asn_struct_free_f MME_Group_ID_free; +asn_struct_print_f MME_Group_ID_print; +asn_constr_check_f MME_Group_ID_constraint; +ber_type_decoder_f MME_Group_ID_decode_ber; +der_type_encoder_f MME_Group_ID_encode_der; +xer_type_decoder_f MME_Group_ID_decode_xer; +xer_type_encoder_f MME_Group_ID_encode_xer; +per_type_decoder_f MME_Group_ID_decode_uper; +per_type_encoder_f MME_Group_ID_encode_uper; +per_type_decoder_f MME_Group_ID_decode_aper; +per_type_encoder_f MME_Group_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Group_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c b/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c new file mode 100644 index 0000000..195e253 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MakeBeforeBreakIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MakeBeforeBreakIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MakeBeforeBreakIndicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MakeBeforeBreakIndicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MakeBeforeBreakIndicator_specs_1 = { + asn_MAP_MakeBeforeBreakIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MakeBeforeBreakIndicator_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_MakeBeforeBreakIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MakeBeforeBreakIndicator = { + "MakeBeforeBreakIndicator", + "MakeBeforeBreakIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_MakeBeforeBreakIndicator_tags_1, + sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1) + /sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1[0]), /* 1 */ + asn_DEF_MakeBeforeBreakIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1) + /sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MakeBeforeBreakIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MakeBeforeBreakIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h b/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h new file mode 100644 index 0000000..daccdba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MakeBeforeBreakIndicator_H_ +#define _MakeBeforeBreakIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MakeBeforeBreakIndicator { + MakeBeforeBreakIndicator_true = 0 + /* + * Enumeration is extensible + */ +} e_MakeBeforeBreakIndicator; + +/* MakeBeforeBreakIndicator */ +typedef long MakeBeforeBreakIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MakeBeforeBreakIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MakeBeforeBreakIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_MakeBeforeBreakIndicator_specs_1; +asn_struct_free_f MakeBeforeBreakIndicator_free; +asn_struct_print_f MakeBeforeBreakIndicator_print; +asn_constr_check_f MakeBeforeBreakIndicator_constraint; +ber_type_decoder_f MakeBeforeBreakIndicator_decode_ber; +der_type_encoder_f MakeBeforeBreakIndicator_encode_der; +xer_type_decoder_f MakeBeforeBreakIndicator_decode_xer; +xer_type_encoder_f MakeBeforeBreakIndicator_encode_xer; +per_type_decoder_f MakeBeforeBreakIndicator_decode_uper; +per_type_encoder_f MakeBeforeBreakIndicator_encode_uper; +per_type_decoder_f MakeBeforeBreakIndicator_decode_aper; +per_type_encoder_f MakeBeforeBreakIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MakeBeforeBreakIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Makefile.am.asn1convert b/E2Manager/asn1codec/e2ap_engine/Makefile.am.asn1convert new file mode 100644 index 0000000..72e1839 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Makefile.am.asn1convert @@ -0,0 +1,14 @@ +include ./Makefile.am.libasncodec + +bin_PROGRAMS += asn1convert +asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION +asn1convert_CPPFLAGS = -I$(top_srcdir)/./ +asn1convert_LDADD = libasncodec.la +asn1convert_SOURCES = \ + ./converter-example.c\ + ./pdu_collection.c +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../../asnFiles/e2ap-v031.asn ../../asnFiles/X2AP-PDU-Contents.asn ../../asnFiles/X2AP-Constants.asn ../../asnFiles/X2AP-Containers.asn ../../asnFiles/X2AP-IEs.asn ../../asnFiles/X2AP-CommonDataTypes.asn ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn + diff --git a/E2Manager/asn1codec/e2ap_engine/Makefile.am.libasncodec b/E2Manager/asn1codec/e2ap_engine/Makefile.am.libasncodec new file mode 100644 index 0000000..db908ec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Makefile.am.libasncodec @@ -0,0 +1,1575 @@ +ASN_MODULE_SRCS= \ + ./E2AP-PDU.c \ + ./InitiatingMessage.c \ + ./SuccessfulOutcome.c \ + ./UnsuccessfulOutcome.c \ + ./RICsubscriptionRequest.c \ + ./RICsubscription.c \ + ./RICactions-ToBeSetup-List.c \ + ./RICaction-ToBeSetup-Item.c \ + ./RICsubscriptionResponse.c \ + ./RICaction-Admitted-List.c \ + ./RICaction-Admitted-Item.c \ + ./RICaction-NotAdmitted-List.c \ + ./RICaction-NotAdmitted-Item.c \ + ./RICsubscriptionFailure.c \ + ./RICsubscriptionDeleteRequest.c \ + ./RICsubscriptionDeleteResponse.c \ + ./RICsubscriptionDeleteFailure.c \ + ./RICindication.c \ + ./RICcontrolRequest.c \ + ./RICcontrolAcknowledge.c \ + ./RICcontrolFailure.c \ + ./RICserviceUpdate.c \ + ./RANfunctions-List.c \ + ./RANfunction-Item.c \ + ./RANfunctionsID-List.c \ + ./RANfunctionID-Item.c \ + ./RICserviceUpdateAcknowledge.c \ + ./RANfunctionsIDcause-List.c \ + ./RANfunctionIDcause-Item.c \ + ./RICserviceUpdateFailure.c \ + ./RICserviceQuery.c \ + ./CauseRIC.c \ + ./RANfunctionDefinition.c \ + ./RANfunctionID.c \ + ./RICactionDefinition.c \ + ./RICactionID.c \ + ./RICactionType.c \ + ./RICcallProcessID.c \ + ./RICcause.c \ + ./RICcontrolAckRequest.c \ + ./RICcontrolHeader.c \ + ./RICcontrolMessage.c \ + ./RICcontrolStatus.c \ + ./RICeventTriggerDefinition.c \ + ./RICindicationHeader.c \ + ./RICindicationMessage.c \ + ./RICindicationSN.c \ + ./RICindicationType.c \ + ./RICrequestID.c \ + ./RICsubsequentAction.c \ + ./RICsubsequentActionType.c \ + ./RICtimeToWait.c \ + ./HandoverRequest.c \ + ./UE-ContextInformation.c \ + ./E-RABs-ToBeSetup-List.c \ + ./E-RABs-ToBeSetup-Item.c \ + ./MobilityInformation.c \ + ./UE-ContextReferenceAtSeNB.c \ + ./UE-ContextReferenceAtWT.c \ + ./UE-ContextReferenceAtSgNB.c \ + ./HandoverRequestAcknowledge.c \ + ./E-RABs-Admitted-List.c \ + ./E-RABs-Admitted-Item.c \ + ./HandoverPreparationFailure.c \ + ./HandoverReport.c \ + ./SNStatusTransfer.c \ + ./E-RABs-SubjectToStatusTransfer-List.c \ + ./E-RABs-SubjectToStatusTransfer-Item.c \ + ./UEContextRelease.c \ + ./HandoverCancel.c \ + ./ErrorIndication.c \ + ./ResetRequest.c \ + ./ResetResponse.c \ + ./X2SetupRequest.c \ + ./X2SetupResponse.c \ + ./X2SetupFailure.c \ + ./LoadInformation.c \ + ./CellInformation-List.c \ + ./CellInformation-Item.c \ + ./ENBConfigurationUpdate.c \ + ./ServedCellsToModify.c \ + ./ServedCellsToModify-Item.c \ + ./Old-ECGIs.c \ + ./ENBConfigurationUpdateAcknowledge.c \ + ./ENBConfigurationUpdateFailure.c \ + ./ResourceStatusRequest.c \ + ./CellToReport-List.c \ + ./CellToReport-Item.c \ + ./ReportingPeriodicity.c \ + ./PartialSuccessIndicator.c \ + ./ResourceStatusResponse.c \ + ./MeasurementInitiationResult-List.c \ + ./MeasurementInitiationResult-Item.c \ + ./MeasurementFailureCause-List.c \ + ./MeasurementFailureCause-Item.c \ + ./ResourceStatusFailure.c \ + ./CompleteFailureCauseInformation-List.c \ + ./CompleteFailureCauseInformation-Item.c \ + ./ResourceStatusUpdate.c \ + ./CellMeasurementResult-List.c \ + ./CellMeasurementResult-Item.c \ + ./PrivateMessage.c \ + ./MobilityChangeRequest.c \ + ./MobilityChangeAcknowledge.c \ + ./MobilityChangeFailure.c \ + ./RLFIndication.c \ + ./CellActivationRequest.c \ + ./ServedCellsToActivate.c \ + ./ServedCellsToActivate-Item.c \ + ./CellActivationResponse.c \ + ./ActivatedCellList.c \ + ./ActivatedCellList-Item.c \ + ./CellActivationFailure.c \ + ./X2Release.c \ + ./X2APMessageTransfer.c \ + ./RNL-Header.c \ + ./X2AP-Message.c \ + ./SeNBAdditionRequest.c \ + ./E-RABs-ToBeAdded-List.c \ + ./E-RABs-ToBeAdded-Item.c \ + ./E-RABs-ToBeAdded-Item-SCG-Bearer.c \ + ./E-RABs-ToBeAdded-Item-Split-Bearer.c \ + ./SeNBAdditionRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-List.c \ + ./E-RABs-Admitted-ToBeAdded-Item.c \ + ./E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c \ + ./SeNBAdditionRequestReject.c \ + ./SeNBReconfigurationComplete.c \ + ./ResponseInformationSeNBReconfComp.c \ + ./ResponseInformationSeNBReconfComp-SuccessItem.c \ + ./ResponseInformationSeNBReconfComp-RejectByMeNBItem.c \ + ./SeNBModificationRequest.c \ + ./UE-ContextInformationSeNBModReq.c \ + ./E-RABs-ToBeAdded-List-ModReq.c \ + ./E-RABs-ToBeAdded-ModReqItem.c \ + ./E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c \ + ./E-RABs-ToBeModified-List-ModReq.c \ + ./E-RABs-ToBeModified-ModReqItem.c \ + ./E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeModified-ModReqItem-Split-Bearer.c \ + ./E-RABs-ToBeReleased-List-ModReq.c \ + ./E-RABs-ToBeReleased-ModReqItem.c \ + ./E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c \ + ./SeNBModificationRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckList.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c \ + ./E-RABs-Admitted-ToBeModified-ModAckList.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckList.c \ + ./E-RABs-Admitted-ToReleased-ModAckItem.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c \ + ./SeNBModificationRequestReject.c \ + ./SeNBModificationRequired.c \ + ./E-RABs-ToBeReleased-ModReqd.c \ + ./E-RABs-ToBeReleased-ModReqdItem.c \ + ./SeNBModificationConfirm.c \ + ./SeNBModificationRefuse.c \ + ./SeNBReleaseRequest.c \ + ./E-RABs-ToBeReleased-List-RelReq.c \ + ./E-RABs-ToBeReleased-RelReqItem.c \ + ./E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c \ + ./SeNBReleaseRequired.c \ + ./SeNBReleaseConfirm.c \ + ./E-RABs-ToBeReleased-List-RelConf.c \ + ./E-RABs-ToBeReleased-RelConfItem.c \ + ./E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c \ + ./SeNBCounterCheckRequest.c \ + ./E-RABs-SubjectToCounterCheck-List.c \ + ./E-RABs-SubjectToCounterCheckItem.c \ + ./X2RemovalRequest.c \ + ./X2RemovalResponse.c \ + ./X2RemovalFailure.c \ + ./RetrieveUEContextRequest.c \ + ./RetrieveUEContextResponse.c \ + ./UE-ContextInformationRetrieve.c \ + ./E-RABs-ToBeSetup-ListRetrieve.c \ + ./E-RABs-ToBeSetupRetrieve-Item.c \ + ./RetrieveUEContextFailure.c \ + ./SgNBAdditionRequest.c \ + ./E-RABs-ToBeAdded-SgNBAddReqList.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBAdditionRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c \ + ./SgNBAdditionRequestReject.c \ + ./SgNBReconfigurationComplete.c \ + ./ResponseInformationSgNBReconfComp.c \ + ./ResponseInformationSgNBReconfComp-SuccessItem.c \ + ./ResponseInformationSgNBReconfComp-RejectByMeNBItem.c \ + ./SgNBModificationRequest.c \ + ./UE-ContextInformation-SgNBModReq.c \ + ./E-RABs-ToBeAdded-SgNBModReq-List.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-ToBeModified-SgNBModReq-List.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-ToBeReleased-SgNBModReq-List.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAckList.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAckList.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAckList.c \ + ./E-RABs-Admitted-ToReleased-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRequestReject.c \ + ./SgNBModificationRequired.c \ + ./E-RABs-ToBeReleased-SgNBModReqdList.c \ + ./E-RABs-ToBeReleased-SgNBModReqd-Item.c \ + ./E-RABs-ToBeModified-SgNBModReqdList.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationConfirm.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConfList.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRefuse.c \ + ./SgNBReleaseRequest.c \ + ./E-RABs-ToBeReleased-SgNBRelReqList.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBReleaseRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c \ + ./SgNBReleaseRequestReject.c \ + ./SgNBReleaseRequired.c \ + ./E-RABs-ToBeReleased-SgNBRelReqdList.c \ + ./E-RABs-ToBeReleased-SgNBRelReqd-Item.c \ + ./SgNBReleaseConfirm.c \ + ./E-RABs-ToBeReleased-SgNBRelConfList.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c \ + ./SgNBCounterCheckRequest.c \ + ./E-RABs-SubjectToSgNBCounterCheck-List.c \ + ./E-RABs-SubjectToSgNBCounterCheck-Item.c \ + ./SgNBChangeRequired.c \ + ./SgNBChangeConfirm.c \ + ./E-RABs-ToBeReleased-SgNBChaConfList.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c \ + ./RRCTransfer.c \ + ./SgNBChangeRefuse.c \ + ./ENDCX2SetupRequest.c \ + ./InitiatingNodeType-EndcX2Setup.c \ + ./ServedEUTRAcellsENDCX2ManagementList.c \ + ./ServedNRcellsENDCX2ManagementList.c \ + ./ServedNRCell-Information.c \ + ./FDD-InfoServedNRCell-Information.c \ + ./FDD-InfoNeighbourServedNRCell-Information.c \ + ./TDD-InfoServedNRCell-Information.c \ + ./TDD-InfoNeighbourServedNRCell-Information.c \ + ./NRNeighbour-Information.c \ + ./CellAssistanceInformation.c \ + ./Limited-list.c \ + ./ENDCX2SetupResponse.c \ + ./RespondingNodeType-EndcX2Setup.c \ + ./ENDCX2SetupFailure.c \ + ./ENDCConfigurationUpdate.c \ + ./InitiatingNodeType-EndcConfigUpdate.c \ + ./ServedEUTRAcellsToModifyListENDCConfUpd.c \ + ./ServedEUTRAcellsToDeleteListENDCConfUpd.c \ + ./ServedNRcellsToModifyENDCConfUpdList.c \ + ./ServedNRCellsToModify-Item.c \ + ./ServedNRcellsToDeleteENDCConfUpdList.c \ + ./ENDCConfigurationUpdateAcknowledge.c \ + ./RespondingNodeType-EndcConfigUpdate.c \ + ./ENDCConfigurationUpdateFailure.c \ + ./ENDCCellActivationRequest.c \ + ./ServedNRCellsToActivate.c \ + ./ServedNRCellsToActivate-Item.c \ + ./ENDCCellActivationResponse.c \ + ./ActivatedNRCellList.c \ + ./ActivatedNRCellList-Item.c \ + ./ENDCCellActivationFailure.c \ + ./SecondaryRATDataUsageReport.c \ + ./SgNBActivityNotification.c \ + ./ENDCPartialResetRequired.c \ + ./ENDCPartialResetConfirm.c \ + ./EUTRANRCellResourceCoordinationRequest.c \ + ./InitiatingNodeType-EutranrCellResourceCoordination.c \ + ./ListofEUTRACellsinEUTRACoordinationReq.c \ + ./ListofEUTRACellsinNRCoordinationReq.c \ + ./ListofNRCellsinNRCoordinationReq.c \ + ./EUTRANRCellResourceCoordinationResponse.c \ + ./RespondingNodeType-EutranrCellResourceCoordination.c \ + ./ListofEUTRACellsinEUTRACoordinationResp.c \ + ./ListofNRCellsinNRCoordinationResp.c \ + ./ENDCX2RemovalRequest.c \ + ./InitiatingNodeType-EndcX2Removal.c \ + ./ENDCX2RemovalResponse.c \ + ./RespondingNodeType-EndcX2Removal.c \ + ./ENDCX2RemovalFailure.c \ + ./DataForwardingAddressIndication.c \ + ./E-RABs-DataForwardingAddress-List.c \ + ./E-RABs-DataForwardingAddress-Item.c \ + ./GNBStatusIndication.c \ + ./ProtocolIE-Container.c \ + ./ProtocolIE-Single-Container.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 \ + ./ABSInformation.c \ + ./ABSInformationFDD.c \ + ./ABSInformationTDD.c \ + ./ABS-Status.c \ + ./ActivationID.c \ + ./AdditionalSpecialSubframe-Info.c \ + ./AdditionalSpecialSubframePatterns.c \ + ./AdditionalSpecialSubframeExtension-Info.c \ + ./AdditionalSpecialSubframePatternsExtension.c \ + ./AerialUEsubscriptionInformation.c \ + ./AllocationAndRetentionPriority.c \ + ./AreaScopeOfMDT.c \ + ./AreaScopeOfQMC.c \ + ./AS-SecurityInformation.c \ + ./BandwidthReducedSI.c \ + ./BearerType.c \ + ./BenefitMetric.c \ + ./BitRate.c \ + ./BroadcastPLMNs-Item.c \ + ./BluetoothMeasurementConfiguration.c \ + ./BluetoothMeasConfigNameList.c \ + ./BluetoothMeasConfig.c \ + ./BluetoothName.c \ + ./CapacityValue.c \ + ./Cause.c \ + ./CauseMisc.c \ + ./CauseProtocol.c \ + ./CauseRadioNetwork.c \ + ./CauseTransport.c \ + ./CellBasedMDT.c \ + ./CellBasedQMC.c \ + ./CellCapacityClassValue.c \ + ./CellDeploymentStatusIndicator.c \ + ./CellIdListforMDT.c \ + ./CellIdListforQMC.c \ + ./CellReplacingInfo.c \ + ./CellReportingIndicator.c \ + ./Cell-Size.c \ + ./CellType.c \ + ./CNTypeRestrictions.c \ + ./CNTypeRestrictionsItem.c \ + ./CoMPHypothesisSet.c \ + ./CoMPHypothesisSetItem.c \ + ./CoMPInformation.c \ + ./CoMPInformationItem.c \ + ./CoMPInformationStartTime.c \ + ./CompositeAvailableCapacity.c \ + ./CompositeAvailableCapacityGroup.c \ + ./Correlation-ID.c \ + ./COUNTvalue.c \ + ./COUNTValueExtended.c \ + ./COUNTvaluePDCP-SNlength18.c \ + ./CoverageModificationList.c \ + ./CoverageModification-Item.c \ + ./CriticalityDiagnostics.c \ + ./CriticalityDiagnostics-IE-List.c \ + ./CRNTI.c \ + ./CSGMembershipStatus.c \ + ./CSG-Id.c \ + ./CSIReportList.c \ + ./CSIReportPerCSIProcess.c \ + ./CSIReportPerCSIProcessItem.c \ + ./CyclicPrefixDL.c \ + ./CyclicPrefixUL.c \ + ./DataTrafficResources.c \ + ./DataTrafficResourceIndication.c \ + ./DeactivationIndication.c \ + ./DeliveryStatus.c \ + ./DL-ABS-status.c \ + ./DL-Forwarding.c \ + ./DL-GBR-PRB-usage.c \ + ./DL-non-GBR-PRB-usage.c \ + ./DLResourceBitmapULandDLSharing.c \ + ./DLResourcesULandDLSharing.c \ + ./DL-scheduling-PDCCH-CCE-usage.c \ + ./DL-Total-PRB-usage.c \ + ./DRB-ID.c \ + ./DuplicationActivation.c \ + ./DynamicDLTransmissionInformation.c \ + ./DynamicNAICSInformation.c \ + ./EARFCN.c \ + ./EARFCNExtension.c \ + ./ECGI.c \ + ./EnhancedRNTP.c \ + ./EnhancedRNTPStartTime.c \ + ./ENB-ID.c \ + ./EncryptionAlgorithms.c \ + ./EN-DC-ResourceConfiguration.c \ + ./EPLMNs.c \ + ./ERABActivityNotifyItemList.c \ + ./ERABActivityNotifyItem.c \ + ./E-RAB-ID.c \ + ./E-RAB-Level-QoS-Parameters.c \ + ./E-RAB-List.c \ + ./E-RAB-Item.c \ + ./E-RABUsageReportList.c \ + ./E-RABUsageReport-Item.c \ + ./EUTRA-Mode-Info.c \ + ./EUTRANCellIdentifier.c \ + ./EUTRANTraceID.c \ + ./EventType.c \ + ./ExpectedUEBehaviour.c \ + ./ExpectedUEActivityBehaviour.c \ + ./ExpectedActivityPeriod.c \ + ./ExpectedIdlePeriod.c \ + ./ExpectedHOInterval.c \ + ./ExtendedULInterferenceOverloadInfo.c \ + ./ExtendedBitRate.c \ + ./FDD-Info.c \ + ./ForbiddenInterRATs.c \ + ./ForbiddenTAs.c \ + ./ForbiddenTAs-Item.c \ + ./ForbiddenTACs.c \ + ./ForbiddenLAs.c \ + ./ForbiddenLAs-Item.c \ + ./ForbiddenLACs.c \ + ./Fourframes.c \ + ./FreqBandIndicator.c \ + ./FreqBandIndicatorPriority.c \ + ./FreqBandNrItem.c \ + ./GBR-QosInformation.c \ + ./GlobalENB-ID.c \ + ./GlobalGNB-ID.c \ + ./GNBOverloadInformation.c \ + ./GTPtunnelEndpoint.c \ + ./GTP-TEI.c \ + ./GUGroupIDList.c \ + ./GU-Group-ID.c \ + ./GUMMEI.c \ + ./GNB-ID.c \ + ./HandoverReportType.c \ + ./HandoverRestrictionList.c \ + ./HFN.c \ + ./HFNModified.c \ + ./HFNforPDCP-SNlength18.c \ + ./HWLoadIndicator.c \ + ./IntegrityProtectionAlgorithms.c \ + ./InterfacesToTrace.c \ + ./InvokeIndication.c \ + ./Key-eNodeB-Star.c \ + ./LAC.c \ + ./LastVisitedCell-Item.c \ + ./LastVisitedEUTRANCellInformation.c \ + ./LastVisitedGERANCellInformation.c \ + ./LastVisitedNGRANCellInformation.c \ + ./LastVisitedUTRANCellInformation.c \ + ./LCID.c \ + ./LHN-ID.c \ + ./Links-to-log.c \ + ./LoadIndicator.c \ + ./LocationReportingInformation.c \ + ./M1PeriodicReporting.c \ + ./M1ReportingTrigger.c \ + ./M1ThresholdEventA2.c \ + ./M3Configuration.c \ + ./M3period.c \ + ./M4Configuration.c \ + ./M4period.c \ + ./M5Configuration.c \ + ./M5period.c \ + ./M6Configuration.c \ + ./M6report-interval.c \ + ./M6delay-threshold.c \ + ./M7Configuration.c \ + ./M7period.c \ + ./MakeBeforeBreakIndicator.c \ + ./ManagementBasedMDTallowed.c \ + ./Masked-IMEISV.c \ + ./MDT-Activation.c \ + ./MDT-Configuration.c \ + ./MDTPLMNList.c \ + ./MDT-Location-Info.c \ + ./Measurement-ID.c \ + ./MeasurementsToActivate.c \ + ./MeasurementThresholdA2.c \ + ./MeNBCoordinationAssistanceInformation.c \ + ./MeNBResourceCoordinationInformation.c \ + ./MeNBtoSeNBContainer.c \ + ./MME-Group-ID.c \ + ./MME-Code.c \ + ./MBMS-Service-Area-Identity-List.c \ + ./MBMS-Service-Area-Identity.c \ + ./MBSFN-Subframe-Infolist.c \ + ./MBSFN-Subframe-Info.c \ + ./MobilityParametersModificationRange.c \ + ./MobilityParametersInformation.c \ + ./MultibandInfoList.c \ + ./BandInfo.c \ + ./MeNBtoSgNBContainer.c \ + ./SplitSRBs.c \ + ./SplitSRB.c \ + ./UENRMeasurement.c \ + ./Neighbour-Information.c \ + ./NextHopChainingCount.c \ + ./NewDRBIDrequest.c \ + ./Number-of-Antennaports.c \ + ./NRFreqInfo.c \ + ./NRCellIdentifier.c \ + ./NRCGI.c \ + ./NRPCI.c \ + ./NRrestrictioninEPSasSecondaryRAT.c \ + ./NRrestrictionin5GS.c \ + ./NRencryptionAlgorithms.c \ + ./NRintegrityProtectionAlgorithms.c \ + ./NR-TxBW.c \ + ./NRNRB.c \ + ./NRSCS.c \ + ./NRS-NSSS-PowerOffset.c \ + ./FiveGS-TAC.c \ + ./NRUESecurityCapabilities.c \ + ./NSSS-NumOccasionDifferentPrecoder.c \ + ./OffsetOfNbiotChannelNumberToEARFCN.c \ + ./Oneframe.c \ + ./Packet-LossRate.c \ + ./PA-Values.c \ + ./PDCPChangeIndication.c \ + ./PDCP-SN.c \ + ./PDCP-SNExtended.c \ + ./PDCP-SNlength18.c \ + ./PDCPSnLength.c \ + ./PCI.c \ + ./PLMN-Identity.c \ + ./Port-Number.c \ + ./PRACH-Configuration.c \ + ./PLMNAreaBasedQMC.c \ + ./PLMNListforQMC.c \ + ./Pre-emptionCapability.c \ + ./Pre-emptionVulnerability.c \ + ./PriorityLevel.c \ + ./ProSeAuthorized.c \ + ./ProSeDirectDiscovery.c \ + ./ProSeDirectCommunication.c \ + ./ProSeUEtoNetworkRelaying.c \ + ./ProtectedEUTRAResourceIndication.c \ + ./ProtectedFootprintTimePattern.c \ + ./ProtectedResourceList.c \ + ./ProtectedResourceList-Item.c \ + ./QCI.c \ + ./RadioframeAllocationOffset.c \ + ./RadioframeAllocationPeriod.c \ + ./RadioResourceStatus.c \ + ./ReceiveStatusofULPDCPSDUs.c \ + ./ReceiveStatusOfULPDCPSDUsExtended.c \ + ./ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c \ + ./Reestablishment-Indication.c \ + ./Registration-Request.c \ + ./RelativeNarrowbandTxPower.c \ + ./ReplacingCellsList.c \ + ./ReplacingCellsList-Item.c \ + ./ReportAmountMDT.c \ + ./ReportArea.c \ + ./ReportCharacteristics.c \ + ./ReportingPeriodicityCSIR.c \ + ./ReportingPeriodicityRSRPMR.c \ + ./ReportIntervalMDT.c \ + ./ReservedSubframePattern.c \ + ./ResourceType.c \ + ./ResumeID.c \ + ./RLCMode.c \ + ./RLC-Status.c \ + ./RNTP-Threshold.c \ + ./RRC-Config-Ind.c \ + ./RRC-Context.c \ + ./RRCConnReestabIndicator.c \ + ./RRCConnSetupIndicator.c \ + ./RSRPMeasurementResult.c \ + ./RSRPMRList.c \ + ./RRCContainer.c \ + ./S1TNLLoadIndicator.c \ + ./SCGChangeIndication.c \ + ./SecondaryRATUsageReportList.c \ + ./SecondaryRATUsageReport-Item.c \ + ./SeNBSecurityKey.c \ + ./SeNBtoMeNBContainer.c \ + ./ServedCells.c \ + ./ServedCell-Information.c \ + ./ServiceType.c \ + ./SgNBCoordinationAssistanceInformation.c \ + ./SgNBResourceCoordinationInformation.c \ + ./SgNB-UE-X2AP-ID.c \ + ./SIPTOBearerDeactivationIndication.c \ + ./SharedResourceType.c \ + ./ShortMAC-I.c \ + ./SGNB-Addition-Trigger-Ind.c \ + ./SourceOfUEActivityBehaviourInformation.c \ + ./SpecialSubframe-Info.c \ + ./SpecialSubframePatterns.c \ + ./SpectrumSharingGroupID.c \ + ./SubbandCQI.c \ + ./Subscription-Based-UE-DifferentiationInfo.c \ + ./ScheduledCommunicationTime.c \ + ./SRVCCOperationPossible.c \ + ./SubbandCQICodeword0.c \ + ./SubbandCQICodeword1.c \ + ./SubbandCQIList.c \ + ./SubbandCQIItem.c \ + ./SubbandSize.c \ + ./SubscriberProfileIDforRFP.c \ + ./SubframeAllocation.c \ + ./SubframeAssignment.c \ + ./SubframeType.c \ + ./SgNBSecurityKey.c \ + ./SgNBtoMeNBContainer.c \ + ./SRBType.c \ + ./SCGConfigurationQuery.c \ + ./SULInformation.c \ + ./SupportedSULFreqBandItem.c \ + ./TABasedMDT.c \ + ./TAC.c \ + ./TAIBasedMDT.c \ + ./TAIListforMDT.c \ + ./TAI-Item.c \ + ./TAListforMDT.c \ + ./TABasedQMC.c \ + ./TAListforQMC.c \ + ./TAIBasedQMC.c \ + ./TAIListforQMC.c \ + ./TargetCellInUTRAN.c \ + ./TargeteNBtoSource-eNBTransparentContainer.c \ + ./TDD-Info.c \ + ./Threshold-RSRP.c \ + ./Threshold-RSRQ.c \ + ./TimeToWait.c \ + ./Time-UE-StayedInCell.c \ + ./Time-UE-StayedInCell-EnhancedGranularity.c \ + ./TraceActivation.c \ + ./TraceCollectionEntityIPAddress.c \ + ./TraceDepth.c \ + ./Transmission-Bandwidth.c \ + ./TransportLayerAddress.c \ + ./TunnelInformation.c \ + ./TypeOfError.c \ + ./UEAggregateMaximumBitRate.c \ + ./UEAppLayerMeasConfig.c \ + ./UE-ContextKeptIndicator.c \ + ./UEID.c \ + ./UE-HistoryInformation.c \ + ./UE-HistoryInformationFromTheUE.c \ + ./UE-S1AP-ID.c \ + ./UE-X2AP-ID.c \ + ./UE-X2AP-ID-Extension.c \ + ./UE-RLF-Report-Container.c \ + ./UE-RLF-Report-Container-for-extended-bands.c \ + ./UESecurityCapabilities.c \ + ./UESidelinkAggregateMaximumBitRate.c \ + ./UEsToBeResetList.c \ + ./UEsToBeResetList-Item.c \ + ./ULandDLSharing.c \ + ./ULConfiguration.c \ + ./UL-UE-Configuration.c \ + ./UL-GBR-PRB-usage.c \ + ./UL-HighInterferenceIndicationInfo.c \ + ./UL-HighInterferenceIndicationInfo-Item.c \ + ./UL-HighInterferenceIndication.c \ + ./UL-InterferenceOverloadIndication.c \ + ./UL-InterferenceOverloadIndication-Item.c \ + ./UL-non-GBR-PRB-usage.c \ + ./ULOnlySharing.c \ + ./ULResourceBitmapULandDLSharing.c \ + ./ULResourcesULandDLSharing.c \ + ./UL-scheduling-PDCCH-CCE-usage.c \ + ./UL-Total-PRB-usage.c \ + ./UsableABSInformation.c \ + ./UsableABSInformationFDD.c \ + ./UsableABSInformationTDD.c \ + ./UserPlaneTrafficActivityReport.c \ + ./V2XServicesAuthorized.c \ + ./VehicleUE.c \ + ./PedestrianUE.c \ + ./WidebandCQI.c \ + ./WidebandCQICodeword1.c \ + ./WLANMeasurementConfiguration.c \ + ./WLANMeasConfigNameList.c \ + ./WLANMeasConfig.c \ + ./WLANName.c \ + ./WTID.c \ + ./WTID-Type1.c \ + ./WTID-Long-Type2.c \ + ./WT-UE-XwAP-ID.c \ + ./X2BenefitValue.c \ + ./Criticality.c \ + ./Presence.c \ + ./PrivateIE-ID.c \ + ./ProcedureCode.c \ + ./ProtocolIE-ID.c \ + ./TriggeringMessage.c \ + ./E2SM-gNB-X2-eventTriggerDefinition.c \ + ./E2SM-gNB-X2-actionDefinition.c \ + ./E2SM-gNB-X2-indicationHeader.c \ + ./E2SM-gNB-X2-indicationMessage.c \ + ./E2SM-gNB-X2-callProcessID.c \ + ./E2SM-gNB-X2-controlHeader.c \ + ./E2SM-gNB-X2-controlMessage.c \ + ./ActionParameter-Item.c \ + ./ActionParameter-ID.c \ + ./ActionParameter-Value.c \ + ./CallProcess-ID.c \ + ./Interface-ID.c \ + ./InterfaceDirection.c \ + ./InterfaceMessage.c \ + ./InterfaceMessageType.c \ + ./TypeOfMessage.c \ + ./InterfaceProtocolIE-Item.c \ + ./InterfaceProtocolIE-ID.c \ + ./InterfaceProtocolIE-Test.c \ + ./InterfaceProtocolIE-Value.c \ + ./Style-ID.c \ + ./TimeStamp.c + +ASN_MODULE_HDRS= \ + ./E2AP-PDU.h \ + ./InitiatingMessage.h \ + ./SuccessfulOutcome.h \ + ./UnsuccessfulOutcome.h \ + ./RICsubscriptionRequest.h \ + ./RICsubscription.h \ + ./RICactions-ToBeSetup-List.h \ + ./RICaction-ToBeSetup-Item.h \ + ./RICsubscriptionResponse.h \ + ./RICaction-Admitted-List.h \ + ./RICaction-Admitted-Item.h \ + ./RICaction-NotAdmitted-List.h \ + ./RICaction-NotAdmitted-Item.h \ + ./RICsubscriptionFailure.h \ + ./RICsubscriptionDeleteRequest.h \ + ./RICsubscriptionDeleteResponse.h \ + ./RICsubscriptionDeleteFailure.h \ + ./RICindication.h \ + ./RICcontrolRequest.h \ + ./RICcontrolAcknowledge.h \ + ./RICcontrolFailure.h \ + ./RICserviceUpdate.h \ + ./RANfunctions-List.h \ + ./RANfunction-Item.h \ + ./RANfunctionsID-List.h \ + ./RANfunctionID-Item.h \ + ./RICserviceUpdateAcknowledge.h \ + ./RANfunctionsIDcause-List.h \ + ./RANfunctionIDcause-Item.h \ + ./RICserviceUpdateFailure.h \ + ./RICserviceQuery.h \ + ./CauseRIC.h \ + ./RANfunctionDefinition.h \ + ./RANfunctionID.h \ + ./RICactionDefinition.h \ + ./RICactionID.h \ + ./RICactionType.h \ + ./RICcallProcessID.h \ + ./RICcause.h \ + ./RICcontrolAckRequest.h \ + ./RICcontrolHeader.h \ + ./RICcontrolMessage.h \ + ./RICcontrolStatus.h \ + ./RICeventTriggerDefinition.h \ + ./RICindicationHeader.h \ + ./RICindicationMessage.h \ + ./RICindicationSN.h \ + ./RICindicationType.h \ + ./RICrequestID.h \ + ./RICsubsequentAction.h \ + ./RICsubsequentActionType.h \ + ./RICtimeToWait.h \ + ./HandoverRequest.h \ + ./UE-ContextInformation.h \ + ./E-RABs-ToBeSetup-List.h \ + ./E-RABs-ToBeSetup-Item.h \ + ./MobilityInformation.h \ + ./UE-ContextReferenceAtSeNB.h \ + ./UE-ContextReferenceAtWT.h \ + ./UE-ContextReferenceAtSgNB.h \ + ./HandoverRequestAcknowledge.h \ + ./E-RABs-Admitted-List.h \ + ./E-RABs-Admitted-Item.h \ + ./HandoverPreparationFailure.h \ + ./HandoverReport.h \ + ./SNStatusTransfer.h \ + ./E-RABs-SubjectToStatusTransfer-List.h \ + ./E-RABs-SubjectToStatusTransfer-Item.h \ + ./UEContextRelease.h \ + ./HandoverCancel.h \ + ./ErrorIndication.h \ + ./ResetRequest.h \ + ./ResetResponse.h \ + ./X2SetupRequest.h \ + ./X2SetupResponse.h \ + ./X2SetupFailure.h \ + ./LoadInformation.h \ + ./CellInformation-List.h \ + ./CellInformation-Item.h \ + ./ENBConfigurationUpdate.h \ + ./ServedCellsToModify.h \ + ./ServedCellsToModify-Item.h \ + ./Old-ECGIs.h \ + ./ENBConfigurationUpdateAcknowledge.h \ + ./ENBConfigurationUpdateFailure.h \ + ./ResourceStatusRequest.h \ + ./CellToReport-List.h \ + ./CellToReport-Item.h \ + ./ReportingPeriodicity.h \ + ./PartialSuccessIndicator.h \ + ./ResourceStatusResponse.h \ + ./MeasurementInitiationResult-List.h \ + ./MeasurementInitiationResult-Item.h \ + ./MeasurementFailureCause-List.h \ + ./MeasurementFailureCause-Item.h \ + ./ResourceStatusFailure.h \ + ./CompleteFailureCauseInformation-List.h \ + ./CompleteFailureCauseInformation-Item.h \ + ./ResourceStatusUpdate.h \ + ./CellMeasurementResult-List.h \ + ./CellMeasurementResult-Item.h \ + ./PrivateMessage.h \ + ./MobilityChangeRequest.h \ + ./MobilityChangeAcknowledge.h \ + ./MobilityChangeFailure.h \ + ./RLFIndication.h \ + ./CellActivationRequest.h \ + ./ServedCellsToActivate.h \ + ./ServedCellsToActivate-Item.h \ + ./CellActivationResponse.h \ + ./ActivatedCellList.h \ + ./ActivatedCellList-Item.h \ + ./CellActivationFailure.h \ + ./X2Release.h \ + ./X2APMessageTransfer.h \ + ./RNL-Header.h \ + ./X2AP-Message.h \ + ./SeNBAdditionRequest.h \ + ./E-RABs-ToBeAdded-List.h \ + ./E-RABs-ToBeAdded-Item.h \ + ./E-RABs-ToBeAdded-Item-SCG-Bearer.h \ + ./E-RABs-ToBeAdded-Item-Split-Bearer.h \ + ./SeNBAdditionRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-List.h \ + ./E-RABs-Admitted-ToBeAdded-Item.h \ + ./E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h \ + ./SeNBAdditionRequestReject.h \ + ./SeNBReconfigurationComplete.h \ + ./ResponseInformationSeNBReconfComp.h \ + ./ResponseInformationSeNBReconfComp-SuccessItem.h \ + ./ResponseInformationSeNBReconfComp-RejectByMeNBItem.h \ + ./SeNBModificationRequest.h \ + ./UE-ContextInformationSeNBModReq.h \ + ./E-RABs-ToBeAdded-List-ModReq.h \ + ./E-RABs-ToBeAdded-ModReqItem.h \ + ./E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h \ + ./E-RABs-ToBeModified-List-ModReq.h \ + ./E-RABs-ToBeModified-ModReqItem.h \ + ./E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeModified-ModReqItem-Split-Bearer.h \ + ./E-RABs-ToBeReleased-List-ModReq.h \ + ./E-RABs-ToBeReleased-ModReqItem.h \ + ./E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h \ + ./SeNBModificationRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckList.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h \ + ./E-RABs-Admitted-ToBeModified-ModAckList.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckList.h \ + ./E-RABs-Admitted-ToReleased-ModAckItem.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h \ + ./SeNBModificationRequestReject.h \ + ./SeNBModificationRequired.h \ + ./E-RABs-ToBeReleased-ModReqd.h \ + ./E-RABs-ToBeReleased-ModReqdItem.h \ + ./SeNBModificationConfirm.h \ + ./SeNBModificationRefuse.h \ + ./SeNBReleaseRequest.h \ + ./E-RABs-ToBeReleased-List-RelReq.h \ + ./E-RABs-ToBeReleased-RelReqItem.h \ + ./E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h \ + ./SeNBReleaseRequired.h \ + ./SeNBReleaseConfirm.h \ + ./E-RABs-ToBeReleased-List-RelConf.h \ + ./E-RABs-ToBeReleased-RelConfItem.h \ + ./E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h \ + ./SeNBCounterCheckRequest.h \ + ./E-RABs-SubjectToCounterCheck-List.h \ + ./E-RABs-SubjectToCounterCheckItem.h \ + ./X2RemovalRequest.h \ + ./X2RemovalResponse.h \ + ./X2RemovalFailure.h \ + ./RetrieveUEContextRequest.h \ + ./RetrieveUEContextResponse.h \ + ./UE-ContextInformationRetrieve.h \ + ./E-RABs-ToBeSetup-ListRetrieve.h \ + ./E-RABs-ToBeSetupRetrieve-Item.h \ + ./RetrieveUEContextFailure.h \ + ./SgNBAdditionRequest.h \ + ./E-RABs-ToBeAdded-SgNBAddReqList.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBAdditionRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h \ + ./SgNBAdditionRequestReject.h \ + ./SgNBReconfigurationComplete.h \ + ./ResponseInformationSgNBReconfComp.h \ + ./ResponseInformationSgNBReconfComp-SuccessItem.h \ + ./ResponseInformationSgNBReconfComp-RejectByMeNBItem.h \ + ./SgNBModificationRequest.h \ + ./UE-ContextInformation-SgNBModReq.h \ + ./E-RABs-ToBeAdded-SgNBModReq-List.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-ToBeModified-SgNBModReq-List.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-ToBeReleased-SgNBModReq-List.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAckList.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAckList.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAckList.h \ + ./E-RABs-Admitted-ToReleased-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRequestReject.h \ + ./SgNBModificationRequired.h \ + ./E-RABs-ToBeReleased-SgNBModReqdList.h \ + ./E-RABs-ToBeReleased-SgNBModReqd-Item.h \ + ./E-RABs-ToBeModified-SgNBModReqdList.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationConfirm.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConfList.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRefuse.h \ + ./SgNBReleaseRequest.h \ + ./E-RABs-ToBeReleased-SgNBRelReqList.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBReleaseRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h \ + ./SgNBReleaseRequestReject.h \ + ./SgNBReleaseRequired.h \ + ./E-RABs-ToBeReleased-SgNBRelReqdList.h \ + ./E-RABs-ToBeReleased-SgNBRelReqd-Item.h \ + ./SgNBReleaseConfirm.h \ + ./E-RABs-ToBeReleased-SgNBRelConfList.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h \ + ./SgNBCounterCheckRequest.h \ + ./E-RABs-SubjectToSgNBCounterCheck-List.h \ + ./E-RABs-SubjectToSgNBCounterCheck-Item.h \ + ./SgNBChangeRequired.h \ + ./SgNBChangeConfirm.h \ + ./E-RABs-ToBeReleased-SgNBChaConfList.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h \ + ./RRCTransfer.h \ + ./SgNBChangeRefuse.h \ + ./ENDCX2SetupRequest.h \ + ./InitiatingNodeType-EndcX2Setup.h \ + ./ServedEUTRAcellsENDCX2ManagementList.h \ + ./ServedNRcellsENDCX2ManagementList.h \ + ./ServedNRCell-Information.h \ + ./FDD-InfoServedNRCell-Information.h \ + ./FDD-InfoNeighbourServedNRCell-Information.h \ + ./TDD-InfoServedNRCell-Information.h \ + ./TDD-InfoNeighbourServedNRCell-Information.h \ + ./NRNeighbour-Information.h \ + ./CellAssistanceInformation.h \ + ./Limited-list.h \ + ./ENDCX2SetupResponse.h \ + ./RespondingNodeType-EndcX2Setup.h \ + ./ENDCX2SetupFailure.h \ + ./ENDCConfigurationUpdate.h \ + ./InitiatingNodeType-EndcConfigUpdate.h \ + ./ServedEUTRAcellsToModifyListENDCConfUpd.h \ + ./ServedEUTRAcellsToDeleteListENDCConfUpd.h \ + ./ServedNRcellsToModifyENDCConfUpdList.h \ + ./ServedNRCellsToModify-Item.h \ + ./ServedNRcellsToDeleteENDCConfUpdList.h \ + ./ENDCConfigurationUpdateAcknowledge.h \ + ./RespondingNodeType-EndcConfigUpdate.h \ + ./ENDCConfigurationUpdateFailure.h \ + ./ENDCCellActivationRequest.h \ + ./ServedNRCellsToActivate.h \ + ./ServedNRCellsToActivate-Item.h \ + ./ENDCCellActivationResponse.h \ + ./ActivatedNRCellList.h \ + ./ActivatedNRCellList-Item.h \ + ./ENDCCellActivationFailure.h \ + ./SecondaryRATDataUsageReport.h \ + ./SgNBActivityNotification.h \ + ./ENDCPartialResetRequired.h \ + ./ENDCPartialResetConfirm.h \ + ./EUTRANRCellResourceCoordinationRequest.h \ + ./InitiatingNodeType-EutranrCellResourceCoordination.h \ + ./ListofEUTRACellsinEUTRACoordinationReq.h \ + ./ListofEUTRACellsinNRCoordinationReq.h \ + ./ListofNRCellsinNRCoordinationReq.h \ + ./EUTRANRCellResourceCoordinationResponse.h \ + ./RespondingNodeType-EutranrCellResourceCoordination.h \ + ./ListofEUTRACellsinEUTRACoordinationResp.h \ + ./ListofNRCellsinNRCoordinationResp.h \ + ./ENDCX2RemovalRequest.h \ + ./InitiatingNodeType-EndcX2Removal.h \ + ./ENDCX2RemovalResponse.h \ + ./RespondingNodeType-EndcX2Removal.h \ + ./ENDCX2RemovalFailure.h \ + ./DataForwardingAddressIndication.h \ + ./E-RABs-DataForwardingAddress-List.h \ + ./E-RABs-DataForwardingAddress-Item.h \ + ./GNBStatusIndication.h \ + ./ProtocolIE-Container.h \ + ./ProtocolIE-Single-Container.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 \ + ./ABSInformation.h \ + ./ABSInformationFDD.h \ + ./ABSInformationTDD.h \ + ./ABS-Status.h \ + ./ActivationID.h \ + ./AdditionalSpecialSubframe-Info.h \ + ./AdditionalSpecialSubframePatterns.h \ + ./AdditionalSpecialSubframeExtension-Info.h \ + ./AdditionalSpecialSubframePatternsExtension.h \ + ./AerialUEsubscriptionInformation.h \ + ./AllocationAndRetentionPriority.h \ + ./AreaScopeOfMDT.h \ + ./AreaScopeOfQMC.h \ + ./AS-SecurityInformation.h \ + ./BandwidthReducedSI.h \ + ./BearerType.h \ + ./BenefitMetric.h \ + ./BitRate.h \ + ./BroadcastPLMNs-Item.h \ + ./BluetoothMeasurementConfiguration.h \ + ./BluetoothMeasConfigNameList.h \ + ./BluetoothMeasConfig.h \ + ./BluetoothName.h \ + ./CapacityValue.h \ + ./Cause.h \ + ./CauseMisc.h \ + ./CauseProtocol.h \ + ./CauseRadioNetwork.h \ + ./CauseTransport.h \ + ./CellBasedMDT.h \ + ./CellBasedQMC.h \ + ./CellCapacityClassValue.h \ + ./CellDeploymentStatusIndicator.h \ + ./CellIdListforMDT.h \ + ./CellIdListforQMC.h \ + ./CellReplacingInfo.h \ + ./CellReportingIndicator.h \ + ./Cell-Size.h \ + ./CellType.h \ + ./CNTypeRestrictions.h \ + ./CNTypeRestrictionsItem.h \ + ./CoMPHypothesisSet.h \ + ./CoMPHypothesisSetItem.h \ + ./CoMPInformation.h \ + ./CoMPInformationItem.h \ + ./CoMPInformationStartTime.h \ + ./CompositeAvailableCapacity.h \ + ./CompositeAvailableCapacityGroup.h \ + ./Correlation-ID.h \ + ./COUNTvalue.h \ + ./COUNTValueExtended.h \ + ./COUNTvaluePDCP-SNlength18.h \ + ./CoverageModificationList.h \ + ./CoverageModification-Item.h \ + ./CriticalityDiagnostics.h \ + ./CriticalityDiagnostics-IE-List.h \ + ./CRNTI.h \ + ./CSGMembershipStatus.h \ + ./CSG-Id.h \ + ./CSIReportList.h \ + ./CSIReportPerCSIProcess.h \ + ./CSIReportPerCSIProcessItem.h \ + ./CyclicPrefixDL.h \ + ./CyclicPrefixUL.h \ + ./DataTrafficResources.h \ + ./DataTrafficResourceIndication.h \ + ./DeactivationIndication.h \ + ./DeliveryStatus.h \ + ./DL-ABS-status.h \ + ./DL-Forwarding.h \ + ./DL-GBR-PRB-usage.h \ + ./DL-non-GBR-PRB-usage.h \ + ./DLResourceBitmapULandDLSharing.h \ + ./DLResourcesULandDLSharing.h \ + ./DL-scheduling-PDCCH-CCE-usage.h \ + ./DL-Total-PRB-usage.h \ + ./DRB-ID.h \ + ./DuplicationActivation.h \ + ./DynamicDLTransmissionInformation.h \ + ./DynamicNAICSInformation.h \ + ./EARFCN.h \ + ./EARFCNExtension.h \ + ./ECGI.h \ + ./EnhancedRNTP.h \ + ./EnhancedRNTPStartTime.h \ + ./ENB-ID.h \ + ./EncryptionAlgorithms.h \ + ./EN-DC-ResourceConfiguration.h \ + ./EPLMNs.h \ + ./ERABActivityNotifyItemList.h \ + ./ERABActivityNotifyItem.h \ + ./E-RAB-ID.h \ + ./E-RAB-Level-QoS-Parameters.h \ + ./E-RAB-List.h \ + ./E-RAB-Item.h \ + ./E-RABUsageReportList.h \ + ./E-RABUsageReport-Item.h \ + ./EUTRA-Mode-Info.h \ + ./EUTRANCellIdentifier.h \ + ./EUTRANTraceID.h \ + ./EventType.h \ + ./ExpectedUEBehaviour.h \ + ./ExpectedUEActivityBehaviour.h \ + ./ExpectedActivityPeriod.h \ + ./ExpectedIdlePeriod.h \ + ./ExpectedHOInterval.h \ + ./ExtendedULInterferenceOverloadInfo.h \ + ./ExtendedBitRate.h \ + ./FDD-Info.h \ + ./ForbiddenInterRATs.h \ + ./ForbiddenTAs.h \ + ./ForbiddenTAs-Item.h \ + ./ForbiddenTACs.h \ + ./ForbiddenLAs.h \ + ./ForbiddenLAs-Item.h \ + ./ForbiddenLACs.h \ + ./Fourframes.h \ + ./FreqBandIndicator.h \ + ./FreqBandIndicatorPriority.h \ + ./FreqBandNrItem.h \ + ./GBR-QosInformation.h \ + ./GlobalENB-ID.h \ + ./GlobalGNB-ID.h \ + ./GNBOverloadInformation.h \ + ./GTPtunnelEndpoint.h \ + ./GTP-TEI.h \ + ./GUGroupIDList.h \ + ./GU-Group-ID.h \ + ./GUMMEI.h \ + ./GNB-ID.h \ + ./HandoverReportType.h \ + ./HandoverRestrictionList.h \ + ./HFN.h \ + ./HFNModified.h \ + ./HFNforPDCP-SNlength18.h \ + ./HWLoadIndicator.h \ + ./IntegrityProtectionAlgorithms.h \ + ./InterfacesToTrace.h \ + ./InvokeIndication.h \ + ./Key-eNodeB-Star.h \ + ./LAC.h \ + ./LastVisitedCell-Item.h \ + ./LastVisitedEUTRANCellInformation.h \ + ./LastVisitedGERANCellInformation.h \ + ./LastVisitedNGRANCellInformation.h \ + ./LastVisitedUTRANCellInformation.h \ + ./LCID.h \ + ./LHN-ID.h \ + ./Links-to-log.h \ + ./LoadIndicator.h \ + ./LocationReportingInformation.h \ + ./M1PeriodicReporting.h \ + ./M1ReportingTrigger.h \ + ./M1ThresholdEventA2.h \ + ./M3Configuration.h \ + ./M3period.h \ + ./M4Configuration.h \ + ./M4period.h \ + ./M5Configuration.h \ + ./M5period.h \ + ./M6Configuration.h \ + ./M6report-interval.h \ + ./M6delay-threshold.h \ + ./M7Configuration.h \ + ./M7period.h \ + ./MakeBeforeBreakIndicator.h \ + ./ManagementBasedMDTallowed.h \ + ./Masked-IMEISV.h \ + ./MDT-Activation.h \ + ./MDT-Configuration.h \ + ./MDTPLMNList.h \ + ./MDT-Location-Info.h \ + ./Measurement-ID.h \ + ./MeasurementsToActivate.h \ + ./MeasurementThresholdA2.h \ + ./MeNBCoordinationAssistanceInformation.h \ + ./MeNBResourceCoordinationInformation.h \ + ./MeNBtoSeNBContainer.h \ + ./MME-Group-ID.h \ + ./MME-Code.h \ + ./MBMS-Service-Area-Identity-List.h \ + ./MBMS-Service-Area-Identity.h \ + ./MBSFN-Subframe-Infolist.h \ + ./MBSFN-Subframe-Info.h \ + ./MobilityParametersModificationRange.h \ + ./MobilityParametersInformation.h \ + ./MultibandInfoList.h \ + ./BandInfo.h \ + ./MeNBtoSgNBContainer.h \ + ./SplitSRBs.h \ + ./SplitSRB.h \ + ./UENRMeasurement.h \ + ./Neighbour-Information.h \ + ./NextHopChainingCount.h \ + ./NewDRBIDrequest.h \ + ./Number-of-Antennaports.h \ + ./NRFreqInfo.h \ + ./NRCellIdentifier.h \ + ./NRCGI.h \ + ./NRPCI.h \ + ./NRrestrictioninEPSasSecondaryRAT.h \ + ./NRrestrictionin5GS.h \ + ./NRencryptionAlgorithms.h \ + ./NRintegrityProtectionAlgorithms.h \ + ./NR-TxBW.h \ + ./NRNRB.h \ + ./NRSCS.h \ + ./NRS-NSSS-PowerOffset.h \ + ./FiveGS-TAC.h \ + ./NRUESecurityCapabilities.h \ + ./NSSS-NumOccasionDifferentPrecoder.h \ + ./OffsetOfNbiotChannelNumberToEARFCN.h \ + ./Oneframe.h \ + ./Packet-LossRate.h \ + ./PA-Values.h \ + ./PDCPChangeIndication.h \ + ./PDCP-SN.h \ + ./PDCP-SNExtended.h \ + ./PDCP-SNlength18.h \ + ./PDCPSnLength.h \ + ./PCI.h \ + ./PLMN-Identity.h \ + ./Port-Number.h \ + ./PRACH-Configuration.h \ + ./PLMNAreaBasedQMC.h \ + ./PLMNListforQMC.h \ + ./Pre-emptionCapability.h \ + ./Pre-emptionVulnerability.h \ + ./PriorityLevel.h \ + ./ProSeAuthorized.h \ + ./ProSeDirectDiscovery.h \ + ./ProSeDirectCommunication.h \ + ./ProSeUEtoNetworkRelaying.h \ + ./ProtectedEUTRAResourceIndication.h \ + ./ProtectedFootprintTimePattern.h \ + ./ProtectedResourceList.h \ + ./ProtectedResourceList-Item.h \ + ./QCI.h \ + ./RadioframeAllocationOffset.h \ + ./RadioframeAllocationPeriod.h \ + ./RadioResourceStatus.h \ + ./ReceiveStatusofULPDCPSDUs.h \ + ./ReceiveStatusOfULPDCPSDUsExtended.h \ + ./ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h \ + ./Reestablishment-Indication.h \ + ./Registration-Request.h \ + ./RelativeNarrowbandTxPower.h \ + ./ReplacingCellsList.h \ + ./ReplacingCellsList-Item.h \ + ./ReportAmountMDT.h \ + ./ReportArea.h \ + ./ReportCharacteristics.h \ + ./ReportingPeriodicityCSIR.h \ + ./ReportingPeriodicityRSRPMR.h \ + ./ReportIntervalMDT.h \ + ./ReservedSubframePattern.h \ + ./ResourceType.h \ + ./ResumeID.h \ + ./RLCMode.h \ + ./RLC-Status.h \ + ./RNTP-Threshold.h \ + ./RRC-Config-Ind.h \ + ./RRC-Context.h \ + ./RRCConnReestabIndicator.h \ + ./RRCConnSetupIndicator.h \ + ./RSRPMeasurementResult.h \ + ./RSRPMRList.h \ + ./RRCContainer.h \ + ./S1TNLLoadIndicator.h \ + ./SCGChangeIndication.h \ + ./SecondaryRATUsageReportList.h \ + ./SecondaryRATUsageReport-Item.h \ + ./SeNBSecurityKey.h \ + ./SeNBtoMeNBContainer.h \ + ./ServedCells.h \ + ./ServedCell-Information.h \ + ./ServiceType.h \ + ./SgNBCoordinationAssistanceInformation.h \ + ./SgNBResourceCoordinationInformation.h \ + ./SgNB-UE-X2AP-ID.h \ + ./SIPTOBearerDeactivationIndication.h \ + ./SharedResourceType.h \ + ./ShortMAC-I.h \ + ./SGNB-Addition-Trigger-Ind.h \ + ./SourceOfUEActivityBehaviourInformation.h \ + ./SpecialSubframe-Info.h \ + ./SpecialSubframePatterns.h \ + ./SpectrumSharingGroupID.h \ + ./SubbandCQI.h \ + ./Subscription-Based-UE-DifferentiationInfo.h \ + ./ScheduledCommunicationTime.h \ + ./SRVCCOperationPossible.h \ + ./SubbandCQICodeword0.h \ + ./SubbandCQICodeword1.h \ + ./SubbandCQIList.h \ + ./SubbandCQIItem.h \ + ./SubbandSize.h \ + ./SubscriberProfileIDforRFP.h \ + ./SubframeAllocation.h \ + ./SubframeAssignment.h \ + ./SubframeType.h \ + ./SgNBSecurityKey.h \ + ./SgNBtoMeNBContainer.h \ + ./SRBType.h \ + ./SCGConfigurationQuery.h \ + ./SULInformation.h \ + ./SupportedSULFreqBandItem.h \ + ./TABasedMDT.h \ + ./TAC.h \ + ./TAIBasedMDT.h \ + ./TAIListforMDT.h \ + ./TAI-Item.h \ + ./TAListforMDT.h \ + ./TABasedQMC.h \ + ./TAListforQMC.h \ + ./TAIBasedQMC.h \ + ./TAIListforQMC.h \ + ./TargetCellInUTRAN.h \ + ./TargeteNBtoSource-eNBTransparentContainer.h \ + ./TDD-Info.h \ + ./Threshold-RSRP.h \ + ./Threshold-RSRQ.h \ + ./TimeToWait.h \ + ./Time-UE-StayedInCell.h \ + ./Time-UE-StayedInCell-EnhancedGranularity.h \ + ./TraceActivation.h \ + ./TraceCollectionEntityIPAddress.h \ + ./TraceDepth.h \ + ./Transmission-Bandwidth.h \ + ./TransportLayerAddress.h \ + ./TunnelInformation.h \ + ./TypeOfError.h \ + ./UEAggregateMaximumBitRate.h \ + ./UEAppLayerMeasConfig.h \ + ./UE-ContextKeptIndicator.h \ + ./UEID.h \ + ./UE-HistoryInformation.h \ + ./UE-HistoryInformationFromTheUE.h \ + ./UE-S1AP-ID.h \ + ./UE-X2AP-ID.h \ + ./UE-X2AP-ID-Extension.h \ + ./UE-RLF-Report-Container.h \ + ./UE-RLF-Report-Container-for-extended-bands.h \ + ./UESecurityCapabilities.h \ + ./UESidelinkAggregateMaximumBitRate.h \ + ./UEsToBeResetList.h \ + ./UEsToBeResetList-Item.h \ + ./ULandDLSharing.h \ + ./ULConfiguration.h \ + ./UL-UE-Configuration.h \ + ./UL-GBR-PRB-usage.h \ + ./UL-HighInterferenceIndicationInfo.h \ + ./UL-HighInterferenceIndicationInfo-Item.h \ + ./UL-HighInterferenceIndication.h \ + ./UL-InterferenceOverloadIndication.h \ + ./UL-InterferenceOverloadIndication-Item.h \ + ./UL-non-GBR-PRB-usage.h \ + ./ULOnlySharing.h \ + ./ULResourceBitmapULandDLSharing.h \ + ./ULResourcesULandDLSharing.h \ + ./UL-scheduling-PDCCH-CCE-usage.h \ + ./UL-Total-PRB-usage.h \ + ./UsableABSInformation.h \ + ./UsableABSInformationFDD.h \ + ./UsableABSInformationTDD.h \ + ./UserPlaneTrafficActivityReport.h \ + ./V2XServicesAuthorized.h \ + ./VehicleUE.h \ + ./PedestrianUE.h \ + ./WidebandCQI.h \ + ./WidebandCQICodeword1.h \ + ./WLANMeasurementConfiguration.h \ + ./WLANMeasConfigNameList.h \ + ./WLANMeasConfig.h \ + ./WLANName.h \ + ./WTID.h \ + ./WTID-Type1.h \ + ./WTID-Long-Type2.h \ + ./WT-UE-XwAP-ID.h \ + ./X2BenefitValue.h \ + ./Criticality.h \ + ./Presence.h \ + ./PrivateIE-ID.h \ + ./ProcedureCode.h \ + ./ProtocolIE-ID.h \ + ./TriggeringMessage.h \ + ./E2SM-gNB-X2-eventTriggerDefinition.h \ + ./E2SM-gNB-X2-actionDefinition.h \ + ./E2SM-gNB-X2-indicationHeader.h \ + ./E2SM-gNB-X2-indicationMessage.h \ + ./E2SM-gNB-X2-callProcessID.h \ + ./E2SM-gNB-X2-controlHeader.h \ + ./E2SM-gNB-X2-controlMessage.h \ + ./ActionParameter-Item.h \ + ./ActionParameter-ID.h \ + ./ActionParameter-Value.h \ + ./CallProcess-ID.h \ + ./Interface-ID.h \ + ./InterfaceDirection.h \ + ./InterfaceMessage.h \ + ./InterfaceMessageType.h \ + ./TypeOfMessage.h \ + ./InterfaceProtocolIE-Item.h \ + ./InterfaceProtocolIE-ID.h \ + ./InterfaceProtocolIE-Test.h \ + ./InterfaceProtocolIE-Value.h \ + ./Style-ID.h \ + ./TimeStamp.h + +ASN_MODULE_HDRS+=./ANY.h +ASN_MODULE_SRCS+=./ANY.c +ASN_MODULE_HDRS+=./OCTET_STRING.h +ASN_MODULE_HDRS+=./OPEN_TYPE.h +ASN_MODULE_SRCS+=./OPEN_TYPE.c +ASN_MODULE_HDRS+=./constr_CHOICE.h +ASN_MODULE_HDRS+=./BOOLEAN.h +ASN_MODULE_SRCS+=./BOOLEAN.c +ASN_MODULE_HDRS+=./INTEGER.h +ASN_MODULE_SRCS+=./INTEGER.c +ASN_MODULE_HDRS+=./NULL.h +ASN_MODULE_SRCS+=./NULL.c +ASN_MODULE_HDRS+=./NativeEnumerated.h +ASN_MODULE_SRCS+=./NativeEnumerated.c +ASN_MODULE_HDRS+=./NativeInteger.h +ASN_MODULE_SRCS+=./NativeInteger.c +ASN_MODULE_HDRS+=./OBJECT_IDENTIFIER.h +ASN_MODULE_SRCS+=./OBJECT_IDENTIFIER.c +ASN_MODULE_HDRS+=./PrintableString.h +ASN_MODULE_SRCS+=./PrintableString.c +ASN_MODULE_HDRS+=./asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./asn_SET_OF.h +ASN_MODULE_SRCS+=./asn_SET_OF.c +ASN_MODULE_SRCS+=./constr_CHOICE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE.h +ASN_MODULE_SRCS+=./constr_SEQUENCE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./constr_SET_OF.h +ASN_MODULE_SRCS+=./constr_SET_OF.c +ASN_MODULE_HDRS+=./asn_application.h +ASN_MODULE_SRCS+=./asn_application.c +ASN_MODULE_HDRS+=./asn_ioc.h +ASN_MODULE_HDRS+=./asn_system.h +ASN_MODULE_HDRS+=./asn_codecs.h +ASN_MODULE_HDRS+=./asn_internal.h +ASN_MODULE_SRCS+=./asn_internal.c +ASN_MODULE_HDRS+=./asn_random_fill.h +ASN_MODULE_SRCS+=./asn_random_fill.c +ASN_MODULE_HDRS+=./asn_bit_data.h +ASN_MODULE_SRCS+=./asn_bit_data.c +ASN_MODULE_SRCS+=./OCTET_STRING.c +ASN_MODULE_HDRS+=./BIT_STRING.h +ASN_MODULE_SRCS+=./BIT_STRING.c +ASN_MODULE_SRCS+=./asn_codecs_prim.c +ASN_MODULE_HDRS+=./asn_codecs_prim.h +ASN_MODULE_HDRS+=./ber_tlv_length.h +ASN_MODULE_SRCS+=./ber_tlv_length.c +ASN_MODULE_HDRS+=./ber_tlv_tag.h +ASN_MODULE_SRCS+=./ber_tlv_tag.c +ASN_MODULE_HDRS+=./ber_decoder.h +ASN_MODULE_SRCS+=./ber_decoder.c +ASN_MODULE_HDRS+=./der_encoder.h +ASN_MODULE_SRCS+=./der_encoder.c +ASN_MODULE_HDRS+=./constr_TYPE.h +ASN_MODULE_SRCS+=./constr_TYPE.c +ASN_MODULE_HDRS+=./constraints.h +ASN_MODULE_SRCS+=./constraints.c +ASN_MODULE_HDRS+=./xer_support.h +ASN_MODULE_SRCS+=./xer_support.c +ASN_MODULE_HDRS+=./xer_decoder.h +ASN_MODULE_SRCS+=./xer_decoder.c +ASN_MODULE_HDRS+=./xer_encoder.h +ASN_MODULE_SRCS+=./xer_encoder.c +ASN_MODULE_HDRS+=./per_support.h +ASN_MODULE_SRCS+=./per_support.c +ASN_MODULE_HDRS+=./per_decoder.h +ASN_MODULE_SRCS+=./per_decoder.c +ASN_MODULE_HDRS+=./per_encoder.h +ASN_MODULE_SRCS+=./per_encoder.c +ASN_MODULE_HDRS+=./per_opentype.h +ASN_MODULE_SRCS+=./per_opentype.c + +ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT + +lib_LTLIBRARIES+=libasncodec.la +libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) +libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c b/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c new file mode 100644 index 0000000..445f733 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ManagementBasedMDTallowed.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ManagementBasedMDTallowed_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ManagementBasedMDTallowed_value2enum_1[] = { + { 0, 7, "allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ManagementBasedMDTallowed_enum2value_1[] = { + 0 /* allowed(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ManagementBasedMDTallowed_specs_1 = { + asn_MAP_ManagementBasedMDTallowed_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_ManagementBasedMDTallowed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ManagementBasedMDTallowed = { + "ManagementBasedMDTallowed", + "ManagementBasedMDTallowed", + &asn_OP_NativeEnumerated, + asn_DEF_ManagementBasedMDTallowed_tags_1, + sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1) + /sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1[0]), /* 1 */ + asn_DEF_ManagementBasedMDTallowed_tags_1, /* Same as above */ + sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1) + /sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ManagementBasedMDTallowed_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ManagementBasedMDTallowed_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h b/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h new file mode 100644 index 0000000..96d6413 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ManagementBasedMDTallowed_H_ +#define _ManagementBasedMDTallowed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ManagementBasedMDTallowed { + ManagementBasedMDTallowed_allowed = 0 + /* + * Enumeration is extensible + */ +} e_ManagementBasedMDTallowed; + +/* ManagementBasedMDTallowed */ +typedef long ManagementBasedMDTallowed_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ManagementBasedMDTallowed_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ManagementBasedMDTallowed; +extern const asn_INTEGER_specifics_t asn_SPC_ManagementBasedMDTallowed_specs_1; +asn_struct_free_f ManagementBasedMDTallowed_free; +asn_struct_print_f ManagementBasedMDTallowed_print; +asn_constr_check_f ManagementBasedMDTallowed_constraint; +ber_type_decoder_f ManagementBasedMDTallowed_decode_ber; +der_type_encoder_f ManagementBasedMDTallowed_encode_der; +xer_type_decoder_f ManagementBasedMDTallowed_decode_xer; +xer_type_encoder_f ManagementBasedMDTallowed_encode_xer; +per_type_decoder_f ManagementBasedMDTallowed_decode_uper; +per_type_encoder_f ManagementBasedMDTallowed_encode_uper; +per_type_decoder_f ManagementBasedMDTallowed_decode_aper; +per_type_encoder_f ManagementBasedMDTallowed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ManagementBasedMDTallowed_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.c b/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.c new file mode 100644 index 0000000..d74f561 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Masked-IMEISV.h" + +int +Masked_IMEISV_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 64)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Masked_IMEISV_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 64, 64 } /* (SIZE(64..64)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Masked_IMEISV_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Masked_IMEISV = { + "Masked-IMEISV", + "Masked-IMEISV", + &asn_OP_BIT_STRING, + asn_DEF_Masked_IMEISV_tags_1, + sizeof(asn_DEF_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_Masked_IMEISV_tags_1[0]), /* 1 */ + asn_DEF_Masked_IMEISV_tags_1, /* Same as above */ + sizeof(asn_DEF_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_Masked_IMEISV_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Masked_IMEISV_constr_1, Masked_IMEISV_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.h b/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.h new file mode 100644 index 0000000..a52d2f9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Masked-IMEISV.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Masked_IMEISV_H_ +#define _Masked_IMEISV_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Masked-IMEISV */ +typedef BIT_STRING_t Masked_IMEISV_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Masked_IMEISV_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Masked_IMEISV; +asn_struct_free_f Masked_IMEISV_free; +asn_struct_print_f Masked_IMEISV_print; +asn_constr_check_f Masked_IMEISV_constraint; +ber_type_decoder_f Masked_IMEISV_decode_ber; +der_type_encoder_f Masked_IMEISV_encode_der; +xer_type_decoder_f Masked_IMEISV_decode_xer; +xer_type_encoder_f Masked_IMEISV_encode_xer; +per_type_decoder_f Masked_IMEISV_decode_uper; +per_type_encoder_f Masked_IMEISV_encode_uper; +per_type_decoder_f Masked_IMEISV_decode_aper; +per_type_encoder_f Masked_IMEISV_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Masked_IMEISV_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c b/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c new file mode 100644 index 0000000..7078ec0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBCoordinationAssistanceInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MeNBCoordinationAssistanceInformation_value2enum_1[] = { + { 0, 25, "coordination-not-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MeNBCoordinationAssistanceInformation_enum2value_1[] = { + 0 /* coordination-not-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MeNBCoordinationAssistanceInformation_specs_1 = { + asn_MAP_MeNBCoordinationAssistanceInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MeNBCoordinationAssistanceInformation_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_MeNBCoordinationAssistanceInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBCoordinationAssistanceInformation = { + "MeNBCoordinationAssistanceInformation", + "MeNBCoordinationAssistanceInformation", + &asn_OP_NativeEnumerated, + asn_DEF_MeNBCoordinationAssistanceInformation_tags_1, + sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + asn_DEF_MeNBCoordinationAssistanceInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MeNBCoordinationAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h b/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h new file mode 100644 index 0000000..4f30b16 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBCoordinationAssistanceInformation_H_ +#define _MeNBCoordinationAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeNBCoordinationAssistanceInformation { + MeNBCoordinationAssistanceInformation_coordination_not_required = 0 + /* + * Enumeration is extensible + */ +} e_MeNBCoordinationAssistanceInformation; + +/* MeNBCoordinationAssistanceInformation */ +typedef long MeNBCoordinationAssistanceInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeNBCoordinationAssistanceInformation; +extern const asn_INTEGER_specifics_t asn_SPC_MeNBCoordinationAssistanceInformation_specs_1; +asn_struct_free_f MeNBCoordinationAssistanceInformation_free; +asn_struct_print_f MeNBCoordinationAssistanceInformation_print; +asn_constr_check_f MeNBCoordinationAssistanceInformation_constraint; +ber_type_decoder_f MeNBCoordinationAssistanceInformation_decode_ber; +der_type_encoder_f MeNBCoordinationAssistanceInformation_encode_der; +xer_type_decoder_f MeNBCoordinationAssistanceInformation_decode_xer; +xer_type_encoder_f MeNBCoordinationAssistanceInformation_encode_xer; +per_type_decoder_f MeNBCoordinationAssistanceInformation_decode_uper; +per_type_encoder_f MeNBCoordinationAssistanceInformation_encode_uper; +per_type_decoder_f MeNBCoordinationAssistanceInformation_decode_aper; +per_type_encoder_f MeNBCoordinationAssistanceInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBCoordinationAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c b/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c new file mode 100644 index 0000000..c8f4df6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c @@ -0,0 +1,174 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBResourceCoordinationInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_uLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* 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_dLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* 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_uLCoordinationInformation_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dLCoordinationInformation_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformation, eUTRA_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRA-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformation, uLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_uLCoordinationInformation_constr_3, memb_uLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "uLCoordinationInformation" + }, + { ATF_POINTER, 2, offsetof(struct MeNBResourceCoordinationInformation, dLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dLCoordinationInformation_constr_4, memb_dLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "dLCoordinationInformation" + }, + { ATF_POINTER, 1, offsetof(struct MeNBResourceCoordinationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P167, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeNBResourceCoordinationInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_MeNBResourceCoordinationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeNBResourceCoordinationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRA-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformation_specs_1 = { + sizeof(struct MeNBResourceCoordinationInformation), + offsetof(struct MeNBResourceCoordinationInformation, _asn_ctx), + asn_MAP_MeNBResourceCoordinationInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MeNBResourceCoordinationInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformation = { + "MeNBResourceCoordinationInformation", + "MeNBResourceCoordinationInformation", + &asn_OP_SEQUENCE, + asn_DEF_MeNBResourceCoordinationInformation_tags_1, + sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + asn_DEF_MeNBResourceCoordinationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeNBResourceCoordinationInformation_1, + 4, /* Elements count */ + &asn_SPC_MeNBResourceCoordinationInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h b/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h new file mode 100644 index 0000000..14302e3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBResourceCoordinationInformation_H_ +#define _MeNBResourceCoordinationInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MeNBResourceCoordinationInformation */ +typedef struct MeNBResourceCoordinationInformation { + ECGI_t eUTRA_Cell_ID; + BIT_STRING_t uLCoordinationInformation; + BIT_STRING_t *dLCoordinationInformation; /* 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; +} MeNBResourceCoordinationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBResourceCoordinationInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c b/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c new file mode 100644 index 0000000..d799ab6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBtoSeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_MeNBtoSeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBtoSeNBContainer = { + "MeNBtoSeNBContainer", + "MeNBtoSeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_MeNBtoSeNBContainer_tags_1, + sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_MeNBtoSeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h b/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h new file mode 100644 index 0000000..91f70dc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBtoSeNBContainer_H_ +#define _MeNBtoSeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeNBtoSeNBContainer */ +typedef OCTET_STRING_t MeNBtoSeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBtoSeNBContainer; +asn_struct_free_f MeNBtoSeNBContainer_free; +asn_struct_print_f MeNBtoSeNBContainer_print; +asn_constr_check_f MeNBtoSeNBContainer_constraint; +ber_type_decoder_f MeNBtoSeNBContainer_decode_ber; +der_type_encoder_f MeNBtoSeNBContainer_encode_der; +xer_type_decoder_f MeNBtoSeNBContainer_decode_xer; +xer_type_encoder_f MeNBtoSeNBContainer_encode_xer; +per_type_decoder_f MeNBtoSeNBContainer_decode_uper; +per_type_encoder_f MeNBtoSeNBContainer_encode_uper; +per_type_decoder_f MeNBtoSeNBContainer_decode_aper; +per_type_encoder_f MeNBtoSeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBtoSeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c b/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c new file mode 100644 index 0000000..f81d121 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBtoSgNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_MeNBtoSgNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBtoSgNBContainer = { + "MeNBtoSgNBContainer", + "MeNBtoSgNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_MeNBtoSgNBContainer_tags_1, + sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1[0]), /* 1 */ + asn_DEF_MeNBtoSgNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h b/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h new file mode 100644 index 0000000..dc11a92 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBtoSgNBContainer_H_ +#define _MeNBtoSgNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeNBtoSgNBContainer */ +typedef OCTET_STRING_t MeNBtoSgNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBtoSgNBContainer; +asn_struct_free_f MeNBtoSgNBContainer_free; +asn_struct_print_f MeNBtoSgNBContainer_print; +asn_constr_check_f MeNBtoSgNBContainer_constraint; +ber_type_decoder_f MeNBtoSgNBContainer_decode_ber; +der_type_encoder_f MeNBtoSgNBContainer_encode_der; +xer_type_decoder_f MeNBtoSgNBContainer_decode_xer; +xer_type_encoder_f MeNBtoSgNBContainer_encode_xer; +per_type_decoder_f MeNBtoSgNBContainer_decode_uper; +per_type_encoder_f MeNBtoSgNBContainer_encode_uper; +per_type_decoder_f MeNBtoSgNBContainer_decode_aper; +per_type_encoder_f MeNBtoSgNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBtoSgNBContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Measurement-ID.c b/E2Manager/asn1codec/e2ap_engine/Measurement-ID.c new file mode 100644 index 0000000..aff452f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Measurement-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Measurement-ID.h" + +int +Measurement_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Measurement_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 1, 4095 } /* (1..4095,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Measurement_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Measurement_ID = { + "Measurement-ID", + "Measurement-ID", + &asn_OP_NativeInteger, + asn_DEF_Measurement_ID_tags_1, + sizeof(asn_DEF_Measurement_ID_tags_1) + /sizeof(asn_DEF_Measurement_ID_tags_1[0]), /* 1 */ + asn_DEF_Measurement_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Measurement_ID_tags_1) + /sizeof(asn_DEF_Measurement_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Measurement_ID_constr_1, Measurement_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Measurement-ID.h b/E2Manager/asn1codec/e2ap_engine/Measurement-ID.h new file mode 100644 index 0000000..e3bd733 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Measurement-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Measurement_ID_H_ +#define _Measurement_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Measurement-ID */ +typedef long Measurement_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Measurement_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Measurement_ID; +asn_struct_free_f Measurement_ID_free; +asn_struct_print_f Measurement_ID_print; +asn_constr_check_f Measurement_ID_constraint; +ber_type_decoder_f Measurement_ID_decode_ber; +der_type_encoder_f Measurement_ID_encode_der; +xer_type_decoder_f Measurement_ID_decode_xer; +xer_type_encoder_f Measurement_ID_encode_xer; +per_type_decoder_f Measurement_ID_decode_uper; +per_type_encoder_f Measurement_ID_encode_uper; +per_type_decoder_f Measurement_ID_decode_aper; +per_type_encoder_f Measurement_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Measurement_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c new file mode 100644 index 0000000..8f7a034 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementFailureCause-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item, measurementFailedReportCharacteristics), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportCharacteristics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailedReportCharacteristics" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementFailureCause_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeasurementFailureCause_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementFailedReportCharacteristics */ + { (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_MeasurementFailureCause_Item_specs_1 = { + sizeof(struct MeasurementFailureCause_Item), + offsetof(struct MeasurementFailureCause_Item, _asn_ctx), + asn_MAP_MeasurementFailureCause_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementFailureCause_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item = { + "MeasurementFailureCause-Item", + "MeasurementFailureCause-Item", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_Item_tags_1, + sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_Item_1, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h new file mode 100644 index 0000000..3d56957 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementFailureCause_Item_H_ +#define _MeasurementFailureCause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReportCharacteristics.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MeasurementFailureCause-Item */ +typedef struct MeasurementFailureCause_Item { + ReportCharacteristics_t measurementFailedReportCharacteristics; + 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; +} MeasurementFailureCause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementFailureCause_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.c b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.c new file mode 100644 index 0000000..87a6568 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementFailureCause-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_MeasurementFailureCause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementFailureCause_List_specs_1 = { + sizeof(struct MeasurementFailureCause_List), + offsetof(struct MeasurementFailureCause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_List = { + "MeasurementFailureCause-List", + "MeasurementFailureCause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementFailureCause_List_tags_1, + sizeof(asn_DEF_MeasurementFailureCause_List_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_List_tags_1[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_List_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementFailureCause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MeasurementFailureCause_List_1, + 1, /* Single element */ + &asn_SPC_MeasurementFailureCause_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.h b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.h new file mode 100644 index 0000000..bd85df4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementFailureCause-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementFailureCause_List_H_ +#define _MeasurementFailureCause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* MeasurementFailureCause-List */ +typedef struct MeasurementFailureCause_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_List; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementFailureCause_List_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_List_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementFailureCause_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementFailureCause_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c new file mode 100644 index 0000000..4b559d0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementInitiationResult-Item.h" + +#include "MeasurementFailureCause-List.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 2, offsetof(struct MeasurementInitiationResult_Item, measurementFailureCause_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementFailureCause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailureCause-List" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementInitiationResult_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeasurementInitiationResult_Item_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measurementFailureCause-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_specs_1 = { + sizeof(struct MeasurementInitiationResult_Item), + offsetof(struct MeasurementInitiationResult_Item, _asn_ctx), + asn_MAP_MeasurementInitiationResult_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementInitiationResult_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item = { + "MeasurementInitiationResult-Item", + "MeasurementInitiationResult-Item", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_Item_tags_1, + sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_Item_1, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h new file mode 100644 index 0000000..d1368ed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementInitiationResult_Item_H_ +#define _MeasurementInitiationResult_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementFailureCause_List; +struct ProtocolExtensionContainer; + +/* MeasurementInitiationResult-Item */ +typedef struct MeasurementInitiationResult_Item { + ECGI_t cell_ID; + struct MeasurementFailureCause_List *measurementFailureCause_List; /* 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; +} MeasurementInitiationResult_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInitiationResult_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c new file mode 100644 index 0000000..36d9607 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementInitiationResult-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_MeasurementInitiationResult_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_MeasurementInitiationResult_List_specs_1 = { + sizeof(struct MeasurementInitiationResult_List), + offsetof(struct MeasurementInitiationResult_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_List = { + "MeasurementInitiationResult-List", + "MeasurementInitiationResult-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementInitiationResult_List_tags_1, + sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementInitiationResult_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MeasurementInitiationResult_List_1, + 1, /* Single element */ + &asn_SPC_MeasurementInitiationResult_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h new file mode 100644 index 0000000..ffc63e9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementInitiationResult_List_H_ +#define _MeasurementInitiationResult_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* MeasurementInitiationResult-List */ +typedef struct MeasurementInitiationResult_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInitiationResult_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.c b/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.c new file mode 100644 index 0000000..ea96512 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementThresholdA2.h" + +asn_per_constraints_t asn_PER_type_MeasurementThresholdA2_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeasurementThresholdA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementThresholdA2, choice.threshold_RSRP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Threshold_RSRP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRP" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementThresholdA2, choice.threshold_RSRQ), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Threshold_RSRQ, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRQ" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementThresholdA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* threshold-RSRP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshold-RSRQ */ +}; +asn_CHOICE_specifics_t asn_SPC_MeasurementThresholdA2_specs_1 = { + sizeof(struct MeasurementThresholdA2), + offsetof(struct MeasurementThresholdA2, _asn_ctx), + offsetof(struct MeasurementThresholdA2, present), + sizeof(((struct MeasurementThresholdA2 *)0)->present), + asn_MAP_MeasurementThresholdA2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementThresholdA2 = { + "MeasurementThresholdA2", + "MeasurementThresholdA2", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_MeasurementThresholdA2_constr_1, CHOICE_constraint }, + asn_MBR_MeasurementThresholdA2_1, + 2, /* Elements count */ + &asn_SPC_MeasurementThresholdA2_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.h b/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.h new file mode 100644 index 0000000..41fc767 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementThresholdA2.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementThresholdA2_H_ +#define _MeasurementThresholdA2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Threshold-RSRP.h" +#include "Threshold-RSRQ.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementThresholdA2_PR { + MeasurementThresholdA2_PR_NOTHING, /* No components present */ + MeasurementThresholdA2_PR_threshold_RSRP, + MeasurementThresholdA2_PR_threshold_RSRQ + /* Extensions may appear below */ + +} MeasurementThresholdA2_PR; + +/* MeasurementThresholdA2 */ +typedef struct MeasurementThresholdA2 { + MeasurementThresholdA2_PR present; + union MeasurementThresholdA2_u { + Threshold_RSRP_t threshold_RSRP; + 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; +} MeasurementThresholdA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementThresholdA2; +extern asn_CHOICE_specifics_t asn_SPC_MeasurementThresholdA2_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementThresholdA2_1[2]; +extern asn_per_constraints_t asn_PER_type_MeasurementThresholdA2_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementThresholdA2_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.c b/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.c new file mode 100644 index 0000000..b4a6f81 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementsToActivate.h" + +int +MeasurementsToActivate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MeasurementsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MeasurementsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementsToActivate = { + "MeasurementsToActivate", + "MeasurementsToActivate", + &asn_OP_BIT_STRING, + asn_DEF_MeasurementsToActivate_tags_1, + sizeof(asn_DEF_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_MeasurementsToActivate_tags_1[0]), /* 1 */ + asn_DEF_MeasurementsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_MeasurementsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementsToActivate_constr_1, MeasurementsToActivate_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.h b/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.h new file mode 100644 index 0000000..bbfff0c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MeasurementsToActivate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementsToActivate_H_ +#define _MeasurementsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementsToActivate */ +typedef BIT_STRING_t MeasurementsToActivate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeasurementsToActivate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementsToActivate; +asn_struct_free_f MeasurementsToActivate_free; +asn_struct_print_f MeasurementsToActivate_print; +asn_constr_check_f MeasurementsToActivate_constraint; +ber_type_decoder_f MeasurementsToActivate_decode_ber; +der_type_encoder_f MeasurementsToActivate_encode_der; +xer_type_decoder_f MeasurementsToActivate_decode_xer; +xer_type_encoder_f MeasurementsToActivate_encode_xer; +per_type_decoder_f MeasurementsToActivate_decode_uper; +per_type_encoder_f MeasurementsToActivate_encode_uper; +per_type_decoder_f MeasurementsToActivate_decode_aper; +per_type_encoder_f MeasurementsToActivate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementsToActivate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c new file mode 100644 index 0000000..7ea3ea6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_specs_1 = { + sizeof(struct MobilityChangeAcknowledge), + offsetof(struct MobilityChangeAcknowledge, _asn_ctx), + asn_MAP_MobilityChangeAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge = { + "MobilityChangeAcknowledge", + "MobilityChangeAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeAcknowledge_tags_1, + sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1) + /sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1) + /sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h new file mode 100644 index 0000000..b06c668 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeAcknowledge_H_ +#define _MobilityChangeAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeAcknowledge */ +typedef struct MobilityChangeAcknowledge { + ProtocolIE_Container_119P36_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.c b/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.c new file mode 100644 index 0000000..1b5cb94 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeFailure.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_specs_1 = { + sizeof(struct MobilityChangeFailure), + offsetof(struct MobilityChangeFailure, _asn_ctx), + asn_MAP_MobilityChangeFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure = { + "MobilityChangeFailure", + "MobilityChangeFailure", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeFailure_tags_1, + sizeof(asn_DEF_MobilityChangeFailure_tags_1) + /sizeof(asn_DEF_MobilityChangeFailure_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeFailure_tags_1) + /sizeof(asn_DEF_MobilityChangeFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeFailure_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.h b/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.h new file mode 100644 index 0000000..88589a7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeFailure_H_ +#define _MobilityChangeFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeFailure */ +typedef struct MobilityChangeFailure { + ProtocolIE_Container_119P37_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.c b/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.c new file mode 100644 index 0000000..f16be36 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeRequest.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_specs_1 = { + sizeof(struct MobilityChangeRequest), + offsetof(struct MobilityChangeRequest, _asn_ctx), + asn_MAP_MobilityChangeRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest = { + "MobilityChangeRequest", + "MobilityChangeRequest", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeRequest_tags_1, + sizeof(asn_DEF_MobilityChangeRequest_tags_1) + /sizeof(asn_DEF_MobilityChangeRequest_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeRequest_tags_1) + /sizeof(asn_DEF_MobilityChangeRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeRequest_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.h b/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.h new file mode 100644 index 0000000..2109796 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityChangeRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeRequest_H_ +#define _MobilityChangeRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeRequest */ +typedef struct MobilityChangeRequest { + ProtocolIE_Container_119P35_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityInformation.c b/E2Manager/asn1codec/e2ap_engine/MobilityInformation.c new file mode 100644 index 0000000..3c3c9af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityInformation.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityInformation.h" + +int +MobilityInformation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_MobilityInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32, 32 } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityInformation = { + "MobilityInformation", + "MobilityInformation", + &asn_OP_BIT_STRING, + asn_DEF_MobilityInformation_tags_1, + sizeof(asn_DEF_MobilityInformation_tags_1) + /sizeof(asn_DEF_MobilityInformation_tags_1[0]), /* 1 */ + asn_DEF_MobilityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityInformation_tags_1) + /sizeof(asn_DEF_MobilityInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MobilityInformation_constr_1, MobilityInformation_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityInformation.h b/E2Manager/asn1codec/e2ap_engine/MobilityInformation.h new file mode 100644 index 0000000..31ad52e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityInformation.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityInformation_H_ +#define _MobilityInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityInformation */ +typedef BIT_STRING_t MobilityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityInformation; +asn_struct_free_f MobilityInformation_free; +asn_struct_print_f MobilityInformation_print; +asn_constr_check_f MobilityInformation_constraint; +ber_type_decoder_f MobilityInformation_decode_ber; +der_type_encoder_f MobilityInformation_encode_der; +xer_type_decoder_f MobilityInformation_decode_xer; +xer_type_encoder_f MobilityInformation_encode_xer; +per_type_decoder_f MobilityInformation_decode_uper; +per_type_encoder_f MobilityInformation_encode_uper; +per_type_decoder_f MobilityInformation_decode_aper; +per_type_encoder_f MobilityInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.c b/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.c new file mode 100644 index 0000000..4e5842c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.c @@ -0,0 +1,99 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityParametersInformation.h" + +static int +memb_handoverTriggerChange_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_handoverTriggerChange_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MobilityParametersInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersInformation, handoverTriggerChange), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChange_constr_2, memb_handoverTriggerChange_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChange" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityParametersInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityParametersInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* handoverTriggerChange */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersInformation_specs_1 = { + sizeof(struct MobilityParametersInformation), + offsetof(struct MobilityParametersInformation, _asn_ctx), + asn_MAP_MobilityParametersInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityParametersInformation = { + "MobilityParametersInformation", + "MobilityParametersInformation", + &asn_OP_SEQUENCE, + asn_DEF_MobilityParametersInformation_tags_1, + sizeof(asn_DEF_MobilityParametersInformation_tags_1) + /sizeof(asn_DEF_MobilityParametersInformation_tags_1[0]), /* 1 */ + asn_DEF_MobilityParametersInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityParametersInformation_tags_1) + /sizeof(asn_DEF_MobilityParametersInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityParametersInformation_1, + 1, /* Elements count */ + &asn_SPC_MobilityParametersInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.h b/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.h new file mode 100644 index 0000000..3cab0fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityParametersInformation.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityParametersInformation_H_ +#define _MobilityParametersInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityParametersInformation */ +typedef struct MobilityParametersInformation { + long handoverTriggerChange; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityParametersInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityParametersInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityParametersInformation_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityParametersInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.c b/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.c new file mode 100644 index 0000000..db12e26 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.c @@ -0,0 +1,139 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityParametersModificationRange.h" + +static int +memb_handoverTriggerChangeLowerLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_handoverTriggerChangeUpperLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_handoverTriggerChangeLowerLimit_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_handoverTriggerChangeUpperLimit_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MobilityParametersModificationRange_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersModificationRange, handoverTriggerChangeLowerLimit), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChangeLowerLimit_constr_2, memb_handoverTriggerChangeLowerLimit_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChangeLowerLimit" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersModificationRange, handoverTriggerChangeUpperLimit), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChangeUpperLimit_constr_3, memb_handoverTriggerChangeUpperLimit_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChangeUpperLimit" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityParametersModificationRange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityParametersModificationRange_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverTriggerChangeLowerLimit */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* handoverTriggerChangeUpperLimit */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersModificationRange_specs_1 = { + sizeof(struct MobilityParametersModificationRange), + offsetof(struct MobilityParametersModificationRange, _asn_ctx), + asn_MAP_MobilityParametersModificationRange_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityParametersModificationRange = { + "MobilityParametersModificationRange", + "MobilityParametersModificationRange", + &asn_OP_SEQUENCE, + asn_DEF_MobilityParametersModificationRange_tags_1, + sizeof(asn_DEF_MobilityParametersModificationRange_tags_1) + /sizeof(asn_DEF_MobilityParametersModificationRange_tags_1[0]), /* 1 */ + asn_DEF_MobilityParametersModificationRange_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityParametersModificationRange_tags_1) + /sizeof(asn_DEF_MobilityParametersModificationRange_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityParametersModificationRange_1, + 2, /* Elements count */ + &asn_SPC_MobilityParametersModificationRange_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.h b/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.h new file mode 100644 index 0000000..76c6e5e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MobilityParametersModificationRange.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityParametersModificationRange_H_ +#define _MobilityParametersModificationRange_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityParametersModificationRange */ +typedef struct MobilityParametersModificationRange { + long handoverTriggerChangeLowerLimit; + long handoverTriggerChangeUpperLimit; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityParametersModificationRange_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityParametersModificationRange; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersModificationRange_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityParametersModificationRange_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityParametersModificationRange_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.c b/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.c new file mode 100644 index 0000000..de32e21 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MultibandInfoList.h" + +#include "BandInfo.h" +asn_per_constraints_t asn_PER_type_MultibandInfoList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MultibandInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BandInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MultibandInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MultibandInfoList_specs_1 = { + sizeof(struct MultibandInfoList), + offsetof(struct MultibandInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MultibandInfoList = { + "MultibandInfoList", + "MultibandInfoList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MultibandInfoList_tags_1, + sizeof(asn_DEF_MultibandInfoList_tags_1) + /sizeof(asn_DEF_MultibandInfoList_tags_1[0]), /* 1 */ + asn_DEF_MultibandInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_MultibandInfoList_tags_1) + /sizeof(asn_DEF_MultibandInfoList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MultibandInfoList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MultibandInfoList_1, + 1, /* Single element */ + &asn_SPC_MultibandInfoList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.h b/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.h new file mode 100644 index 0000000..5f31495 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/MultibandInfoList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MultibandInfoList_H_ +#define _MultibandInfoList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BandInfo; + +/* MultibandInfoList */ +typedef struct MultibandInfoList { + A_SEQUENCE_OF(struct BandInfo) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MultibandInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MultibandInfoList; +extern asn_SET_OF_specifics_t asn_SPC_MultibandInfoList_specs_1; +extern asn_TYPE_member_t asn_MBR_MultibandInfoList_1[1]; +extern asn_per_constraints_t asn_PER_type_MultibandInfoList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MultibandInfoList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NR-TxBW.c b/E2Manager/asn1codec/e2ap_engine/NR-TxBW.c new file mode 100644 index 0000000..6a13034 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NR-TxBW.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NR-TxBW.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NR_TxBW_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW, nRSCS), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRSCS, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRSCS" + }, + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW, nRNRB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNRB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNRB" + }, + { ATF_POINTER, 1, offsetof(struct NR_TxBW, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P175, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NR_TxBW_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NR_TxBW_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_TxBW_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRSCS */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRNRB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_specs_1 = { + sizeof(struct NR_TxBW), + offsetof(struct NR_TxBW, _asn_ctx), + asn_MAP_NR_TxBW_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NR_TxBW_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_TxBW = { + "NR-TxBW", + "NR-TxBW", + &asn_OP_SEQUENCE, + asn_DEF_NR_TxBW_tags_1, + sizeof(asn_DEF_NR_TxBW_tags_1) + /sizeof(asn_DEF_NR_TxBW_tags_1[0]), /* 1 */ + asn_DEF_NR_TxBW_tags_1, /* Same as above */ + sizeof(asn_DEF_NR_TxBW_tags_1) + /sizeof(asn_DEF_NR_TxBW_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NR_TxBW_1, + 3, /* Elements count */ + &asn_SPC_NR_TxBW_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NR-TxBW.h b/E2Manager/asn1codec/e2ap_engine/NR-TxBW.h new file mode 100644 index 0000000..9e5f0dc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NR-TxBW.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NR_TxBW_H_ +#define _NR_TxBW_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRSCS.h" +#include "NRNRB.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NR-TxBW */ +typedef struct NR_TxBW { + NRSCS_t nRSCS; + NRNRB_t nRNRB; + 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; +} NR_TxBW_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NR_TxBW; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_specs_1; +extern asn_TYPE_member_t asn_MBR_NR_TxBW_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NR_TxBW_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRCGI.c b/E2Manager/asn1codec/e2ap_engine/NRCGI.c new file mode 100644 index 0000000..a2efa9b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRCGI.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCGI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NRCGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRcellIdentifier" + }, + { ATF_POINTER, 1, offsetof(struct NRCGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P174, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRCGI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRcellIdentifier */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = { + sizeof(struct NRCGI), + offsetof(struct NRCGI, _asn_ctx), + asn_MAP_NRCGI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NRCGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRCGI = { + "NRCGI", + "NRCGI", + &asn_OP_SEQUENCE, + asn_DEF_NRCGI_tags_1, + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + asn_DEF_NRCGI_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRCGI_1, + 3, /* Elements count */ + &asn_SPC_NRCGI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRCGI.h b/E2Manager/asn1codec/e2ap_engine/NRCGI.h new file mode 100644 index 0000000..ccffd7c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRCGI.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCGI_H_ +#define _NRCGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "NRCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NRCGI */ +typedef struct NRCGI { + PLMN_Identity_t pLMN_Identity; + NRCellIdentifier_t nRcellIdentifier; + 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; +} NRCGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRCGI; +extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1; +extern asn_TYPE_member_t asn_MBR_NRCGI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCGI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.c b/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.c new file mode 100644 index 0000000..d5d0f70 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCellIdentifier.h" + +int +NRCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 36)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier = { + "NRCellIdentifier", + "NRCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_NRCellIdentifier_tags_1, + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_NRCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRCellIdentifier_constr_1, NRCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.h b/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.h new file mode 100644 index 0000000..9048e79 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRCellIdentifier.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCellIdentifier_H_ +#define _NRCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRCellIdentifier */ +typedef BIT_STRING_t NRCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier; +asn_struct_free_f NRCellIdentifier_free; +asn_struct_print_f NRCellIdentifier_print; +asn_constr_check_f NRCellIdentifier_constraint; +ber_type_decoder_f NRCellIdentifier_decode_ber; +der_type_encoder_f NRCellIdentifier_encode_der; +xer_type_decoder_f NRCellIdentifier_decode_xer; +xer_type_encoder_f NRCellIdentifier_encode_xer; +per_type_decoder_f NRCellIdentifier_decode_uper; +per_type_encoder_f NRCellIdentifier_encode_uper; +per_type_decoder_f NRCellIdentifier_decode_aper; +per_type_encoder_f NRCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.c b/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.c new file mode 100644 index 0000000..3933d22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.c @@ -0,0 +1,207 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRFreqInfo.h" + +#include "SULInformation.h" +#include "ProtocolExtensionContainer.h" +#include "FreqBandNrItem.h" +static int +memb_nRARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3279165)) { + /* 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_freqBandListNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 32)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_freqBandListNr_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_nRARFCN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, 0, 3279165 } /* (0..3279165) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_freqBandListNr_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_freqBandListNr_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FreqBandNrItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_freqBandListNr_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_freqBandListNr_specs_3 = { + sizeof(struct NRFreqInfo__freqBandListNr), + offsetof(struct NRFreqInfo__freqBandListNr, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_freqBandListNr_3 = { + "freqBandListNr", + "freqBandListNr", + &asn_OP_SEQUENCE_OF, + asn_DEF_freqBandListNr_tags_3, + sizeof(asn_DEF_freqBandListNr_tags_3) + /sizeof(asn_DEF_freqBandListNr_tags_3[0]) - 1, /* 1 */ + asn_DEF_freqBandListNr_tags_3, /* Same as above */ + sizeof(asn_DEF_freqBandListNr_tags_3) + /sizeof(asn_DEF_freqBandListNr_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_freqBandListNr_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_freqBandListNr_3, + 1, /* Single element */ + &asn_SPC_freqBandListNr_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRFreqInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo, nRARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_nRARFCN_constr_2, memb_nRARFCN_constraint_1 }, + 0, 0, /* No default value */ + "nRARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo, freqBandListNr), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_freqBandListNr_3, + 0, + { 0, &asn_PER_memb_freqBandListNr_constr_3, memb_freqBandListNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandListNr" + }, + { ATF_POINTER, 2, offsetof(struct NRFreqInfo, sULInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SULInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sULInformation" + }, + { ATF_POINTER, 1, offsetof(struct NRFreqInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P173, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRFreqInfo_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_NRFreqInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFreqInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* freqBandListNr */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sULInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_specs_1 = { + sizeof(struct NRFreqInfo), + offsetof(struct NRFreqInfo, _asn_ctx), + asn_MAP_NRFreqInfo_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_NRFreqInfo_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFreqInfo = { + "NRFreqInfo", + "NRFreqInfo", + &asn_OP_SEQUENCE, + asn_DEF_NRFreqInfo_tags_1, + sizeof(asn_DEF_NRFreqInfo_tags_1) + /sizeof(asn_DEF_NRFreqInfo_tags_1[0]), /* 1 */ + asn_DEF_NRFreqInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFreqInfo_tags_1) + /sizeof(asn_DEF_NRFreqInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRFreqInfo_1, + 4, /* Elements count */ + &asn_SPC_NRFreqInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.h b/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.h new file mode 100644 index 0000000..299a9eb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRFreqInfo.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRFreqInfo_H_ +#define _NRFreqInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SULInformation; +struct ProtocolExtensionContainer; +struct FreqBandNrItem; + +/* NRFreqInfo */ +typedef struct NRFreqInfo { + long nRARFCN; + struct NRFreqInfo__freqBandListNr { + A_SEQUENCE_OF(struct FreqBandNrItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } freqBandListNr; + struct SULInformation *sULInformation; /* 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; +} NRFreqInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRFreqInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_NRFreqInfo_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFreqInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRNRB.c b/E2Manager/asn1codec/e2ap_engine/NRNRB.c new file mode 100644 index 0000000..475a7a3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRNRB.c @@ -0,0 +1,128 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRNRB.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRNRB_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 28 } /* (0..28,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRNRB_value2enum_1[] = { + { 0, 5, "nrb11" }, + { 1, 5, "nrb18" }, + { 2, 5, "nrb24" }, + { 3, 5, "nrb25" }, + { 4, 5, "nrb31" }, + { 5, 5, "nrb32" }, + { 6, 5, "nrb38" }, + { 7, 5, "nrb51" }, + { 8, 5, "nrb52" }, + { 9, 5, "nrb65" }, + { 10, 5, "nrb66" }, + { 11, 5, "nrb78" }, + { 12, 5, "nrb79" }, + { 13, 5, "nrb93" }, + { 14, 6, "nrb106" }, + { 15, 6, "nrb107" }, + { 16, 6, "nrb121" }, + { 17, 6, "nrb132" }, + { 18, 6, "nrb133" }, + { 19, 6, "nrb135" }, + { 20, 6, "nrb160" }, + { 21, 6, "nrb162" }, + { 22, 6, "nrb189" }, + { 23, 6, "nrb216" }, + { 24, 6, "nrb217" }, + { 25, 6, "nrb245" }, + { 26, 6, "nrb264" }, + { 27, 6, "nrb270" }, + { 28, 6, "nrb273" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRNRB_enum2value_1[] = { + 14, /* nrb106(14) */ + 15, /* nrb107(15) */ + 0, /* nrb11(0) */ + 16, /* nrb121(16) */ + 17, /* nrb132(17) */ + 18, /* nrb133(18) */ + 19, /* nrb135(19) */ + 20, /* nrb160(20) */ + 21, /* nrb162(21) */ + 1, /* nrb18(1) */ + 22, /* nrb189(22) */ + 23, /* nrb216(23) */ + 24, /* nrb217(24) */ + 2, /* nrb24(2) */ + 25, /* nrb245(25) */ + 3, /* nrb25(3) */ + 26, /* nrb264(26) */ + 27, /* nrb270(27) */ + 28, /* nrb273(28) */ + 4, /* nrb31(4) */ + 5, /* nrb32(5) */ + 6, /* nrb38(6) */ + 7, /* nrb51(7) */ + 8, /* nrb52(8) */ + 9, /* nrb65(9) */ + 10, /* nrb66(10) */ + 11, /* nrb78(11) */ + 12, /* nrb79(12) */ + 13 /* nrb93(13) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRNRB_specs_1 = { + asn_MAP_NRNRB_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRNRB_enum2value_1, /* N => "tag"; sorted by N */ + 29, /* Number of elements in the maps */ + 30, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRNRB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRNRB = { + "NRNRB", + "NRNRB", + &asn_OP_NativeEnumerated, + asn_DEF_NRNRB_tags_1, + sizeof(asn_DEF_NRNRB_tags_1) + /sizeof(asn_DEF_NRNRB_tags_1[0]), /* 1 */ + asn_DEF_NRNRB_tags_1, /* Same as above */ + sizeof(asn_DEF_NRNRB_tags_1) + /sizeof(asn_DEF_NRNRB_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRNRB_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRNRB_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRNRB.h b/E2Manager/asn1codec/e2ap_engine/NRNRB.h new file mode 100644 index 0000000..d1f14f0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRNRB.h @@ -0,0 +1,100 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRNRB_H_ +#define _NRNRB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRNRB { + NRNRB_nrb11 = 0, + NRNRB_nrb18 = 1, + NRNRB_nrb24 = 2, + NRNRB_nrb25 = 3, + NRNRB_nrb31 = 4, + NRNRB_nrb32 = 5, + NRNRB_nrb38 = 6, + NRNRB_nrb51 = 7, + NRNRB_nrb52 = 8, + NRNRB_nrb65 = 9, + NRNRB_nrb66 = 10, + NRNRB_nrb78 = 11, + NRNRB_nrb79 = 12, + NRNRB_nrb93 = 13, + NRNRB_nrb106 = 14, + NRNRB_nrb107 = 15, + NRNRB_nrb121 = 16, + NRNRB_nrb132 = 17, + NRNRB_nrb133 = 18, + NRNRB_nrb135 = 19, + NRNRB_nrb160 = 20, + NRNRB_nrb162 = 21, + NRNRB_nrb189 = 22, + NRNRB_nrb216 = 23, + NRNRB_nrb217 = 24, + NRNRB_nrb245 = 25, + NRNRB_nrb264 = 26, + NRNRB_nrb270 = 27, + NRNRB_nrb273 = 28 + /* + * Enumeration is extensible + */ +} e_NRNRB; + +/* NRNRB */ +typedef long NRNRB_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRNRB_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRNRB; +extern const asn_INTEGER_specifics_t asn_SPC_NRNRB_specs_1; +asn_struct_free_f NRNRB_free; +asn_struct_print_f NRNRB_print; +asn_constr_check_f NRNRB_constraint; +ber_type_decoder_f NRNRB_decode_ber; +der_type_encoder_f NRNRB_encode_der; +xer_type_decoder_f NRNRB_decode_xer; +xer_type_encoder_f NRNRB_encode_xer; +per_type_decoder_f NRNRB_decode_uper; +per_type_encoder_f NRNRB_encode_uper; +per_type_decoder_f NRNRB_decode_aper; +per_type_encoder_f NRNRB_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRNRB_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.c b/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.c new file mode 100644 index 0000000..dace868 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.c @@ -0,0 +1,229 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRNeighbour-Information.h" + +#include "ProtocolExtensionContainer.h" +#include "FDD-InfoNeighbourServedNRCell-Information.h" +#include "TDD-InfoNeighbourServedNRCell-Information.h" +static asn_per_constraints_t asn_PER_type_nRNeighbourModeInfo_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_NRNeighbour_Information_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nRNeighbourModeInfo_8[] = { + { ATF_POINTER, 0, offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_InfoNeighbourServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_InfoNeighbourServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_nRNeighbourModeInfo_tag2el_8[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +static asn_CHOICE_specifics_t asn_SPC_nRNeighbourModeInfo_specs_8 = { + sizeof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo), + offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, _asn_ctx), + offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, present), + sizeof(((struct NRNeighbour_Information__Member__nRNeighbourModeInfo *)0)->present), + asn_MAP_nRNeighbourModeInfo_tag2el_8, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nRNeighbourModeInfo_8 = { + "nRNeighbourModeInfo", + "nRNeighbourModeInfo", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_nRNeighbourModeInfo_constr_8, CHOICE_constraint }, + asn_MBR_nRNeighbourModeInfo_8, + 2, /* Elements count */ + &asn_SPC_nRNeighbourModeInfo_specs_8 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nrpCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRPCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrpCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 2, offsetof(struct NRNeighbour_Information__Member, fiveGS_TAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveGS_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fiveGS-TAC" + }, + { ATF_POINTER, 1, offsetof(struct NRNeighbour_Information__Member, configured_TAC), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "configured-TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, measurementTimingConfiguration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementTimingConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nRNeighbourModeInfo), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_nRNeighbourModeInfo_8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNeighbourModeInfo" + }, + { ATF_POINTER, 1, offsetof(struct NRNeighbour_Information__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P97, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2, 3, 6 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrpCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* fiveGS-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* configured-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* measurementTimingConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nRNeighbourModeInfo */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct NRNeighbour_Information__Member), + offsetof(struct NRNeighbour_Information__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 7, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 7, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRNeighbour_Information_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRNeighbour_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NRNeighbour_Information_specs_1 = { + sizeof(struct NRNeighbour_Information), + offsetof(struct NRNeighbour_Information, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information = { + "NRNeighbour-Information", + "NRNeighbour-Information", + &asn_OP_SEQUENCE_OF, + asn_DEF_NRNeighbour_Information_tags_1, + sizeof(asn_DEF_NRNeighbour_Information_tags_1) + /sizeof(asn_DEF_NRNeighbour_Information_tags_1[0]), /* 1 */ + asn_DEF_NRNeighbour_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_NRNeighbour_Information_tags_1) + /sizeof(asn_DEF_NRNeighbour_Information_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRNeighbour_Information_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_NRNeighbour_Information_1, + 1, /* Single element */ + &asn_SPC_NRNeighbour_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.h b/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.h new file mode 100644 index 0000000..626a753 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRNeighbour-Information.h @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRNeighbour_Information_H_ +#define _NRNeighbour_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NRPCI.h" +#include "NRCGI.h" +#include "FiveGS-TAC.h" +#include "TAC.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRNeighbour_Information__Member__nRNeighbourModeInfo_PR { + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_NOTHING, /* No components present */ + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_fdd, + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_tdd + /* Extensions may appear below */ + +} NRNeighbour_Information__Member__nRNeighbourModeInfo_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct FDD_InfoNeighbourServedNRCell_Information; +struct TDD_InfoNeighbourServedNRCell_Information; + +/* Forward definitions */ +typedef struct NRNeighbour_Information__Member { + NRPCI_t nrpCI; + NRCGI_t nrCellID; + FiveGS_TAC_t *fiveGS_TAC; /* OPTIONAL */ + TAC_t *configured_TAC; /* OPTIONAL */ + OCTET_STRING_t measurementTimingConfiguration; + struct NRNeighbour_Information__Member__nRNeighbourModeInfo { + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR present; + union NRNeighbour_Information__Member__nRNeighbourModeInfo_u { + struct FDD_InfoNeighbourServedNRCell_Information *fdd; + struct TDD_InfoNeighbourServedNRCell_Information *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nRNeighbourModeInfo; + 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; +} NRNeighbour_Information__Member; + +/* NRNeighbour-Information */ +typedef struct NRNeighbour_Information { + A_SEQUENCE_OF(NRNeighbour_Information__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRNeighbour_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information; +extern asn_SET_OF_specifics_t asn_SPC_NRNeighbour_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_NRNeighbour_Information_1[1]; +extern asn_per_constraints_t asn_PER_type_NRNeighbour_Information_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRNeighbour_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRPCI.c b/E2Manager/asn1codec/e2ap_engine/NRPCI.c new file mode 100644 index 0000000..e23db5b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRPCI.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRPCI.h" + +int +NRPCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1007)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_NRPCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1007 } /* (0..1007) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRPCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRPCI = { + "NRPCI", + "NRPCI", + &asn_OP_NativeInteger, + asn_DEF_NRPCI_tags_1, + sizeof(asn_DEF_NRPCI_tags_1) + /sizeof(asn_DEF_NRPCI_tags_1[0]), /* 1 */ + asn_DEF_NRPCI_tags_1, /* Same as above */ + sizeof(asn_DEF_NRPCI_tags_1) + /sizeof(asn_DEF_NRPCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRPCI_constr_1, NRPCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRPCI.h b/E2Manager/asn1codec/e2ap_engine/NRPCI.h new file mode 100644 index 0000000..dd14def --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRPCI.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRPCI_H_ +#define _NRPCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRPCI */ +typedef long NRPCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRPCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRPCI; +asn_struct_free_f NRPCI_free; +asn_struct_print_f NRPCI_print; +asn_constr_check_f NRPCI_constraint; +ber_type_decoder_f NRPCI_decode_ber; +der_type_encoder_f NRPCI_encode_der; +xer_type_decoder_f NRPCI_decode_xer; +xer_type_encoder_f NRPCI_encode_xer; +per_type_decoder_f NRPCI_decode_uper; +per_type_encoder_f NRPCI_encode_uper; +per_type_decoder_f NRPCI_decode_aper; +per_type_encoder_f NRPCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRPCI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c b/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c new file mode 100644 index 0000000..530f276 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRS-NSSS-PowerOffset.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRS_NSSS_PowerOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRS_NSSS_PowerOffset_value2enum_1[] = { + { 0, 10, "minusThree" }, + { 1, 4, "zero" }, + { 2, 5, "three" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRS_NSSS_PowerOffset_enum2value_1[] = { + 0, /* minusThree(0) */ + 2, /* three(2) */ + 1 /* zero(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRS_NSSS_PowerOffset_specs_1 = { + asn_MAP_NRS_NSSS_PowerOffset_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRS_NSSS_PowerOffset_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_NRS_NSSS_PowerOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRS_NSSS_PowerOffset = { + "NRS-NSSS-PowerOffset", + "NRS-NSSS-PowerOffset", + &asn_OP_NativeEnumerated, + asn_DEF_NRS_NSSS_PowerOffset_tags_1, + sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1) + /sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1[0]), /* 1 */ + asn_DEF_NRS_NSSS_PowerOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1) + /sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRS_NSSS_PowerOffset_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRS_NSSS_PowerOffset_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h b/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h new file mode 100644 index 0000000..294e828 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRS_NSSS_PowerOffset_H_ +#define _NRS_NSSS_PowerOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRS_NSSS_PowerOffset { + NRS_NSSS_PowerOffset_minusThree = 0, + NRS_NSSS_PowerOffset_zero = 1, + NRS_NSSS_PowerOffset_three = 2 + /* + * Enumeration is extensible + */ +} e_NRS_NSSS_PowerOffset; + +/* NRS-NSSS-PowerOffset */ +typedef long NRS_NSSS_PowerOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRS_NSSS_PowerOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRS_NSSS_PowerOffset; +extern const asn_INTEGER_specifics_t asn_SPC_NRS_NSSS_PowerOffset_specs_1; +asn_struct_free_f NRS_NSSS_PowerOffset_free; +asn_struct_print_f NRS_NSSS_PowerOffset_print; +asn_constr_check_f NRS_NSSS_PowerOffset_constraint; +ber_type_decoder_f NRS_NSSS_PowerOffset_decode_ber; +der_type_encoder_f NRS_NSSS_PowerOffset_encode_der; +xer_type_decoder_f NRS_NSSS_PowerOffset_decode_xer; +xer_type_encoder_f NRS_NSSS_PowerOffset_encode_xer; +per_type_decoder_f NRS_NSSS_PowerOffset_decode_uper; +per_type_encoder_f NRS_NSSS_PowerOffset_encode_uper; +per_type_decoder_f NRS_NSSS_PowerOffset_decode_aper; +per_type_encoder_f NRS_NSSS_PowerOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRS_NSSS_PowerOffset_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRSCS.c b/E2Manager/asn1codec/e2ap_engine/NRSCS.c new file mode 100644 index 0000000..5f697a6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRSCS.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRSCS.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRSCS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRSCS_value2enum_1[] = { + { 0, 5, "scs15" }, + { 1, 5, "scs30" }, + { 2, 5, "scs60" }, + { 3, 6, "scs120" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRSCS_enum2value_1[] = { + 3, /* scs120(3) */ + 0, /* scs15(0) */ + 1, /* scs30(1) */ + 2 /* scs60(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRSCS_specs_1 = { + asn_MAP_NRSCS_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRSCS_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_NRSCS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRSCS = { + "NRSCS", + "NRSCS", + &asn_OP_NativeEnumerated, + asn_DEF_NRSCS_tags_1, + sizeof(asn_DEF_NRSCS_tags_1) + /sizeof(asn_DEF_NRSCS_tags_1[0]), /* 1 */ + asn_DEF_NRSCS_tags_1, /* Same as above */ + sizeof(asn_DEF_NRSCS_tags_1) + /sizeof(asn_DEF_NRSCS_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRSCS_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRSCS_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRSCS.h b/E2Manager/asn1codec/e2ap_engine/NRSCS.h new file mode 100644 index 0000000..624a36e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRSCS.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRSCS_H_ +#define _NRSCS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRSCS { + NRSCS_scs15 = 0, + NRSCS_scs30 = 1, + NRSCS_scs60 = 2, + NRSCS_scs120 = 3 + /* + * Enumeration is extensible + */ +} e_NRSCS; + +/* NRSCS */ +typedef long NRSCS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRSCS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRSCS; +extern const asn_INTEGER_specifics_t asn_SPC_NRSCS_specs_1; +asn_struct_free_f NRSCS_free; +asn_struct_print_f NRSCS_print; +asn_constr_check_f NRSCS_constraint; +ber_type_decoder_f NRSCS_decode_ber; +der_type_encoder_f NRSCS_encode_der; +xer_type_decoder_f NRSCS_decode_xer; +xer_type_encoder_f NRSCS_encode_xer; +per_type_decoder_f NRSCS_decode_uper; +per_type_encoder_f NRSCS_encode_uper; +per_type_decoder_f NRSCS_decode_aper; +per_type_encoder_f NRSCS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRSCS_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.c b/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.c new file mode 100644 index 0000000..99a0495 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRUESecurityCapabilities.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities, nRencryptionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRencryptionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRencryptionAlgorithms" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities, nRintegrityProtectionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRintegrityProtectionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRintegrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct NRUESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P176, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRUESecurityCapabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NRUESecurityCapabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRUESecurityCapabilities_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRencryptionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRintegrityProtectionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_specs_1 = { + sizeof(struct NRUESecurityCapabilities), + offsetof(struct NRUESecurityCapabilities, _asn_ctx), + asn_MAP_NRUESecurityCapabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NRUESecurityCapabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities = { + "NRUESecurityCapabilities", + "NRUESecurityCapabilities", + &asn_OP_SEQUENCE, + asn_DEF_NRUESecurityCapabilities_tags_1, + sizeof(asn_DEF_NRUESecurityCapabilities_tags_1) + /sizeof(asn_DEF_NRUESecurityCapabilities_tags_1[0]), /* 1 */ + asn_DEF_NRUESecurityCapabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_NRUESecurityCapabilities_tags_1) + /sizeof(asn_DEF_NRUESecurityCapabilities_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRUESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_NRUESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.h b/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.h new file mode 100644 index 0000000..38b7cf9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRUESecurityCapabilities.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRUESecurityCapabilities_H_ +#define _NRUESecurityCapabilities_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRencryptionAlgorithms.h" +#include "NRintegrityProtectionAlgorithms.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NRUESecurityCapabilities */ +typedef struct NRUESecurityCapabilities { + NRencryptionAlgorithms_t nRencryptionAlgorithms; + NRintegrityProtectionAlgorithms_t nRintegrityProtectionAlgorithms; + 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; +} NRUESecurityCapabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities; +extern asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_specs_1; +extern asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRUESecurityCapabilities_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.c b/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.c new file mode 100644 index 0000000..f0f43f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRencryptionAlgorithms.h" + +int +NRencryptionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRencryptionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRencryptionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRencryptionAlgorithms = { + "NRencryptionAlgorithms", + "NRencryptionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_NRencryptionAlgorithms_tags_1, + sizeof(asn_DEF_NRencryptionAlgorithms_tags_1) + /sizeof(asn_DEF_NRencryptionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_NRencryptionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_NRencryptionAlgorithms_tags_1) + /sizeof(asn_DEF_NRencryptionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRencryptionAlgorithms_constr_1, NRencryptionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.h b/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.h new file mode 100644 index 0000000..60716c3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRencryptionAlgorithms.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRencryptionAlgorithms_H_ +#define _NRencryptionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRencryptionAlgorithms */ +typedef BIT_STRING_t NRencryptionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRencryptionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRencryptionAlgorithms; +asn_struct_free_f NRencryptionAlgorithms_free; +asn_struct_print_f NRencryptionAlgorithms_print; +asn_constr_check_f NRencryptionAlgorithms_constraint; +ber_type_decoder_f NRencryptionAlgorithms_decode_ber; +der_type_encoder_f NRencryptionAlgorithms_encode_der; +xer_type_decoder_f NRencryptionAlgorithms_decode_xer; +xer_type_encoder_f NRencryptionAlgorithms_encode_xer; +per_type_decoder_f NRencryptionAlgorithms_decode_uper; +per_type_encoder_f NRencryptionAlgorithms_encode_uper; +per_type_decoder_f NRencryptionAlgorithms_decode_aper; +per_type_encoder_f NRencryptionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRencryptionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c b/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c new file mode 100644 index 0000000..5f3cafb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRintegrityProtectionAlgorithms.h" + +int +NRintegrityProtectionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRintegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRintegrityProtectionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRintegrityProtectionAlgorithms = { + "NRintegrityProtectionAlgorithms", + "NRintegrityProtectionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_NRintegrityProtectionAlgorithms_tags_1, + sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_NRintegrityProtectionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRintegrityProtectionAlgorithms_constr_1, NRintegrityProtectionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h b/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h new file mode 100644 index 0000000..8b2d5cc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRintegrityProtectionAlgorithms_H_ +#define _NRintegrityProtectionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRintegrityProtectionAlgorithms */ +typedef BIT_STRING_t NRintegrityProtectionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRintegrityProtectionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRintegrityProtectionAlgorithms; +asn_struct_free_f NRintegrityProtectionAlgorithms_free; +asn_struct_print_f NRintegrityProtectionAlgorithms_print; +asn_constr_check_f NRintegrityProtectionAlgorithms_constraint; +ber_type_decoder_f NRintegrityProtectionAlgorithms_decode_ber; +der_type_encoder_f NRintegrityProtectionAlgorithms_encode_der; +xer_type_decoder_f NRintegrityProtectionAlgorithms_decode_xer; +xer_type_encoder_f NRintegrityProtectionAlgorithms_encode_xer; +per_type_decoder_f NRintegrityProtectionAlgorithms_decode_uper; +per_type_encoder_f NRintegrityProtectionAlgorithms_encode_uper; +per_type_decoder_f NRintegrityProtectionAlgorithms_decode_aper; +per_type_encoder_f NRintegrityProtectionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRintegrityProtectionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.c b/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.c new file mode 100644 index 0000000..9fab707 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRrestrictionin5GS.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRrestrictionin5GS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRrestrictionin5GS_value2enum_1[] = { + { 0, 17, "nRrestrictedin5GS" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRrestrictionin5GS_enum2value_1[] = { + 0 /* nRrestrictedin5GS(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRrestrictionin5GS_specs_1 = { + asn_MAP_NRrestrictionin5GS_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRrestrictionin5GS_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_NRrestrictionin5GS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRrestrictionin5GS = { + "NRrestrictionin5GS", + "NRrestrictionin5GS", + &asn_OP_NativeEnumerated, + asn_DEF_NRrestrictionin5GS_tags_1, + sizeof(asn_DEF_NRrestrictionin5GS_tags_1) + /sizeof(asn_DEF_NRrestrictionin5GS_tags_1[0]), /* 1 */ + asn_DEF_NRrestrictionin5GS_tags_1, /* Same as above */ + sizeof(asn_DEF_NRrestrictionin5GS_tags_1) + /sizeof(asn_DEF_NRrestrictionin5GS_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRrestrictionin5GS_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRrestrictionin5GS_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.h b/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.h new file mode 100644 index 0000000..88c2757 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRrestrictionin5GS.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRrestrictionin5GS_H_ +#define _NRrestrictionin5GS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRrestrictionin5GS { + NRrestrictionin5GS_nRrestrictedin5GS = 0 + /* + * Enumeration is extensible + */ +} e_NRrestrictionin5GS; + +/* NRrestrictionin5GS */ +typedef long NRrestrictionin5GS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRrestrictionin5GS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRrestrictionin5GS; +extern const asn_INTEGER_specifics_t asn_SPC_NRrestrictionin5GS_specs_1; +asn_struct_free_f NRrestrictionin5GS_free; +asn_struct_print_f NRrestrictionin5GS_print; +asn_constr_check_f NRrestrictionin5GS_constraint; +ber_type_decoder_f NRrestrictionin5GS_decode_ber; +der_type_encoder_f NRrestrictionin5GS_encode_der; +xer_type_decoder_f NRrestrictionin5GS_decode_xer; +xer_type_encoder_f NRrestrictionin5GS_encode_xer; +per_type_decoder_f NRrestrictionin5GS_decode_uper; +per_type_encoder_f NRrestrictionin5GS_encode_uper; +per_type_decoder_f NRrestrictionin5GS_decode_aper; +per_type_encoder_f NRrestrictionin5GS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRrestrictionin5GS_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c b/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c new file mode 100644 index 0000000..d1d93ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRrestrictioninEPSasSecondaryRAT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRrestrictioninEPSasSecondaryRAT_value2enum_1[] = { + { 0, 31, "nRrestrictedinEPSasSecondaryRAT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRrestrictioninEPSasSecondaryRAT_enum2value_1[] = { + 0 /* nRrestrictedinEPSasSecondaryRAT(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1 = { + asn_MAP_NRrestrictioninEPSasSecondaryRAT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRrestrictioninEPSasSecondaryRAT_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_NRrestrictioninEPSasSecondaryRAT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRrestrictioninEPSasSecondaryRAT = { + "NRrestrictioninEPSasSecondaryRAT", + "NRrestrictioninEPSasSecondaryRAT", + &asn_OP_NativeEnumerated, + asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1, + sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1) + /sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1[0]), /* 1 */ + asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1, /* Same as above */ + sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1) + /sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h b/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h new file mode 100644 index 0000000..d181615 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRrestrictioninEPSasSecondaryRAT_H_ +#define _NRrestrictioninEPSasSecondaryRAT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRrestrictioninEPSasSecondaryRAT { + NRrestrictioninEPSasSecondaryRAT_nRrestrictedinEPSasSecondaryRAT = 0 + /* + * Enumeration is extensible + */ +} e_NRrestrictioninEPSasSecondaryRAT; + +/* NRrestrictioninEPSasSecondaryRAT */ +typedef long NRrestrictioninEPSasSecondaryRAT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRrestrictioninEPSasSecondaryRAT; +extern const asn_INTEGER_specifics_t asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1; +asn_struct_free_f NRrestrictioninEPSasSecondaryRAT_free; +asn_struct_print_f NRrestrictioninEPSasSecondaryRAT_print; +asn_constr_check_f NRrestrictioninEPSasSecondaryRAT_constraint; +ber_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_ber; +der_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_der; +xer_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_xer; +xer_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_xer; +per_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_uper; +per_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_uper; +per_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_aper; +per_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRrestrictioninEPSasSecondaryRAT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c b/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c new file mode 100644 index 0000000..5ef3e37 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NSSS-NumOccasionDifferentPrecoder.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NSSS_NumOccasionDifferentPrecoder_value2enum_1[] = { + { 0, 3, "two" }, + { 1, 4, "four" }, + { 2, 5, "eight" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NSSS_NumOccasionDifferentPrecoder_enum2value_1[] = { + 2, /* eight(2) */ + 1, /* four(1) */ + 0 /* two(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1 = { + asn_MAP_NSSS_NumOccasionDifferentPrecoder_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NSSS_NumOccasionDifferentPrecoder_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_NSSS_NumOccasionDifferentPrecoder_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NSSS_NumOccasionDifferentPrecoder = { + "NSSS-NumOccasionDifferentPrecoder", + "NSSS-NumOccasionDifferentPrecoder", + &asn_OP_NativeEnumerated, + asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1, + sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1) + /sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1[0]), /* 1 */ + asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1, /* Same as above */ + sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1) + /sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h b/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h new file mode 100644 index 0000000..d365b09 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NSSS_NumOccasionDifferentPrecoder_H_ +#define _NSSS_NumOccasionDifferentPrecoder_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NSSS_NumOccasionDifferentPrecoder { + NSSS_NumOccasionDifferentPrecoder_two = 0, + NSSS_NumOccasionDifferentPrecoder_four = 1, + NSSS_NumOccasionDifferentPrecoder_eight = 2 + /* + * Enumeration is extensible + */ +} e_NSSS_NumOccasionDifferentPrecoder; + +/* NSSS-NumOccasionDifferentPrecoder */ +typedef long NSSS_NumOccasionDifferentPrecoder_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NSSS_NumOccasionDifferentPrecoder; +extern const asn_INTEGER_specifics_t asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1; +asn_struct_free_f NSSS_NumOccasionDifferentPrecoder_free; +asn_struct_print_f NSSS_NumOccasionDifferentPrecoder_print; +asn_constr_check_f NSSS_NumOccasionDifferentPrecoder_constraint; +ber_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_ber; +der_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_der; +xer_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_xer; +xer_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_xer; +per_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_uper; +per_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_uper; +per_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_aper; +per_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NSSS_NumOccasionDifferentPrecoder_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NULL.c b/E2Manager/asn1codec/e2ap_engine/NULL.c new file mode 100644 index 0000000..332b97e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NULL.c @@ -0,0 +1,300 @@ + +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + BOOLEAN_free, + NULL_print, + NULL_compare, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NULL_decode_oer, + NULL_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NULL_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +#ifndef ASN_DISABLE_OER_SUPPORT + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/NULL.h b/E2Manager/asn1codec/e2ap_engine/NULL.h new file mode 100644 index 0000000..196661e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NULL.h @@ -0,0 +1,46 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless: see BOOLEAN if you want to + * carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_print_f NULL_print; +asn_struct_compare_f NULL_compare; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +asn_random_fill_f NULL_random_fill; + +#define NULL_free BOOLEAN_free +#define NULL_decode_ber BOOLEAN_decode_ber +#define NULL_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.c b/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.c new file mode 100644 index 0000000..1bce30c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.c @@ -0,0 +1,368 @@ + +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct = NULL; // BMC + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct = NULL; // BMC + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct && ct->range_bits >= 0) { // BMC + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct = NULL; // BMC + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct = NULL; // BMC + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct && ct->range_bits >= 0) { // BMC + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + 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/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.h b/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.h new file mode 100644 index 0000000..ad3a5ab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NativeEnumerated.h @@ -0,0 +1,46 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/NativeInteger.c b/E2Manager/asn1codec/e2ap_engine/NativeInteger.c new file mode 100644 index 0000000..93d9858 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NativeInteger.c @@ -0,0 +1,551 @@ + +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/E2Manager/asn1codec/e2ap_engine/NativeInteger.h b/E2Manager/asn1codec/e2ap_engine/NativeInteger.h new file mode 100644 index 0000000..1c5cccf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NativeInteger.h @@ -0,0 +1,47 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.c b/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.c new file mode 100644 index 0000000..1fbe7ac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.c @@ -0,0 +1,143 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Neighbour-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_Neighbour_Information_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 0, 512 } /* (SIZE(0..512)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, pCI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, eARFCN), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eARFCN" + }, + { ATF_POINTER, 1, offsetof(struct Neighbour_Information__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P172, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pCI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct Neighbour_Information__Member), + offsetof(struct Neighbour_Information__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Neighbour_Information_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Neighbour_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_Neighbour_Information_specs_1 = { + sizeof(struct Neighbour_Information), + offsetof(struct Neighbour_Information, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Neighbour_Information = { + "Neighbour-Information", + "Neighbour-Information", + &asn_OP_SEQUENCE_OF, + asn_DEF_Neighbour_Information_tags_1, + sizeof(asn_DEF_Neighbour_Information_tags_1) + /sizeof(asn_DEF_Neighbour_Information_tags_1[0]), /* 1 */ + asn_DEF_Neighbour_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_Neighbour_Information_tags_1) + /sizeof(asn_DEF_Neighbour_Information_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Neighbour_Information_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Neighbour_Information_1, + 1, /* Single element */ + &asn_SPC_Neighbour_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.h b/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.h new file mode 100644 index 0000000..e6769c9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Neighbour-Information.h @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Neighbour_Information_H_ +#define _Neighbour_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "PCI.h" +#include "EARFCN.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct Neighbour_Information__Member { + ECGI_t eCGI; + PCI_t pCI; + EARFCN_t eARFCN; + 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; +} Neighbour_Information__Member; + +/* Neighbour-Information */ +typedef struct Neighbour_Information { + A_SEQUENCE_OF(Neighbour_Information__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Neighbour_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Neighbour_Information; +extern asn_SET_OF_specifics_t asn_SPC_Neighbour_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_Neighbour_Information_1[1]; +extern asn_per_constraints_t asn_PER_type_Neighbour_Information_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Neighbour_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.c b/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.c new file mode 100644 index 0000000..3b9d0d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NewDRBIDrequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NewDRBIDrequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NewDRBIDrequest_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NewDRBIDrequest_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NewDRBIDrequest_specs_1 = { + asn_MAP_NewDRBIDrequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NewDRBIDrequest_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_NewDRBIDrequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NewDRBIDrequest = { + "NewDRBIDrequest", + "NewDRBIDrequest", + &asn_OP_NativeEnumerated, + asn_DEF_NewDRBIDrequest_tags_1, + sizeof(asn_DEF_NewDRBIDrequest_tags_1) + /sizeof(asn_DEF_NewDRBIDrequest_tags_1[0]), /* 1 */ + asn_DEF_NewDRBIDrequest_tags_1, /* Same as above */ + sizeof(asn_DEF_NewDRBIDrequest_tags_1) + /sizeof(asn_DEF_NewDRBIDrequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NewDRBIDrequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NewDRBIDrequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.h b/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.h new file mode 100644 index 0000000..bde9b33 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NewDRBIDrequest.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NewDRBIDrequest_H_ +#define _NewDRBIDrequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NewDRBIDrequest { + NewDRBIDrequest_true = 0 + /* + * Enumeration is extensible + */ +} e_NewDRBIDrequest; + +/* NewDRBIDrequest */ +typedef long NewDRBIDrequest_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NewDRBIDrequest_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NewDRBIDrequest; +extern const asn_INTEGER_specifics_t asn_SPC_NewDRBIDrequest_specs_1; +asn_struct_free_f NewDRBIDrequest_free; +asn_struct_print_f NewDRBIDrequest_print; +asn_constr_check_f NewDRBIDrequest_constraint; +ber_type_decoder_f NewDRBIDrequest_decode_ber; +der_type_encoder_f NewDRBIDrequest_encode_der; +xer_type_decoder_f NewDRBIDrequest_decode_xer; +xer_type_encoder_f NewDRBIDrequest_encode_xer; +per_type_decoder_f NewDRBIDrequest_decode_uper; +per_type_encoder_f NewDRBIDrequest_encode_uper; +per_type_decoder_f NewDRBIDrequest_decode_aper; +per_type_encoder_f NewDRBIDrequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NewDRBIDrequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.c b/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.c new file mode 100644 index 0000000..35e51a3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NextHopChainingCount.h" + +int +NextHopChainingCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NextHopChainingCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount = { + "NextHopChainingCount", + "NextHopChainingCount", + &asn_OP_NativeInteger, + asn_DEF_NextHopChainingCount_tags_1, + sizeof(asn_DEF_NextHopChainingCount_tags_1) + /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */ + asn_DEF_NextHopChainingCount_tags_1, /* Same as above */ + sizeof(asn_DEF_NextHopChainingCount_tags_1) + /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NextHopChainingCount_constr_1, NextHopChainingCount_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.h b/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.h new file mode 100644 index 0000000..dc01560 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/NextHopChainingCount.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NextHopChainingCount_H_ +#define _NextHopChainingCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NextHopChainingCount */ +typedef long NextHopChainingCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount; +asn_struct_free_f NextHopChainingCount_free; +asn_struct_print_f NextHopChainingCount_print; +asn_constr_check_f NextHopChainingCount_constraint; +ber_type_decoder_f NextHopChainingCount_decode_ber; +der_type_encoder_f NextHopChainingCount_encode_der; +xer_type_decoder_f NextHopChainingCount_decode_xer; +xer_type_encoder_f NextHopChainingCount_encode_xer; +per_type_decoder_f NextHopChainingCount_decode_uper; +per_type_encoder_f NextHopChainingCount_encode_uper; +per_type_decoder_f NextHopChainingCount_decode_aper; +per_type_encoder_f NextHopChainingCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NextHopChainingCount_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.c b/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.c new file mode 100644 index 0000000..aa83490 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Number-of-Antennaports.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Number_of_Antennaports_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Number_of_Antennaports_value2enum_1[] = { + { 0, 3, "an1" }, + { 1, 3, "an2" }, + { 2, 3, "an4" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Number_of_Antennaports_enum2value_1[] = { + 0, /* an1(0) */ + 1, /* an2(1) */ + 2 /* an4(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Number_of_Antennaports_specs_1 = { + asn_MAP_Number_of_Antennaports_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Number_of_Antennaports_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_Number_of_Antennaports_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Number_of_Antennaports = { + "Number-of-Antennaports", + "Number-of-Antennaports", + &asn_OP_NativeEnumerated, + asn_DEF_Number_of_Antennaports_tags_1, + sizeof(asn_DEF_Number_of_Antennaports_tags_1) + /sizeof(asn_DEF_Number_of_Antennaports_tags_1[0]), /* 1 */ + asn_DEF_Number_of_Antennaports_tags_1, /* Same as above */ + sizeof(asn_DEF_Number_of_Antennaports_tags_1) + /sizeof(asn_DEF_Number_of_Antennaports_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Number_of_Antennaports_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Number_of_Antennaports_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.h b/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.h new file mode 100644 index 0000000..d8a7b53 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Number-of-Antennaports.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Number_of_Antennaports_H_ +#define _Number_of_Antennaports_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Number_of_Antennaports { + Number_of_Antennaports_an1 = 0, + Number_of_Antennaports_an2 = 1, + Number_of_Antennaports_an4 = 2 + /* + * Enumeration is extensible + */ +} e_Number_of_Antennaports; + +/* Number-of-Antennaports */ +typedef long Number_of_Antennaports_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Number_of_Antennaports_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Number_of_Antennaports; +extern const asn_INTEGER_specifics_t asn_SPC_Number_of_Antennaports_specs_1; +asn_struct_free_f Number_of_Antennaports_free; +asn_struct_print_f Number_of_Antennaports_print; +asn_constr_check_f Number_of_Antennaports_constraint; +ber_type_decoder_f Number_of_Antennaports_decode_ber; +der_type_encoder_f Number_of_Antennaports_encode_der; +xer_type_decoder_f Number_of_Antennaports_decode_xer; +xer_type_encoder_f Number_of_Antennaports_encode_xer; +per_type_decoder_f Number_of_Antennaports_decode_uper; +per_type_encoder_f Number_of_Antennaports_encode_uper; +per_type_decoder_f Number_of_Antennaports_decode_aper; +per_type_encoder_f Number_of_Antennaports_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Number_of_Antennaports_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c b/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000..94c91fc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c @@ -0,0 +1,657 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, + OBJECT_IDENTIFIER_print, + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ + ber_decode_primitive, + der_encode_primitive, + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OBJECT_IDENTIFIER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { 0, 0, OBJECT_IDENTIFIER_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +static ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0, arc1; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0, arc1; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h b/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000..5c70aac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h @@ -0,0 +1,157 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +asn_struct_print_f OBJECT_IDENTIFIER_print; +asn_constr_check_f OBJECT_IDENTIFIER_constraint; +der_type_encoder_f OBJECT_IDENTIFIER_encode_der; +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.c b/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.c new file mode 100644 index 0000000..cb0c779 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.c @@ -0,0 +1,2410 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.h b/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.h new file mode 100644 index 0000000..4e9877d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OCTET_STRING.h @@ -0,0 +1,103 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.c b/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.c new file mode 100644 index 0000000..3e7d785 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.c @@ -0,0 +1,510 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.h b/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.h new file mode 100644 index 0000000..55c961f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OPEN_TYPE.h @@ -0,0 +1,78 @@ + +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c b/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c new file mode 100644 index 0000000..6a163ef --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "OffsetOfNbiotChannelNumberToEARFCN.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 20 } /* (0..20,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_value2enum_1[] = { + { 0, 8, "minusTen" }, + { 1, 9, "minusNine" }, + { 2, 10, "minusEight" }, + { 3, 10, "minusSeven" }, + { 4, 8, "minusSix" }, + { 5, 9, "minusFive" }, + { 6, 9, "minusFour" }, + { 7, 10, "minusThree" }, + { 8, 8, "minusTwo" }, + { 9, 8, "minusOne" }, + { 10, 16, "minusZeroDotFive" }, + { 11, 4, "zero" }, + { 12, 3, "one" }, + { 13, 3, "two" }, + { 14, 5, "three" }, + { 15, 4, "four" }, + { 16, 4, "five" }, + { 17, 3, "six" }, + { 18, 5, "seven" }, + { 19, 5, "eight" }, + { 20, 4, "nine" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_enum2value_1[] = { + 19, /* eight(19) */ + 16, /* five(16) */ + 15, /* four(15) */ + 2, /* minusEight(2) */ + 5, /* minusFive(5) */ + 6, /* minusFour(6) */ + 1, /* minusNine(1) */ + 9, /* minusOne(9) */ + 3, /* minusSeven(3) */ + 4, /* minusSix(4) */ + 0, /* minusTen(0) */ + 7, /* minusThree(7) */ + 8, /* minusTwo(8) */ + 10, /* minusZeroDotFive(10) */ + 20, /* nine(20) */ + 12, /* one(12) */ + 18, /* seven(18) */ + 17, /* six(17) */ + 14, /* three(14) */ + 13, /* two(13) */ + 11 /* zero(11) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1 = { + asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_enum2value_1, /* N => "tag"; sorted by N */ + 21, /* Number of elements in the maps */ + 22, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN = { + "OffsetOfNbiotChannelNumberToEARFCN", + "OffsetOfNbiotChannelNumberToEARFCN", + &asn_OP_NativeEnumerated, + asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1, + sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1) + /sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[0]), /* 1 */ + asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1) + /sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h b/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h new file mode 100644 index 0000000..b8b1010 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _OffsetOfNbiotChannelNumberToEARFCN_H_ +#define _OffsetOfNbiotChannelNumberToEARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum OffsetOfNbiotChannelNumberToEARFCN { + OffsetOfNbiotChannelNumberToEARFCN_minusTen = 0, + OffsetOfNbiotChannelNumberToEARFCN_minusNine = 1, + OffsetOfNbiotChannelNumberToEARFCN_minusEight = 2, + OffsetOfNbiotChannelNumberToEARFCN_minusSeven = 3, + OffsetOfNbiotChannelNumberToEARFCN_minusSix = 4, + OffsetOfNbiotChannelNumberToEARFCN_minusFive = 5, + OffsetOfNbiotChannelNumberToEARFCN_minusFour = 6, + OffsetOfNbiotChannelNumberToEARFCN_minusThree = 7, + OffsetOfNbiotChannelNumberToEARFCN_minusTwo = 8, + OffsetOfNbiotChannelNumberToEARFCN_minusOne = 9, + OffsetOfNbiotChannelNumberToEARFCN_minusZeroDotFive = 10, + OffsetOfNbiotChannelNumberToEARFCN_zero = 11, + OffsetOfNbiotChannelNumberToEARFCN_one = 12, + OffsetOfNbiotChannelNumberToEARFCN_two = 13, + OffsetOfNbiotChannelNumberToEARFCN_three = 14, + OffsetOfNbiotChannelNumberToEARFCN_four = 15, + OffsetOfNbiotChannelNumberToEARFCN_five = 16, + OffsetOfNbiotChannelNumberToEARFCN_six = 17, + OffsetOfNbiotChannelNumberToEARFCN_seven = 18, + OffsetOfNbiotChannelNumberToEARFCN_eight = 19, + OffsetOfNbiotChannelNumberToEARFCN_nine = 20 + /* + * Enumeration is extensible + */ +} e_OffsetOfNbiotChannelNumberToEARFCN; + +/* OffsetOfNbiotChannelNumberToEARFCN */ +typedef long OffsetOfNbiotChannelNumberToEARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN; +extern const asn_INTEGER_specifics_t asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1; +asn_struct_free_f OffsetOfNbiotChannelNumberToEARFCN_free; +asn_struct_print_f OffsetOfNbiotChannelNumberToEARFCN_print; +asn_constr_check_f OffsetOfNbiotChannelNumberToEARFCN_constraint; +ber_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_ber; +der_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_der; +xer_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_xer; +xer_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_xer; +per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_uper; +per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_uper; +per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_aper; +per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetOfNbiotChannelNumberToEARFCN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.c b/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.c new file mode 100644 index 0000000..dbe4177 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Old-ECGIs.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_Old_ECGIs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Old_ECGIs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Old_ECGIs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Old_ECGIs_specs_1 = { + sizeof(struct Old_ECGIs), + offsetof(struct Old_ECGIs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Old_ECGIs = { + "Old-ECGIs", + "Old-ECGIs", + &asn_OP_SEQUENCE_OF, + asn_DEF_Old_ECGIs_tags_1, + sizeof(asn_DEF_Old_ECGIs_tags_1) + /sizeof(asn_DEF_Old_ECGIs_tags_1[0]), /* 1 */ + asn_DEF_Old_ECGIs_tags_1, /* Same as above */ + sizeof(asn_DEF_Old_ECGIs_tags_1) + /sizeof(asn_DEF_Old_ECGIs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Old_ECGIs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Old_ECGIs_1, + 1, /* Single element */ + &asn_SPC_Old_ECGIs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.h b/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.h new file mode 100644 index 0000000..d513949 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Old-ECGIs.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Old_ECGIs_H_ +#define _Old_ECGIs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* Old-ECGIs */ +typedef struct Old_ECGIs { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Old_ECGIs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Old_ECGIs; + +#ifdef __cplusplus +} +#endif + +#endif /* _Old_ECGIs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Oneframe.c b/E2Manager/asn1codec/e2ap_engine/Oneframe.c new file mode 100644 index 0000000..00a7129 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Oneframe.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Oneframe.h" + +int +Oneframe_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_Oneframe_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Oneframe_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Oneframe = { + "Oneframe", + "Oneframe", + &asn_OP_BIT_STRING, + asn_DEF_Oneframe_tags_1, + sizeof(asn_DEF_Oneframe_tags_1) + /sizeof(asn_DEF_Oneframe_tags_1[0]), /* 1 */ + asn_DEF_Oneframe_tags_1, /* Same as above */ + sizeof(asn_DEF_Oneframe_tags_1) + /sizeof(asn_DEF_Oneframe_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Oneframe_constr_1, Oneframe_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Oneframe.h b/E2Manager/asn1codec/e2ap_engine/Oneframe.h new file mode 100644 index 0000000..fdd822d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Oneframe.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Oneframe_H_ +#define _Oneframe_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Oneframe */ +typedef BIT_STRING_t Oneframe_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Oneframe_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Oneframe; +asn_struct_free_f Oneframe_free; +asn_struct_print_f Oneframe_print; +asn_constr_check_f Oneframe_constraint; +ber_type_decoder_f Oneframe_decode_ber; +der_type_encoder_f Oneframe_encode_der; +xer_type_decoder_f Oneframe_decode_xer; +xer_type_encoder_f Oneframe_encode_xer; +per_type_decoder_f Oneframe_decode_uper; +per_type_encoder_f Oneframe_encode_uper; +per_type_decoder_f Oneframe_decode_aper; +per_type_encoder_f Oneframe_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Oneframe_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PA-Values.c b/E2Manager/asn1codec/e2ap_engine/PA-Values.c new file mode 100644 index 0000000..57c30b2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PA-Values.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PA-Values.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PA_Values_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PA_Values_value2enum_1[] = { + { 0, 4, "dB-6" }, + { 1, 9, "dB-4dot77" }, + { 2, 4, "dB-3" }, + { 3, 9, "dB-1dot77" }, + { 4, 3, "dB0" }, + { 5, 3, "dB1" }, + { 6, 3, "dB2" }, + { 7, 3, "dB3" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PA_Values_enum2value_1[] = { + 3, /* dB-1dot77(3) */ + 2, /* dB-3(2) */ + 1, /* dB-4dot77(1) */ + 0, /* dB-6(0) */ + 4, /* dB0(4) */ + 5, /* dB1(5) */ + 6, /* dB2(6) */ + 7 /* dB3(7) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PA_Values_specs_1 = { + asn_MAP_PA_Values_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PA_Values_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_PA_Values_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PA_Values = { + "PA-Values", + "PA-Values", + &asn_OP_NativeEnumerated, + asn_DEF_PA_Values_tags_1, + sizeof(asn_DEF_PA_Values_tags_1) + /sizeof(asn_DEF_PA_Values_tags_1[0]), /* 1 */ + asn_DEF_PA_Values_tags_1, /* Same as above */ + sizeof(asn_DEF_PA_Values_tags_1) + /sizeof(asn_DEF_PA_Values_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PA_Values_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PA_Values_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PA-Values.h b/E2Manager/asn1codec/e2ap_engine/PA-Values.h new file mode 100644 index 0000000..02951a0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PA-Values.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PA_Values_H_ +#define _PA_Values_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PA_Values { + PA_Values_dB_6 = 0, + PA_Values_dB_4dot77 = 1, + PA_Values_dB_3 = 2, + PA_Values_dB_1dot77 = 3, + PA_Values_dB0 = 4, + PA_Values_dB1 = 5, + PA_Values_dB2 = 6, + PA_Values_dB3 = 7 + /* + * Enumeration is extensible + */ +} e_PA_Values; + +/* PA-Values */ +typedef long PA_Values_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PA_Values_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PA_Values; +extern const asn_INTEGER_specifics_t asn_SPC_PA_Values_specs_1; +asn_struct_free_f PA_Values_free; +asn_struct_print_f PA_Values_print; +asn_constr_check_f PA_Values_constraint; +ber_type_decoder_f PA_Values_decode_ber; +der_type_encoder_f PA_Values_encode_der; +xer_type_decoder_f PA_Values_decode_xer; +xer_type_encoder_f PA_Values_encode_xer; +per_type_decoder_f PA_Values_decode_uper; +per_type_encoder_f PA_Values_encode_uper; +per_type_decoder_f PA_Values_decode_aper; +per_type_encoder_f PA_Values_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PA_Values_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PCI.c b/E2Manager/asn1codec/e2ap_engine/PCI.c new file mode 100644 index 0000000..9010d7d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PCI.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PCI.h" + +int +PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 503)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_PCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 0, 503 } /* (0..503,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PCI = { + "PCI", + "PCI", + &asn_OP_NativeInteger, + asn_DEF_PCI_tags_1, + sizeof(asn_DEF_PCI_tags_1) + /sizeof(asn_DEF_PCI_tags_1[0]), /* 1 */ + asn_DEF_PCI_tags_1, /* Same as above */ + sizeof(asn_DEF_PCI_tags_1) + /sizeof(asn_DEF_PCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PCI_constr_1, PCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PCI.h b/E2Manager/asn1codec/e2ap_engine/PCI.h new file mode 100644 index 0000000..c4d398f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PCI.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PCI_H_ +#define _PCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PCI */ +typedef long PCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PCI; +asn_struct_free_f PCI_free; +asn_struct_print_f PCI_print; +asn_constr_check_f PCI_constraint; +ber_type_decoder_f PCI_decode_ber; +der_type_encoder_f PCI_encode_der; +xer_type_decoder_f PCI_decode_xer; +xer_type_encoder_f PCI_encode_xer; +per_type_decoder_f PCI_decode_uper; +per_type_encoder_f PCI_encode_uper; +per_type_decoder_f PCI_decode_aper; +per_type_encoder_f PCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PCI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SN.c b/E2Manager/asn1codec/e2ap_engine/PDCP-SN.c new file mode 100644 index 0000000..7a63443 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SN.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SN.h" + +int +PDCP_SN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SN = { + "PDCP-SN", + "PDCP-SN", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SN_tags_1, + sizeof(asn_DEF_PDCP_SN_tags_1) + /sizeof(asn_DEF_PDCP_SN_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SN_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SN_tags_1) + /sizeof(asn_DEF_PDCP_SN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SN_constr_1, PDCP_SN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SN.h b/E2Manager/asn1codec/e2ap_engine/PDCP-SN.h new file mode 100644 index 0000000..694cc94 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SN.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SN_H_ +#define _PDCP_SN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SN */ +typedef long PDCP_SN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SN; +asn_struct_free_f PDCP_SN_free; +asn_struct_print_f PDCP_SN_print; +asn_constr_check_f PDCP_SN_constraint; +ber_type_decoder_f PDCP_SN_decode_ber; +der_type_encoder_f PDCP_SN_encode_der; +xer_type_decoder_f PDCP_SN_decode_xer; +xer_type_encoder_f PDCP_SN_encode_xer; +per_type_decoder_f PDCP_SN_decode_uper; +per_type_encoder_f PDCP_SN_encode_uper; +per_type_decoder_f PDCP_SN_decode_aper; +per_type_encoder_f PDCP_SN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.c b/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.c new file mode 100644 index 0000000..a540399 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SNExtended.h" + +int +PDCP_SNExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SNExtended_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SNExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SNExtended = { + "PDCP-SNExtended", + "PDCP-SNExtended", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SNExtended_tags_1, + sizeof(asn_DEF_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_PDCP_SNExtended_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SNExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_PDCP_SNExtended_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SNExtended_constr_1, PDCP_SNExtended_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.h b/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.h new file mode 100644 index 0000000..449bebc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SNExtended.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SNExtended_H_ +#define _PDCP_SNExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SNExtended */ +typedef long PDCP_SNExtended_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SNExtended_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SNExtended; +asn_struct_free_f PDCP_SNExtended_free; +asn_struct_print_f PDCP_SNExtended_print; +asn_constr_check_f PDCP_SNExtended_constraint; +ber_type_decoder_f PDCP_SNExtended_decode_ber; +der_type_encoder_f PDCP_SNExtended_encode_der; +xer_type_decoder_f PDCP_SNExtended_decode_xer; +xer_type_encoder_f PDCP_SNExtended_encode_xer; +per_type_decoder_f PDCP_SNExtended_decode_uper; +per_type_encoder_f PDCP_SNExtended_encode_uper; +per_type_decoder_f PDCP_SNExtended_decode_aper; +per_type_encoder_f PDCP_SNExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SNExtended_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.c b/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.c new file mode 100644 index 0000000..da76611 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SNlength18.h" + +int +PDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, 0, 262143 } /* (0..262143) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SNlength18 = { + "PDCP-SNlength18", + "PDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SNlength18_tags_1, + sizeof(asn_DEF_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_PDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_PDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SNlength18_constr_1, PDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.h b/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.h new file mode 100644 index 0000000..b068af6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCP-SNlength18.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SNlength18_H_ +#define _PDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SNlength18 */ +typedef long PDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SNlength18; +asn_struct_free_f PDCP_SNlength18_free; +asn_struct_print_f PDCP_SNlength18_print; +asn_constr_check_f PDCP_SNlength18_constraint; +ber_type_decoder_f PDCP_SNlength18_decode_ber; +der_type_encoder_f PDCP_SNlength18_encode_der; +xer_type_decoder_f PDCP_SNlength18_decode_xer; +xer_type_encoder_f PDCP_SNlength18_encode_xer; +per_type_decoder_f PDCP_SNlength18_decode_uper; +per_type_encoder_f PDCP_SNlength18_encode_uper; +per_type_decoder_f PDCP_SNlength18_decode_aper; +per_type_encoder_f PDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.c b/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.c new file mode 100644 index 0000000..d57d3a4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCPChangeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCPChangeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PDCPChangeIndication_value2enum_1[] = { + { 0, 22, "s-KgNB-update-required" }, + { 1, 27, "pDCP-data-recovery-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PDCPChangeIndication_enum2value_1[] = { + 1, /* pDCP-data-recovery-required(1) */ + 0 /* s-KgNB-update-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PDCPChangeIndication_specs_1 = { + asn_MAP_PDCPChangeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PDCPChangeIndication_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_PDCPChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCPChangeIndication = { + "PDCPChangeIndication", + "PDCPChangeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_PDCPChangeIndication_tags_1, + sizeof(asn_DEF_PDCPChangeIndication_tags_1) + /sizeof(asn_DEF_PDCPChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_PDCPChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCPChangeIndication_tags_1) + /sizeof(asn_DEF_PDCPChangeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCPChangeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PDCPChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.h b/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.h new file mode 100644 index 0000000..b436823 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCPChangeIndication.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCPChangeIndication_H_ +#define _PDCPChangeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PDCPChangeIndication { + PDCPChangeIndication_s_KgNB_update_required = 0, + PDCPChangeIndication_pDCP_data_recovery_required = 1 + /* + * Enumeration is extensible + */ +} e_PDCPChangeIndication; + +/* PDCPChangeIndication */ +typedef long PDCPChangeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCPChangeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCPChangeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_PDCPChangeIndication_specs_1; +asn_struct_free_f PDCPChangeIndication_free; +asn_struct_print_f PDCPChangeIndication_print; +asn_constr_check_f PDCPChangeIndication_constraint; +ber_type_decoder_f PDCPChangeIndication_decode_ber; +der_type_encoder_f PDCPChangeIndication_encode_der; +xer_type_decoder_f PDCPChangeIndication_decode_xer; +xer_type_encoder_f PDCPChangeIndication_encode_xer; +per_type_decoder_f PDCPChangeIndication_decode_uper; +per_type_encoder_f PDCPChangeIndication_encode_uper; +per_type_decoder_f PDCPChangeIndication_decode_aper; +per_type_encoder_f PDCPChangeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCPChangeIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.c b/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.c new file mode 100644 index 0000000..2460e0e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCPSnLength.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCPSnLength_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PDCPSnLength_value2enum_1[] = { + { 0, 11, "twelve-bits" }, + { 1, 13, "eighteen-bits" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PDCPSnLength_enum2value_1[] = { + 1, /* eighteen-bits(1) */ + 0 /* twelve-bits(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PDCPSnLength_specs_1 = { + asn_MAP_PDCPSnLength_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PDCPSnLength_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_PDCPSnLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCPSnLength = { + "PDCPSnLength", + "PDCPSnLength", + &asn_OP_NativeEnumerated, + asn_DEF_PDCPSnLength_tags_1, + sizeof(asn_DEF_PDCPSnLength_tags_1) + /sizeof(asn_DEF_PDCPSnLength_tags_1[0]), /* 1 */ + asn_DEF_PDCPSnLength_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCPSnLength_tags_1) + /sizeof(asn_DEF_PDCPSnLength_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCPSnLength_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PDCPSnLength_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.h b/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.h new file mode 100644 index 0000000..f7a4a9e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PDCPSnLength.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCPSnLength_H_ +#define _PDCPSnLength_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PDCPSnLength { + PDCPSnLength_twelve_bits = 0, + PDCPSnLength_eighteen_bits = 1 + /* + * Enumeration is extensible + */ +} e_PDCPSnLength; + +/* PDCPSnLength */ +typedef long PDCPSnLength_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCPSnLength_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCPSnLength; +extern const asn_INTEGER_specifics_t asn_SPC_PDCPSnLength_specs_1; +asn_struct_free_f PDCPSnLength_free; +asn_struct_print_f PDCPSnLength_print; +asn_constr_check_f PDCPSnLength_constraint; +ber_type_decoder_f PDCPSnLength_decode_ber; +der_type_encoder_f PDCPSnLength_encode_der; +xer_type_decoder_f PDCPSnLength_decode_xer; +xer_type_encoder_f PDCPSnLength_encode_xer; +per_type_decoder_f PDCPSnLength_decode_uper; +per_type_encoder_f PDCPSnLength_encode_uper; +per_type_decoder_f PDCPSnLength_decode_aper; +per_type_encoder_f PDCPSnLength_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCPSnLength_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.c b/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.c new file mode 100644 index 0000000..10b0130 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.h b/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.h new file mode 100644 index 0000000..b75b0e4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMN-Identity.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c b/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c new file mode 100644 index 0000000..4154659 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMNAreaBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC, plmnListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmnListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct PLMNAreaBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P178, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_PLMNAreaBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_PLMNAreaBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PLMNAreaBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmnListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_specs_1 = { + sizeof(struct PLMNAreaBasedQMC), + offsetof(struct PLMNAreaBasedQMC, _asn_ctx), + asn_MAP_PLMNAreaBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_PLMNAreaBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC = { + "PLMNAreaBasedQMC", + "PLMNAreaBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_PLMNAreaBasedQMC_tags_1, + sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1) + /sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_PLMNAreaBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1) + /sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PLMNAreaBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_PLMNAreaBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h b/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h new file mode 100644 index 0000000..ff8d24b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMNAreaBasedQMC_H_ +#define _PLMNAreaBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* PLMNAreaBasedQMC */ +typedef struct PLMNAreaBasedQMC { + PLMNListforQMC_t plmnListforQMC; + 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; +} PLMNAreaBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNAreaBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.c b/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.c new file mode 100644 index 0000000..dbbaaf2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMNListforQMC.h" + +asn_per_constraints_t asn_PER_type_PLMNListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PLMNListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PLMNListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PLMNListforQMC_specs_1 = { + sizeof(struct PLMNListforQMC), + offsetof(struct PLMNListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNListforQMC = { + "PLMNListforQMC", + "PLMNListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_PLMNListforQMC_tags_1, + sizeof(asn_DEF_PLMNListforQMC_tags_1) + /sizeof(asn_DEF_PLMNListforQMC_tags_1[0]), /* 1 */ + asn_DEF_PLMNListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNListforQMC_tags_1) + /sizeof(asn_DEF_PLMNListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMNListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_PLMNListforQMC_1, + 1, /* Single element */ + &asn_SPC_PLMNListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.h b/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.h new file mode 100644 index 0000000..0c60b15 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PLMNListforQMC.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMNListforQMC_H_ +#define _PLMNListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMNListforQMC */ +typedef struct PLMNListforQMC { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PLMNListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PLMNListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_PLMNListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_PLMNListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_PLMNListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNListforQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.c b/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.c new file mode 100644 index 0000000..f8ce03a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.c @@ -0,0 +1,242 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PRACH-Configuration.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_rootSequenceIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 837)) { + /* 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_zeroCorrelationIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_prach_FreqOffset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 94)) { + /* 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_prach_ConfigIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 63)) { + /* 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_rootSequenceIndex_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 837 } /* (0..837) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_zeroCorrelationIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_prach_FreqOffset_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 94 } /* (0..94) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_prach_ConfigIndex_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PRACH_Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, rootSequenceIndex), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rootSequenceIndex_constr_2, memb_rootSequenceIndex_constraint_1 }, + 0, 0, /* No default value */ + "rootSequenceIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, zeroCorrelationIndex), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_zeroCorrelationIndex_constr_3, memb_zeroCorrelationIndex_constraint_1 }, + 0, 0, /* No default value */ + "zeroCorrelationIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, highSpeedFlag), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "highSpeedFlag" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, prach_FreqOffset), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_prach_FreqOffset_constr_5, memb_prach_FreqOffset_constraint_1 }, + 0, 0, /* No default value */ + "prach-FreqOffset" + }, + { ATF_POINTER, 2, offsetof(struct PRACH_Configuration, prach_ConfigIndex), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_prach_ConfigIndex_constr_6, memb_prach_ConfigIndex_constraint_1 }, + 0, 0, /* No default value */ + "prach-ConfigIndex" + }, + { ATF_POINTER, 1, offsetof(struct PRACH_Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P177, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_PRACH_Configuration_oms_1[] = { 4, 5 }; +static const ber_tlv_tag_t asn_DEF_PRACH_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PRACH_Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rootSequenceIndex */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* zeroCorrelationIndex */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* highSpeedFlag */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* prach-FreqOffset */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* prach-ConfigIndex */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_specs_1 = { + sizeof(struct PRACH_Configuration), + offsetof(struct PRACH_Configuration, _asn_ctx), + asn_MAP_PRACH_Configuration_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_PRACH_Configuration_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration = { + "PRACH-Configuration", + "PRACH-Configuration", + &asn_OP_SEQUENCE, + asn_DEF_PRACH_Configuration_tags_1, + sizeof(asn_DEF_PRACH_Configuration_tags_1) + /sizeof(asn_DEF_PRACH_Configuration_tags_1[0]), /* 1 */ + asn_DEF_PRACH_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_PRACH_Configuration_tags_1) + /sizeof(asn_DEF_PRACH_Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PRACH_Configuration_1, + 6, /* Elements count */ + &asn_SPC_PRACH_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.h b/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.h new file mode 100644 index 0000000..ecfb763 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PRACH-Configuration.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PRACH_Configuration_H_ +#define _PRACH_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* PRACH-Configuration */ +typedef struct PRACH_Configuration { + long rootSequenceIndex; + long zeroCorrelationIndex; + BOOLEAN_t highSpeedFlag; + long prach_FreqOffset; + long *prach_ConfigIndex; /* 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; +} PRACH_Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_PRACH_Configuration_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PRACH_Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.c b/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.c new file mode 100644 index 0000000..ee30fed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Packet-LossRate.h" + +int +Packet_LossRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1000)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_Packet_LossRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1000 } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Packet_LossRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Packet_LossRate = { + "Packet-LossRate", + "Packet-LossRate", + &asn_OP_NativeInteger, + asn_DEF_Packet_LossRate_tags_1, + sizeof(asn_DEF_Packet_LossRate_tags_1) + /sizeof(asn_DEF_Packet_LossRate_tags_1[0]), /* 1 */ + asn_DEF_Packet_LossRate_tags_1, /* Same as above */ + sizeof(asn_DEF_Packet_LossRate_tags_1) + /sizeof(asn_DEF_Packet_LossRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Packet_LossRate_constr_1, Packet_LossRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.h b/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.h new file mode 100644 index 0000000..a77bdfc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Packet-LossRate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Packet_LossRate_H_ +#define _Packet_LossRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Packet-LossRate */ +typedef long Packet_LossRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Packet_LossRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Packet_LossRate; +asn_struct_free_f Packet_LossRate_free; +asn_struct_print_f Packet_LossRate_print; +asn_constr_check_f Packet_LossRate_constraint; +ber_type_decoder_f Packet_LossRate_decode_ber; +der_type_encoder_f Packet_LossRate_encode_der; +xer_type_decoder_f Packet_LossRate_decode_xer; +xer_type_encoder_f Packet_LossRate_encode_xer; +per_type_decoder_f Packet_LossRate_decode_uper; +per_type_encoder_f Packet_LossRate_encode_uper; +per_type_decoder_f Packet_LossRate_decode_aper; +per_type_encoder_f Packet_LossRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Packet_LossRate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.c b/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.c new file mode 100644 index 0000000..ccc9ee4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PartialSuccessIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_PartialSuccessIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PartialSuccessIndicator_value2enum_1[] = { + { 0, 23, "partial-success-allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PartialSuccessIndicator_enum2value_1[] = { + 0 /* partial-success-allowed(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_PartialSuccessIndicator_specs_1 = { + asn_MAP_PartialSuccessIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PartialSuccessIndicator_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_PartialSuccessIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PartialSuccessIndicator = { + "PartialSuccessIndicator", + "PartialSuccessIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_PartialSuccessIndicator_tags_1, + sizeof(asn_DEF_PartialSuccessIndicator_tags_1) + /sizeof(asn_DEF_PartialSuccessIndicator_tags_1[0]), /* 1 */ + asn_DEF_PartialSuccessIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_PartialSuccessIndicator_tags_1) + /sizeof(asn_DEF_PartialSuccessIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PartialSuccessIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PartialSuccessIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.h b/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.h new file mode 100644 index 0000000..998a869 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PartialSuccessIndicator.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PartialSuccessIndicator_H_ +#define _PartialSuccessIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PartialSuccessIndicator { + PartialSuccessIndicator_partial_success_allowed = 0 + /* + * Enumeration is extensible + */ +} e_PartialSuccessIndicator; + +/* PartialSuccessIndicator */ +typedef long PartialSuccessIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PartialSuccessIndicator; +asn_struct_free_f PartialSuccessIndicator_free; +asn_struct_print_f PartialSuccessIndicator_print; +asn_constr_check_f PartialSuccessIndicator_constraint; +ber_type_decoder_f PartialSuccessIndicator_decode_ber; +der_type_encoder_f PartialSuccessIndicator_encode_der; +xer_type_decoder_f PartialSuccessIndicator_decode_xer; +xer_type_encoder_f PartialSuccessIndicator_encode_xer; +per_type_decoder_f PartialSuccessIndicator_decode_uper; +per_type_encoder_f PartialSuccessIndicator_encode_uper; +per_type_decoder_f PartialSuccessIndicator_decode_aper; +per_type_encoder_f PartialSuccessIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PartialSuccessIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PedestrianUE.c b/E2Manager/asn1codec/e2ap_engine/PedestrianUE.c new file mode 100644 index 0000000..a1a5976 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PedestrianUE.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PedestrianUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PedestrianUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PedestrianUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PedestrianUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PedestrianUE_specs_1 = { + asn_MAP_PedestrianUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PedestrianUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PedestrianUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PedestrianUE = { + "PedestrianUE", + "PedestrianUE", + &asn_OP_NativeEnumerated, + asn_DEF_PedestrianUE_tags_1, + sizeof(asn_DEF_PedestrianUE_tags_1) + /sizeof(asn_DEF_PedestrianUE_tags_1[0]), /* 1 */ + asn_DEF_PedestrianUE_tags_1, /* Same as above */ + sizeof(asn_DEF_PedestrianUE_tags_1) + /sizeof(asn_DEF_PedestrianUE_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PedestrianUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PedestrianUE_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PedestrianUE.h b/E2Manager/asn1codec/e2ap_engine/PedestrianUE.h new file mode 100644 index 0000000..805ca66 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PedestrianUE.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PedestrianUE_H_ +#define _PedestrianUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PedestrianUE { + PedestrianUE_authorized = 0, + PedestrianUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_PedestrianUE; + +/* PedestrianUE */ +typedef long PedestrianUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PedestrianUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PedestrianUE; +extern const asn_INTEGER_specifics_t asn_SPC_PedestrianUE_specs_1; +asn_struct_free_f PedestrianUE_free; +asn_struct_print_f PedestrianUE_print; +asn_constr_check_f PedestrianUE_constraint; +ber_type_decoder_f PedestrianUE_decode_ber; +der_type_encoder_f PedestrianUE_encode_der; +xer_type_decoder_f PedestrianUE_decode_xer; +xer_type_encoder_f PedestrianUE_encode_xer; +per_type_decoder_f PedestrianUE_decode_uper; +per_type_encoder_f PedestrianUE_encode_uper; +per_type_decoder_f PedestrianUE_decode_aper; +per_type_encoder_f PedestrianUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PedestrianUE_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Port-Number.c b/E2Manager/asn1codec/e2ap_engine/Port-Number.c new file mode 100644 index 0000000..c5aa7fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Port-Number.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Port-Number.h" + +int +Port_Number_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Port_Number_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Port_Number_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Port_Number = { + "Port-Number", + "Port-Number", + &asn_OP_OCTET_STRING, + asn_DEF_Port_Number_tags_1, + sizeof(asn_DEF_Port_Number_tags_1) + /sizeof(asn_DEF_Port_Number_tags_1[0]), /* 1 */ + asn_DEF_Port_Number_tags_1, /* Same as above */ + sizeof(asn_DEF_Port_Number_tags_1) + /sizeof(asn_DEF_Port_Number_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Port_Number_constr_1, Port_Number_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Port-Number.h b/E2Manager/asn1codec/e2ap_engine/Port-Number.h new file mode 100644 index 0000000..401a1b6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Port-Number.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Port_Number_H_ +#define _Port_Number_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Port-Number */ +typedef OCTET_STRING_t Port_Number_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Port_Number_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Port_Number; +asn_struct_free_f Port_Number_free; +asn_struct_print_f Port_Number_print; +asn_constr_check_f Port_Number_constraint; +ber_type_decoder_f Port_Number_decode_ber; +der_type_encoder_f Port_Number_encode_der; +xer_type_decoder_f Port_Number_decode_xer; +xer_type_encoder_f Port_Number_encode_xer; +per_type_decoder_f Port_Number_decode_uper; +per_type_encoder_f Port_Number_encode_uper; +per_type_decoder_f Port_Number_decode_aper; +per_type_encoder_f Port_Number_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Port_Number_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.c b/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.c new file mode 100644 index 0000000..36e0505 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Pre-emptionCapability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Pre_emptionCapability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Pre_emptionCapability_value2enum_1[] = { + { 0, 29, "shall-not-trigger-pre-emption" }, + { 1, 23, "may-trigger-pre-emption" } +}; +static const unsigned int asn_MAP_Pre_emptionCapability_enum2value_1[] = { + 1, /* may-trigger-pre-emption(1) */ + 0 /* shall-not-trigger-pre-emption(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Pre_emptionCapability_specs_1 = { + asn_MAP_Pre_emptionCapability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_Pre_emptionCapability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Pre_emptionCapability = { + "Pre-emptionCapability", + "Pre-emptionCapability", + &asn_OP_NativeEnumerated, + asn_DEF_Pre_emptionCapability_tags_1, + sizeof(asn_DEF_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_Pre_emptionCapability_tags_1[0]), /* 1 */ + asn_DEF_Pre_emptionCapability_tags_1, /* Same as above */ + sizeof(asn_DEF_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_Pre_emptionCapability_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Pre_emptionCapability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Pre_emptionCapability_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.h b/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.h new file mode 100644 index 0000000..2fd810a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Pre-emptionCapability.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Pre_emptionCapability_H_ +#define _Pre_emptionCapability_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Pre_emptionCapability { + Pre_emptionCapability_shall_not_trigger_pre_emption = 0, + Pre_emptionCapability_may_trigger_pre_emption = 1 +} e_Pre_emptionCapability; + +/* Pre-emptionCapability */ +typedef long Pre_emptionCapability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Pre_emptionCapability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Pre_emptionCapability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionCapability_specs_1; +asn_struct_free_f Pre_emptionCapability_free; +asn_struct_print_f Pre_emptionCapability_print; +asn_constr_check_f Pre_emptionCapability_constraint; +ber_type_decoder_f Pre_emptionCapability_decode_ber; +der_type_encoder_f Pre_emptionCapability_encode_der; +xer_type_decoder_f Pre_emptionCapability_decode_xer; +xer_type_encoder_f Pre_emptionCapability_encode_xer; +per_type_decoder_f Pre_emptionCapability_decode_uper; +per_type_encoder_f Pre_emptionCapability_encode_uper; +per_type_decoder_f Pre_emptionCapability_decode_aper; +per_type_encoder_f Pre_emptionCapability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Pre_emptionCapability_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.c b/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.c new file mode 100644 index 0000000..6149dc9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Pre-emptionVulnerability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Pre_emptionVulnerability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Pre_emptionVulnerability_value2enum_1[] = { + { 0, 16, "not-pre-emptable" }, + { 1, 12, "pre-emptable" } +}; +static const unsigned int asn_MAP_Pre_emptionVulnerability_enum2value_1[] = { + 0, /* not-pre-emptable(0) */ + 1 /* pre-emptable(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Pre_emptionVulnerability_specs_1 = { + asn_MAP_Pre_emptionVulnerability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_Pre_emptionVulnerability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Pre_emptionVulnerability = { + "Pre-emptionVulnerability", + "Pre-emptionVulnerability", + &asn_OP_NativeEnumerated, + asn_DEF_Pre_emptionVulnerability_tags_1, + sizeof(asn_DEF_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + asn_DEF_Pre_emptionVulnerability_tags_1, /* Same as above */ + sizeof(asn_DEF_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Pre_emptionVulnerability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Pre_emptionVulnerability_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.h b/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.h new file mode 100644 index 0000000..e94b626 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Pre-emptionVulnerability.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Pre_emptionVulnerability_H_ +#define _Pre_emptionVulnerability_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Pre_emptionVulnerability { + Pre_emptionVulnerability_not_pre_emptable = 0, + Pre_emptionVulnerability_pre_emptable = 1 +} e_Pre_emptionVulnerability; + +/* Pre-emptionVulnerability */ +typedef long Pre_emptionVulnerability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Pre_emptionVulnerability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Pre_emptionVulnerability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionVulnerability_specs_1; +asn_struct_free_f Pre_emptionVulnerability_free; +asn_struct_print_f Pre_emptionVulnerability_print; +asn_constr_check_f Pre_emptionVulnerability_constraint; +ber_type_decoder_f Pre_emptionVulnerability_decode_ber; +der_type_encoder_f Pre_emptionVulnerability_encode_der; +xer_type_decoder_f Pre_emptionVulnerability_decode_xer; +xer_type_encoder_f Pre_emptionVulnerability_encode_xer; +per_type_decoder_f Pre_emptionVulnerability_decode_uper; +per_type_encoder_f Pre_emptionVulnerability_encode_uper; +per_type_decoder_f Pre_emptionVulnerability_decode_aper; +per_type_encoder_f Pre_emptionVulnerability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Pre_emptionVulnerability_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Presence.c b/E2Manager/asn1codec/e2ap_engine/Presence.c new file mode 100644 index 0000000..21e2093 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Presence.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Presence.h b/E2Manager/asn1codec/e2ap_engine/Presence.h new file mode 100644 index 0000000..c91b273 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Presence.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PrintableString.c b/E2Manager/asn1codec/e2ap_engine/PrintableString.c new file mode 100644 index 0000000..ac4621a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrintableString.c @@ -0,0 +1,131 @@ + +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ASN.1:1984 (X.409) + */ +static const int _PrintableString_alphabet[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int _PrintableString_code2value[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122}; + +/* + * PrintableString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +static int asn_DEF_PrintableString_v2c(unsigned int value) { + return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; +} +static int asn_DEF_PrintableString_c2v(unsigned int code) { + if(code < 74) + return _PrintableString_code2value[code]; + return -1; +} +static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_PrintableString_v2c, + asn_DEF_PrintableString_c2v +}; +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + &asn_OP_PrintableString, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]) - 1, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]), + { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the PrintableString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + if(!_PrintableString_alphabet[*buf]) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in PrintableString alphabet " + "(%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/E2Manager/asn1codec/e2ap_engine/PrintableString.h b/E2Manager/asn1codec/e2ap_engine/PrintableString.h new file mode 100644 index 0000000..9a3fbcf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrintableString.h @@ -0,0 +1,38 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/PriorityLevel.c b/E2Manager/asn1codec/e2ap_engine/PriorityLevel.c new file mode 100644 index 0000000..a173ce7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PriorityLevel.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PriorityLevel.h" + +int +PriorityLevel_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PriorityLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PriorityLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PriorityLevel = { + "PriorityLevel", + "PriorityLevel", + &asn_OP_NativeInteger, + asn_DEF_PriorityLevel_tags_1, + sizeof(asn_DEF_PriorityLevel_tags_1) + /sizeof(asn_DEF_PriorityLevel_tags_1[0]), /* 1 */ + asn_DEF_PriorityLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_PriorityLevel_tags_1) + /sizeof(asn_DEF_PriorityLevel_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PriorityLevel_constr_1, PriorityLevel_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PriorityLevel.h b/E2Manager/asn1codec/e2ap_engine/PriorityLevel.h new file mode 100644 index 0000000..94cb7f4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PriorityLevel.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PriorityLevel_H_ +#define _PriorityLevel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PriorityLevel { + PriorityLevel_spare = 0, + PriorityLevel_highest = 1, + PriorityLevel_lowest = 14, + PriorityLevel_no_priority = 15 +} e_PriorityLevel; + +/* PriorityLevel */ +typedef long PriorityLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PriorityLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PriorityLevel; +asn_struct_free_f PriorityLevel_free; +asn_struct_print_f PriorityLevel_print; +asn_constr_check_f PriorityLevel_constraint; +ber_type_decoder_f PriorityLevel_decode_ber; +der_type_encoder_f PriorityLevel_encode_der; +xer_type_decoder_f PriorityLevel_decode_xer; +xer_type_encoder_f PriorityLevel_encode_xer; +per_type_decoder_f PriorityLevel_decode_uper; +per_type_encoder_f PriorityLevel_encode_uper; +per_type_decoder_f PriorityLevel_decode_aper; +per_type_encoder_f PriorityLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PriorityLevel_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.c b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.c new file mode 100644 index 0000000..dd169a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-Container.h" + +#include "PrivateIE-Field.h" +asn_per_constraints_t asn_PER_type_PrivateIE_Container_186P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PrivateIE_Container_186P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PrivateMessage_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateIE_Container_186P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PrivateIE_Container_186P0_specs_1 = { + sizeof(struct PrivateIE_Container_186P0), + offsetof(struct PrivateIE_Container_186P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_186P0 = { + "PrivateIE-Container", + "PrivateIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_PrivateIE_Container_186P0_tags_1, + sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1[0]), /* 1 */ + asn_DEF_PrivateIE_Container_186P0_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PrivateIE_Container_186P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_PrivateIE_Container_186P0_1, + 1, /* Single element */ + &asn_SPC_PrivateIE_Container_186P0_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.h b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.h new file mode 100644 index 0000000..a3c8b51 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Container.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_Container_H_ +#define _PrivateIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrivateMessage_IEs; + +/* PrivateIE-Container */ +typedef struct PrivateIE_Container_186P0 { + A_SEQUENCE_OF(struct PrivateMessage_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_Container_186P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_186P0; +extern asn_SET_OF_specifics_t asn_SPC_PrivateIE_Container_186P0_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateIE_Container_186P0_1[1]; +extern asn_per_constraints_t asn_PER_type_PrivateIE_Container_186P0_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_Container_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.c b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.c new file mode 100644 index 0000000..18e5df7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.c @@ -0,0 +1,185 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-Field.h" + +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct PrivateMessage_IEs__value), + offsetof(struct PrivateMessage_IEs__value, _asn_ctx), + offsetof(struct PrivateMessage_IEs__value, present), + sizeof(((struct PrivateMessage_IEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PrivateMessage_IEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_PrivateIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + 0, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateMessage_IEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_IEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_IEs_specs_1 = { + sizeof(struct PrivateMessage_IEs), + offsetof(struct PrivateMessage_IEs, _asn_ctx), + asn_MAP_PrivateMessage_IEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateMessage_IEs = { + "PrivateMessage-IEs", + "PrivateMessage-IEs", + &asn_OP_SEQUENCE, + asn_DEF_PrivateMessage_IEs_tags_1, + sizeof(asn_DEF_PrivateMessage_IEs_tags_1) + /sizeof(asn_DEF_PrivateMessage_IEs_tags_1[0]), /* 1 */ + asn_DEF_PrivateMessage_IEs_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateMessage_IEs_tags_1) + /sizeof(asn_DEF_PrivateMessage_IEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PrivateMessage_IEs_1, + 3, /* Elements count */ + &asn_SPC_PrivateMessage_IEs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.h b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.h new file mode 100644 index 0000000..be620e8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-Field.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_Field_H_ +#define _PrivateIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrivateIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivateMessage_IEs__value_PR { + PrivateMessage_IEs__value_PR_NOTHING /* No components present */ + +} PrivateMessage_IEs__value_PR; + +/* PrivateIE-Field */ +typedef struct PrivateMessage_IEs { + PrivateIE_ID_t id; + Criticality_t criticality; + struct PrivateMessage_IEs__value { + PrivateMessage_IEs__value_PR present; + union PrivateMessage_IEs__value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateMessage_IEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_IEs_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateMessage_IEs_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_Field_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.c b/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.c new file mode 100644 index 0000000..81e6e46 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.c @@ -0,0 +1,111 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-ID.h" + +static int +memb_local_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_local_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.local), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_local_constr_2, memb_local_constraint_1 }, + 0, 0, /* No default value */ + "local" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.global), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateIE_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */ +}; +asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1 = { + sizeof(struct PrivateIE_ID), + offsetof(struct PrivateIE_ID, _asn_ctx), + offsetof(struct PrivateIE_ID, present), + sizeof(((struct PrivateIE_ID *)0)->present), + asn_MAP_PrivateIE_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID = { + "PrivateIE-ID", + "PrivateIE-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_PrivateIE_ID_constr_1, CHOICE_constraint }, + asn_MBR_PrivateIE_ID_1, + 2, /* Elements count */ + &asn_SPC_PrivateIE_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.h b/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.h new file mode 100644 index 0000000..8c65ecb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateIE-ID.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_ID_H_ +#define _PrivateIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "OBJECT_IDENTIFIER.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivateIE_ID_PR { + PrivateIE_ID_PR_NOTHING, /* No components present */ + PrivateIE_ID_PR_local, + PrivateIE_ID_PR_global +} PrivateIE_ID_PR; + +/* PrivateIE-ID */ +typedef struct PrivateIE_ID { + PrivateIE_ID_PR present; + union PrivateIE_ID_u { + long local; + OBJECT_IDENTIFIER_t global; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID; +extern asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateMessage.c b/E2Manager/asn1codec/e2ap_engine/PrivateMessage.c new file mode 100644 index 0000000..3c44d62 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateMessage.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateMessage.h" + +static asn_TYPE_member_t asn_MBR_PrivateMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage, privateIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrivateIE_Container_186P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "privateIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_specs_1 = { + sizeof(struct PrivateMessage), + offsetof(struct PrivateMessage, _asn_ctx), + asn_MAP_PrivateMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateMessage = { + "PrivateMessage", + "PrivateMessage", + &asn_OP_SEQUENCE, + asn_DEF_PrivateMessage_tags_1, + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + asn_DEF_PrivateMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PrivateMessage_1, + 1, /* Elements count */ + &asn_SPC_PrivateMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/PrivateMessage.h b/E2Manager/asn1codec/e2ap_engine/PrivateMessage.h new file mode 100644 index 0000000..78e93a1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/PrivateMessage.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateMessage_H_ +#define _PrivateMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrivateIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PrivateMessage */ +typedef struct PrivateMessage { + PrivateIE_Container_186P0_t privateIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.c b/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.c new file mode 100644 index 0000000..ab32e39 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeAuthorized.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ProSeAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct ProSeAuthorized, proSeDirectDiscovery), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProSeDirectDiscovery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectDiscovery" + }, + { ATF_POINTER, 2, offsetof(struct ProSeAuthorized, proSeDirectCommunication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProSeDirectCommunication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectCommunication" + }, + { ATF_POINTER, 1, offsetof(struct ProSeAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P179, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProSeAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ProSeAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProSeAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* proSeDirectDiscovery */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* proSeDirectCommunication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_specs_1 = { + sizeof(struct ProSeAuthorized), + offsetof(struct ProSeAuthorized, _asn_ctx), + asn_MAP_ProSeAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ProSeAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized = { + "ProSeAuthorized", + "ProSeAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_ProSeAuthorized_tags_1, + sizeof(asn_DEF_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_ProSeAuthorized_tags_1[0]), /* 1 */ + asn_DEF_ProSeAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_ProSeAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProSeAuthorized_1, + 3, /* Elements count */ + &asn_SPC_ProSeAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.h b/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.h new file mode 100644 index 0000000..e6687ee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeAuthorized.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeAuthorized_H_ +#define _ProSeAuthorized_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProSeDirectDiscovery.h" +#include "ProSeDirectCommunication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProSeAuthorized */ +typedef struct ProSeAuthorized { + ProSeDirectDiscovery_t *proSeDirectDiscovery; /* OPTIONAL */ + ProSeDirectCommunication_t *proSeDirectCommunication; /* 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; +} ProSeAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized; +extern asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_specs_1; +extern asn_TYPE_member_t asn_MBR_ProSeAuthorized_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeAuthorized_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.c b/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.c new file mode 100644 index 0000000..68e859f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeDirectCommunication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeDirectCommunication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeDirectCommunication_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeDirectCommunication_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeDirectCommunication_specs_1 = { + asn_MAP_ProSeDirectCommunication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeDirectCommunication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeDirectCommunication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeDirectCommunication = { + "ProSeDirectCommunication", + "ProSeDirectCommunication", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeDirectCommunication_tags_1, + sizeof(asn_DEF_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_ProSeDirectCommunication_tags_1[0]), /* 1 */ + asn_DEF_ProSeDirectCommunication_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_ProSeDirectCommunication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeDirectCommunication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeDirectCommunication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.h b/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.h new file mode 100644 index 0000000..e2d4fa0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeDirectCommunication.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeDirectCommunication_H_ +#define _ProSeDirectCommunication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeDirectCommunication { + ProSeDirectCommunication_authorized = 0, + ProSeDirectCommunication_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeDirectCommunication; + +/* ProSeDirectCommunication */ +typedef long ProSeDirectCommunication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeDirectCommunication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeDirectCommunication; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectCommunication_specs_1; +asn_struct_free_f ProSeDirectCommunication_free; +asn_struct_print_f ProSeDirectCommunication_print; +asn_constr_check_f ProSeDirectCommunication_constraint; +ber_type_decoder_f ProSeDirectCommunication_decode_ber; +der_type_encoder_f ProSeDirectCommunication_encode_der; +xer_type_decoder_f ProSeDirectCommunication_decode_xer; +xer_type_encoder_f ProSeDirectCommunication_encode_xer; +per_type_decoder_f ProSeDirectCommunication_decode_uper; +per_type_encoder_f ProSeDirectCommunication_encode_uper; +per_type_decoder_f ProSeDirectCommunication_decode_aper; +per_type_encoder_f ProSeDirectCommunication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeDirectCommunication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.c b/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.c new file mode 100644 index 0000000..c8dad8a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeDirectDiscovery.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeDirectDiscovery_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeDirectDiscovery_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeDirectDiscovery_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeDirectDiscovery_specs_1 = { + asn_MAP_ProSeDirectDiscovery_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeDirectDiscovery_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeDirectDiscovery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeDirectDiscovery = { + "ProSeDirectDiscovery", + "ProSeDirectDiscovery", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeDirectDiscovery_tags_1, + sizeof(asn_DEF_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + asn_DEF_ProSeDirectDiscovery_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeDirectDiscovery_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeDirectDiscovery_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.h b/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.h new file mode 100644 index 0000000..d639c84 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeDirectDiscovery.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeDirectDiscovery_H_ +#define _ProSeDirectDiscovery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeDirectDiscovery { + ProSeDirectDiscovery_authorized = 0, + ProSeDirectDiscovery_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeDirectDiscovery; + +/* ProSeDirectDiscovery */ +typedef long ProSeDirectDiscovery_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeDirectDiscovery_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeDirectDiscovery; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectDiscovery_specs_1; +asn_struct_free_f ProSeDirectDiscovery_free; +asn_struct_print_f ProSeDirectDiscovery_print; +asn_constr_check_f ProSeDirectDiscovery_constraint; +ber_type_decoder_f ProSeDirectDiscovery_decode_ber; +der_type_encoder_f ProSeDirectDiscovery_encode_der; +xer_type_decoder_f ProSeDirectDiscovery_decode_xer; +xer_type_encoder_f ProSeDirectDiscovery_encode_xer; +per_type_decoder_f ProSeDirectDiscovery_decode_uper; +per_type_encoder_f ProSeDirectDiscovery_encode_uper; +per_type_decoder_f ProSeDirectDiscovery_decode_aper; +per_type_encoder_f ProSeDirectDiscovery_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeDirectDiscovery_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c b/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c new file mode 100644 index 0000000..c2b790b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeUEtoNetworkRelaying.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeUEtoNetworkRelaying_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeUEtoNetworkRelaying_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeUEtoNetworkRelaying_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeUEtoNetworkRelaying_specs_1 = { + asn_MAP_ProSeUEtoNetworkRelaying_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeUEtoNetworkRelaying_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeUEtoNetworkRelaying_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeUEtoNetworkRelaying = { + "ProSeUEtoNetworkRelaying", + "ProSeUEtoNetworkRelaying", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeUEtoNetworkRelaying_tags_1, + sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + asn_DEF_ProSeUEtoNetworkRelaying_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeUEtoNetworkRelaying_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeUEtoNetworkRelaying_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h b/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h new file mode 100644 index 0000000..df34277 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeUEtoNetworkRelaying_H_ +#define _ProSeUEtoNetworkRelaying_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeUEtoNetworkRelaying { + ProSeUEtoNetworkRelaying_authorized = 0, + ProSeUEtoNetworkRelaying_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeUEtoNetworkRelaying; + +/* ProSeUEtoNetworkRelaying */ +typedef long ProSeUEtoNetworkRelaying_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeUEtoNetworkRelaying_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeUEtoNetworkRelaying; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeUEtoNetworkRelaying_specs_1; +asn_struct_free_f ProSeUEtoNetworkRelaying_free; +asn_struct_print_f ProSeUEtoNetworkRelaying_print; +asn_constr_check_f ProSeUEtoNetworkRelaying_constraint; +ber_type_decoder_f ProSeUEtoNetworkRelaying_decode_ber; +der_type_encoder_f ProSeUEtoNetworkRelaying_encode_der; +xer_type_decoder_f ProSeUEtoNetworkRelaying_decode_xer; +xer_type_encoder_f ProSeUEtoNetworkRelaying_encode_xer; +per_type_decoder_f ProSeUEtoNetworkRelaying_decode_uper; +per_type_encoder_f ProSeUEtoNetworkRelaying_encode_uper; +per_type_decoder_f ProSeUEtoNetworkRelaying_decode_aper; +per_type_encoder_f ProSeUEtoNetworkRelaying_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeUEtoNetworkRelaying_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProcedureCode.c b/E2Manager/asn1codec/e2ap_engine/ProcedureCode.c new file mode 100644 index 0000000..f43b636 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProcedureCode.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProcedureCode.h b/E2Manager/asn1codec/e2ap_engine/ProcedureCode.h new file mode 100644 index 0000000..8af71de --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProcedureCode.h @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +#define ProcedureCode_id_ricSubscription ((ProcedureCode_t)201) +#define ProcedureCode_id_ricSubscriptionDelete ((ProcedureCode_t)202) +#define ProcedureCode_id_ricServiceUpdate ((ProcedureCode_t)203) +#define ProcedureCode_id_ricControl ((ProcedureCode_t)204) +#define ProcedureCode_id_ricIndication ((ProcedureCode_t)205) +#define ProcedureCode_id_ricServiceQuery ((ProcedureCode_t)206) +#define ProcedureCode_id_handoverPreparation ((ProcedureCode_t)0) +#define ProcedureCode_id_handoverCancel ((ProcedureCode_t)1) +#define ProcedureCode_id_loadIndication ((ProcedureCode_t)2) +#define ProcedureCode_id_errorIndication ((ProcedureCode_t)3) +#define ProcedureCode_id_snStatusTransfer ((ProcedureCode_t)4) +#define ProcedureCode_id_uEContextRelease ((ProcedureCode_t)5) +#define ProcedureCode_id_x2Setup ((ProcedureCode_t)6) +#define ProcedureCode_id_reset ((ProcedureCode_t)7) +#define ProcedureCode_id_eNBConfigurationUpdate ((ProcedureCode_t)8) +#define ProcedureCode_id_resourceStatusReportingInitiation ((ProcedureCode_t)9) +#define ProcedureCode_id_resourceStatusReporting ((ProcedureCode_t)10) +#define ProcedureCode_id_privateMessage ((ProcedureCode_t)11) +#define ProcedureCode_id_mobilitySettingsChange ((ProcedureCode_t)12) +#define ProcedureCode_id_rLFIndication ((ProcedureCode_t)13) +#define ProcedureCode_id_handoverReport ((ProcedureCode_t)14) +#define ProcedureCode_id_cellActivation ((ProcedureCode_t)15) +#define ProcedureCode_id_x2Release ((ProcedureCode_t)16) +#define ProcedureCode_id_x2APMessageTransfer ((ProcedureCode_t)17) +#define ProcedureCode_id_x2Removal ((ProcedureCode_t)18) +#define ProcedureCode_id_seNBAdditionPreparation ((ProcedureCode_t)19) +#define ProcedureCode_id_seNBReconfigurationCompletion ((ProcedureCode_t)20) +#define ProcedureCode_id_meNBinitiatedSeNBModificationPreparation ((ProcedureCode_t)21) +#define ProcedureCode_id_seNBinitiatedSeNBModification ((ProcedureCode_t)22) +#define ProcedureCode_id_meNBinitiatedSeNBRelease ((ProcedureCode_t)23) +#define ProcedureCode_id_seNBinitiatedSeNBRelease ((ProcedureCode_t)24) +#define ProcedureCode_id_seNBCounterCheck ((ProcedureCode_t)25) +#define ProcedureCode_id_retrieveUEContext ((ProcedureCode_t)26) +#define ProcedureCode_id_sgNBAdditionPreparation ((ProcedureCode_t)27) +#define ProcedureCode_id_sgNBReconfigurationCompletion ((ProcedureCode_t)28) +#define ProcedureCode_id_meNBinitiatedSgNBModificationPreparation ((ProcedureCode_t)29) +#define ProcedureCode_id_sgNBinitiatedSgNBModification ((ProcedureCode_t)30) +#define ProcedureCode_id_meNBinitiatedSgNBRelease ((ProcedureCode_t)31) +#define ProcedureCode_id_sgNBinitiatedSgNBRelease ((ProcedureCode_t)32) +#define ProcedureCode_id_sgNBCounterCheck ((ProcedureCode_t)33) +#define ProcedureCode_id_sgNBChange ((ProcedureCode_t)34) +#define ProcedureCode_id_rRCTransfer ((ProcedureCode_t)35) +#define ProcedureCode_id_endcX2Setup ((ProcedureCode_t)36) +#define ProcedureCode_id_endcConfigurationUpdate ((ProcedureCode_t)37) +#define ProcedureCode_id_secondaryRATDataUsageReport ((ProcedureCode_t)38) +#define ProcedureCode_id_endcCellActivation ((ProcedureCode_t)39) +#define ProcedureCode_id_endcPartialReset ((ProcedureCode_t)40) +#define ProcedureCode_id_eUTRANRCellResourceCoordination ((ProcedureCode_t)41) +#define ProcedureCode_id_SgNBActivityNotification ((ProcedureCode_t)42) +#define ProcedureCode_id_endcX2Removal ((ProcedureCode_t)43) +#define ProcedureCode_id_dataForwardingAddressIndication ((ProcedureCode_t)44) +#define ProcedureCode_id_gNBStatusIndication ((ProcedureCode_t)45) +extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c b/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c new file mode 100644 index 0000000..b16e9bc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c @@ -0,0 +1,202 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedEUTRAResourceIndication.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_activationSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* 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_mBSFNControlRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_pDCCHRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_activationSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_mBSFNControlRegionLength_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pDCCHRegionLength_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 1, 3 } /* (1..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication, activationSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_activationSFN_constr_2, memb_activationSFN_constraint_1 }, + 0, 0, /* No default value */ + "activationSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication, protectedResourceList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedResourceList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protectedResourceList" + }, + { ATF_POINTER, 3, offsetof(struct ProtectedEUTRAResourceIndication, mBSFNControlRegionLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_mBSFNControlRegionLength_constr_4, memb_mBSFNControlRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "mBSFNControlRegionLength" + }, + { ATF_POINTER, 2, offsetof(struct ProtectedEUTRAResourceIndication, pDCCHRegionLength), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pDCCHRegionLength_constr_5, memb_pDCCHRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "pDCCHRegionLength" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedEUTRAResourceIndication, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P180, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedEUTRAResourceIndication_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_ProtectedEUTRAResourceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedEUTRAResourceIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* activationSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* protectedResourceList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mBSFNControlRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pDCCHRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_specs_1 = { + sizeof(struct ProtectedEUTRAResourceIndication), + offsetof(struct ProtectedEUTRAResourceIndication, _asn_ctx), + asn_MAP_ProtectedEUTRAResourceIndication_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ProtectedEUTRAResourceIndication_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication = { + "ProtectedEUTRAResourceIndication", + "ProtectedEUTRAResourceIndication", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedEUTRAResourceIndication_tags_1, + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1[0]), /* 1 */ + asn_DEF_ProtectedEUTRAResourceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedEUTRAResourceIndication_1, + 5, /* Elements count */ + &asn_SPC_ProtectedEUTRAResourceIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h b/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h new file mode 100644 index 0000000..43e77d4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedEUTRAResourceIndication_H_ +#define _ProtectedEUTRAResourceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "ProtectedResourceList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedEUTRAResourceIndication */ +typedef struct ProtectedEUTRAResourceIndication { + long activationSFN; + ProtectedResourceList_t protectedResourceList; + long *mBSFNControlRegionLength; /* OPTIONAL */ + long *pDCCHRegionLength; /* 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; +} ProtectedEUTRAResourceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedEUTRAResourceIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c b/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c new file mode 100644 index 0000000..7c51a3f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c @@ -0,0 +1,152 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedFootprintTimePattern.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_protectedFootprintTimePeriodicity_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 320)) { + /* 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_protectedFootprintStartTime_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_protectedFootprintTimePeriodicity_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 1, 320 } /* (1..320,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_protectedFootprintStartTime_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 1, 20 } /* (1..20,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern, protectedFootprintTimePeriodicity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_protectedFootprintTimePeriodicity_constr_2, memb_protectedFootprintTimePeriodicity_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintTimePeriodicity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern, protectedFootprintStartTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_protectedFootprintStartTime_constr_3, memb_protectedFootprintStartTime_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintStartTime" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedFootprintTimePattern, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P181, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedFootprintTimePattern_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ProtectedFootprintTimePattern_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedFootprintTimePattern_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* protectedFootprintTimePeriodicity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* protectedFootprintStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_specs_1 = { + sizeof(struct ProtectedFootprintTimePattern), + offsetof(struct ProtectedFootprintTimePattern, _asn_ctx), + asn_MAP_ProtectedFootprintTimePattern_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ProtectedFootprintTimePattern_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern = { + "ProtectedFootprintTimePattern", + "ProtectedFootprintTimePattern", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedFootprintTimePattern_tags_1, + sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1[0]), /* 1 */ + asn_DEF_ProtectedFootprintTimePattern_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedFootprintTimePattern_1, + 3, /* Elements count */ + &asn_SPC_ProtectedFootprintTimePattern_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h b/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h new file mode 100644 index 0000000..8b68fb8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedFootprintTimePattern_H_ +#define _ProtectedFootprintTimePattern_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedFootprintTimePattern */ +typedef struct ProtectedFootprintTimePattern { + long protectedFootprintTimePeriodicity; + long protectedFootprintStartTime; + 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; +} ProtectedFootprintTimePattern_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedFootprintTimePattern_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.c b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.c new file mode 100644 index 0000000..9e98c36 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.c @@ -0,0 +1,184 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedResourceList-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_intraPRBProtectedResourceFootprint_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 84)) { + /* 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_protectedFootprintFrequencyPattern_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 110)) { + /* 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_intraPRBProtectedResourceFootprint_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 84, 84 } /* (SIZE(84..84,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_protectedFootprintFrequencyPattern_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 6, 110 } /* (SIZE(6..110,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, resourceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResourceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resourceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, intraPRBProtectedResourceFootprint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_intraPRBProtectedResourceFootprint_constr_3, memb_intraPRBProtectedResourceFootprint_constraint_1 }, + 0, 0, /* No default value */ + "intraPRBProtectedResourceFootprint" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, protectedFootprintFrequencyPattern), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_protectedFootprintFrequencyPattern_constr_4, memb_protectedFootprintFrequencyPattern_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintFrequencyPattern" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, protectedFootprintTimePattern), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedFootprintTimePattern, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protectedFootprintTimePattern" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedResourceList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P182, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedResourceList_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedResourceList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* intraPRBProtectedResourceFootprint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protectedFootprintFrequencyPattern */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protectedFootprintTimePattern */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_specs_1 = { + sizeof(struct ProtectedResourceList_Item), + offsetof(struct ProtectedResourceList_Item, _asn_ctx), + asn_MAP_ProtectedResourceList_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ProtectedResourceList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item = { + "ProtectedResourceList-Item", + "ProtectedResourceList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedResourceList_Item_tags_1, + sizeof(asn_DEF_ProtectedResourceList_Item_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_Item_tags_1[0]), /* 1 */ + asn_DEF_ProtectedResourceList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_Item_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedResourceList_Item_1, + 5, /* Elements count */ + &asn_SPC_ProtectedResourceList_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.h b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.h new file mode 100644 index 0000000..6b9960f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList-Item.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedResourceList_Item_H_ +#define _ProtectedResourceList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ResourceType.h" +#include "BIT_STRING.h" +#include "ProtectedFootprintTimePattern.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedResourceList-Item */ +typedef struct ProtectedResourceList_Item { + ResourceType_t resourceType; + BIT_STRING_t intraPRBProtectedResourceFootprint; + BIT_STRING_t protectedFootprintFrequencyPattern; + ProtectedFootprintTimePattern_t protectedFootprintTimePattern; + 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; +} ProtectedResourceList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedResourceList_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.c b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.c new file mode 100644 index 0000000..2839e61 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedResourceList.h" + +#include "ProtectedResourceList-Item.h" +asn_per_constraints_t asn_PER_type_ProtectedResourceList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedResourceList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedResourceList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtectedResourceList_specs_1 = { + sizeof(struct ProtectedResourceList), + offsetof(struct ProtectedResourceList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList = { + "ProtectedResourceList", + "ProtectedResourceList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtectedResourceList_tags_1, + sizeof(asn_DEF_ProtectedResourceList_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_tags_1[0]), /* 1 */ + asn_DEF_ProtectedResourceList_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtectedResourceList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtectedResourceList_1, + 1, /* Single element */ + &asn_SPC_ProtectedResourceList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.h b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.h new file mode 100644 index 0000000..133dd43 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtectedResourceList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedResourceList_H_ +#define _ProtectedResourceList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtectedResourceList_Item; + +/* ProtectedResourceList */ +typedef struct ProtectedResourceList { + A_SEQUENCE_OF(struct ProtectedResourceList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedResourceList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList; +extern asn_SET_OF_specifics_t asn_SPC_ProtectedResourceList_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtectedResourceList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedResourceList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.c b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.c new file mode 100644 index 0000000..3f06c69 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.c @@ -0,0 +1,8949 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolExtensionContainer.h" + +#include "ProtocolExtensionField.h" +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P91_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P92_constr_185 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P93_constr_187 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P94_constr_189 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P95_constr_191 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P96_constr_193 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P97_constr_195 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P98_constr_197 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P99_constr_199 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P100_constr_201 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P101_constr_203 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P102_constr_205 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P103_constr_207 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P104_constr_209 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P105_constr_211 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P106_constr_213 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P107_constr_215 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P108_constr_217 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P109_constr_219 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P110_constr_221 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P111_constr_223 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P112_constr_225 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P113_constr_227 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P114_constr_229 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P115_constr_231 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P116_constr_233 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P117_constr_235 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P118_constr_237 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P119_constr_239 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P120_constr_241 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P121_constr_243 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P122_constr_245 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P123_constr_247 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P124_constr_249 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P125_constr_251 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P126_constr_253 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P127_constr_255 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P128_constr_257 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P129_constr_259 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P130_constr_261 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P131_constr_263 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P132_constr_265 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P133_constr_267 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P134_constr_269 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P135_constr_271 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P136_constr_273 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P137_constr_275 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P138_constr_277 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P139_constr_279 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P140_constr_281 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P141_constr_283 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P142_constr_285 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P143_constr_287 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P144_constr_289 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P145_constr_291 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P146_constr_293 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P147_constr_295 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P148_constr_297 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P149_constr_299 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P150_constr_301 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P151_constr_303 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P152_constr_305 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P153_constr_307 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P154_constr_309 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P155_constr_311 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P156_constr_313 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P157_constr_315 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P158_constr_317 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P159_constr_319 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P160_constr_321 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P161_constr_323 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P162_constr_325 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P163_constr_327 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P164_constr_329 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P165_constr_331 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P166_constr_333 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P167_constr_335 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P168_constr_337 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P169_constr_339 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P170_constr_341 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P171_constr_343 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P172_constr_345 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P173_constr_347 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P174_constr_349 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P175_constr_351 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P176_constr_353 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P177_constr_355 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P178_constr_357 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P179_constr_359 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P180_constr_361 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P181_constr_363 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P182_constr_365 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P183_constr_367 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P184_constr_369 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P185_constr_371 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P186_constr_373 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P187_constr_375 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P188_constr_377 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P189_constr_379 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P190_constr_381 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P191_constr_383 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P192_constr_385 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P193_constr_387 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P194_constr_389 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P195_constr_391 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P196_constr_393 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P197_constr_395 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P198_constr_397 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P199_constr_399 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P200_constr_401 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P201_constr_403 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P202_constr_405 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P203_constr_407 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P204_constr_409 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P205_constr_411 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P206_constr_413 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P207_constr_415 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P208_constr_417 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P209_constr_419 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P210_constr_421 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P211_constr_423 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P212_constr_425 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P213_constr_427 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P214_constr_429 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P215_constr_431 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P216_constr_433 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P217_constr_435 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P218_constr_437 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P219_constr_439 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P220_constr_441 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P221_constr_443 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P222_constr_445 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P0_specs_1 = { + sizeof(struct ProtocolExtensionContainer_170P0), + offsetof(struct ProtocolExtensionContainer_170P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P0 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P0_tags_1, + sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetup_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P1_specs_3 = { + sizeof(struct ProtocolExtensionContainer_170P1), + offsetof(struct ProtocolExtensionContainer_170P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P1 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P1_tags_3, + sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P2_specs_5 = { + sizeof(struct ProtocolExtensionContainer_170P2), + offsetof(struct ProtocolExtensionContainer_170P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P2 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P2_tags_5, + sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P3_specs_7 = { + sizeof(struct ProtocolExtensionContainer_170P3), + offsetof(struct ProtocolExtensionContainer_170P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P3 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P3_tags_7, + sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P4_specs_9 = { + sizeof(struct ProtocolExtensionContainer_170P4), + offsetof(struct ProtocolExtensionContainer_170P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P4 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P4_tags_9, + sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P5_specs_11 = { + sizeof(struct ProtocolExtensionContainer_170P5), + offsetof(struct ProtocolExtensionContainer_170P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P5 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P5_tags_11, + sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P6_specs_13 = { + sizeof(struct ProtocolExtensionContainer_170P6), + offsetof(struct ProtocolExtensionContainer_170P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P6 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P6_tags_13, + sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P7_specs_15 = { + sizeof(struct ProtocolExtensionContainer_170P7), + offsetof(struct ProtocolExtensionContainer_170P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P7 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P7_tags_15, + sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P8_specs_17 = { + sizeof(struct ProtocolExtensionContainer_170P8), + offsetof(struct ProtocolExtensionContainer_170P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P8 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P8_tags_17, + sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P9_specs_19 = { + sizeof(struct ProtocolExtensionContainer_170P9), + offsetof(struct ProtocolExtensionContainer_170P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P9 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P9_tags_19, + sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P10_specs_21 = { + sizeof(struct ProtocolExtensionContainer_170P10), + offsetof(struct ProtocolExtensionContainer_170P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P10 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P10_tags_21, + sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementFailureCause_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P11_specs_23 = { + sizeof(struct ProtocolExtensionContainer_170P11), + offsetof(struct ProtocolExtensionContainer_170P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P11 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P11_tags_23, + sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P12_specs_25 = { + sizeof(struct ProtocolExtensionContainer_170P12), + offsetof(struct ProtocolExtensionContainer_170P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P12 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P12_tags_25, + sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P13_specs_27 = { + sizeof(struct ProtocolExtensionContainer_170P13), + offsetof(struct ProtocolExtensionContainer_170P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P13 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P13_tags_27, + sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P14_specs_29 = { + sizeof(struct ProtocolExtensionContainer_170P14), + offsetof(struct ProtocolExtensionContainer_170P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P14 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P14_tags_29, + sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P15_specs_31 = { + sizeof(struct ProtocolExtensionContainer_170P15), + offsetof(struct ProtocolExtensionContainer_170P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P15 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P15_tags_31, + sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RNL_Header_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P16_specs_33 = { + sizeof(struct ProtocolExtensionContainer_170P16), + offsetof(struct ProtocolExtensionContainer_170P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P16 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P16_tags_33, + sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P17_specs_35 = { + sizeof(struct ProtocolExtensionContainer_170P17), + offsetof(struct ProtocolExtensionContainer_170P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P17 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P17_tags_35, + sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P18_specs_37 = { + sizeof(struct ProtocolExtensionContainer_170P18), + offsetof(struct ProtocolExtensionContainer_170P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P18 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P18_tags_37, + sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P19_specs_39 = { + sizeof(struct ProtocolExtensionContainer_170P19), + offsetof(struct ProtocolExtensionContainer_170P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P19 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P19_tags_39, + sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P20_specs_41 = { + sizeof(struct ProtocolExtensionContainer_170P20), + offsetof(struct ProtocolExtensionContainer_170P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P20 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P20_tags_41, + sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P21_specs_43 = { + sizeof(struct ProtocolExtensionContainer_170P21), + offsetof(struct ProtocolExtensionContainer_170P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P21 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P21_tags_43, + sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P22_specs_45 = { + sizeof(struct ProtocolExtensionContainer_170P22), + offsetof(struct ProtocolExtensionContainer_170P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P22 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P22_tags_45, + sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSeNBModReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P23_specs_47 = { + sizeof(struct ProtocolExtensionContainer_170P23), + offsetof(struct ProtocolExtensionContainer_170P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P23 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P23_tags_47, + sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P24_specs_49 = { + sizeof(struct ProtocolExtensionContainer_170P24), + offsetof(struct ProtocolExtensionContainer_170P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P24 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P24_tags_49, + sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P25_specs_51 = { + sizeof(struct ProtocolExtensionContainer_170P25), + offsetof(struct ProtocolExtensionContainer_170P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P25 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P25_tags_51, + sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P26_specs_53 = { + sizeof(struct ProtocolExtensionContainer_170P26), + offsetof(struct ProtocolExtensionContainer_170P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P26 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P26_tags_53, + sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P27_specs_55 = { + sizeof(struct ProtocolExtensionContainer_170P27), + offsetof(struct ProtocolExtensionContainer_170P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P27 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P27_tags_55, + sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P28_specs_57 = { + sizeof(struct ProtocolExtensionContainer_170P28), + offsetof(struct ProtocolExtensionContainer_170P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P28 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P28_tags_57, + sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P29_specs_59 = { + sizeof(struct ProtocolExtensionContainer_170P29), + offsetof(struct ProtocolExtensionContainer_170P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P29 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P29_tags_59, + sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P30_specs_61 = { + sizeof(struct ProtocolExtensionContainer_170P30), + offsetof(struct ProtocolExtensionContainer_170P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P30 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P30_tags_61, + sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P31_specs_63 = { + sizeof(struct ProtocolExtensionContainer_170P31), + offsetof(struct ProtocolExtensionContainer_170P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P31 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P31_tags_63, + sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P32_specs_65 = { + sizeof(struct ProtocolExtensionContainer_170P32), + offsetof(struct ProtocolExtensionContainer_170P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P32 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P32_tags_65, + sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P33_specs_67 = { + sizeof(struct ProtocolExtensionContainer_170P33), + offsetof(struct ProtocolExtensionContainer_170P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P33 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P33_tags_67, + sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P34_specs_69 = { + sizeof(struct ProtocolExtensionContainer_170P34), + offsetof(struct ProtocolExtensionContainer_170P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P34 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P34_tags_69, + sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P35_specs_71 = { + sizeof(struct ProtocolExtensionContainer_170P35), + offsetof(struct ProtocolExtensionContainer_170P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P35 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P35_tags_71, + sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P36_specs_73 = { + sizeof(struct ProtocolExtensionContainer_170P36), + offsetof(struct ProtocolExtensionContainer_170P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P36 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P36_tags_73, + sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P37_specs_75 = { + sizeof(struct ProtocolExtensionContainer_170P37), + offsetof(struct ProtocolExtensionContainer_170P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P37 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P37_tags_75, + sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P38_specs_77 = { + sizeof(struct ProtocolExtensionContainer_170P38), + offsetof(struct ProtocolExtensionContainer_170P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P38 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P38_tags_77, + sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P39_specs_79 = { + sizeof(struct ProtocolExtensionContainer_170P39), + offsetof(struct ProtocolExtensionContainer_170P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P39 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P39_tags_79, + sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P39_tags_79, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P39_79, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P40_specs_81 = { + sizeof(struct ProtocolExtensionContainer_170P40), + offsetof(struct ProtocolExtensionContainer_170P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P40 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P40_tags_81, + sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P40_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P40_81, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P41_specs_83 = { + sizeof(struct ProtocolExtensionContainer_170P41), + offsetof(struct ProtocolExtensionContainer_170P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P41 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P41_tags_83, + sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P41_tags_83, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P41_83, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationRetrieve_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P42_specs_85 = { + sizeof(struct ProtocolExtensionContainer_170P42), + offsetof(struct ProtocolExtensionContainer_170P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P42 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P42_tags_85, + sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P42_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P42_85, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P43_specs_87 = { + sizeof(struct ProtocolExtensionContainer_170P43), + offsetof(struct ProtocolExtensionContainer_170P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P43 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P43_tags_87, + sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P43_tags_87, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P43_87, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P44_specs_89 = { + sizeof(struct ProtocolExtensionContainer_170P44), + offsetof(struct ProtocolExtensionContainer_170P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P44 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P44_tags_89, + sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P44_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P44_89, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P45_specs_91 = { + sizeof(struct ProtocolExtensionContainer_170P45), + offsetof(struct ProtocolExtensionContainer_170P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P45 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P45_tags_91, + sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P45_tags_91, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P45_91, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P46_specs_93 = { + sizeof(struct ProtocolExtensionContainer_170P46), + offsetof(struct ProtocolExtensionContainer_170P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P46 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P46_tags_93, + sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P46_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P46_93, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P47_specs_95 = { + sizeof(struct ProtocolExtensionContainer_170P47), + offsetof(struct ProtocolExtensionContainer_170P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P47 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P47_tags_95, + sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P47_tags_95, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P47_95, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P48_specs_97 = { + sizeof(struct ProtocolExtensionContainer_170P48), + offsetof(struct ProtocolExtensionContainer_170P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P48 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P48_tags_97, + sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P48_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P48_97, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P49_specs_99 = { + sizeof(struct ProtocolExtensionContainer_170P49), + offsetof(struct ProtocolExtensionContainer_170P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P49 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P49_tags_99, + sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P49_tags_99, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P49_99, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P50_specs_101 = { + sizeof(struct ProtocolExtensionContainer_170P50), + offsetof(struct ProtocolExtensionContainer_170P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P50 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P50_tags_101, + sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P50_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P50_101, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P51_specs_103 = { + sizeof(struct ProtocolExtensionContainer_170P51), + offsetof(struct ProtocolExtensionContainer_170P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P51 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P51_tags_103, + sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P51_tags_103, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P51_103, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSgNBModReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P52_specs_105 = { + sizeof(struct ProtocolExtensionContainer_170P52), + offsetof(struct ProtocolExtensionContainer_170P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P52 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P52_tags_105, + sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P52_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P52_105, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P53_specs_107 = { + sizeof(struct ProtocolExtensionContainer_170P53), + offsetof(struct ProtocolExtensionContainer_170P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P53 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P53_tags_107, + sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P53_tags_107, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P53_107, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P54_specs_109 = { + sizeof(struct ProtocolExtensionContainer_170P54), + offsetof(struct ProtocolExtensionContainer_170P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P54 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P54_tags_109, + sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P54_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P54_109, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P55_specs_111 = { + sizeof(struct ProtocolExtensionContainer_170P55), + offsetof(struct ProtocolExtensionContainer_170P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P55 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P55_tags_111, + sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P55_tags_111, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P55_111, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P56_specs_113 = { + sizeof(struct ProtocolExtensionContainer_170P56), + offsetof(struct ProtocolExtensionContainer_170P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P56 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P56_tags_113, + sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P56_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P56_113, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P57_specs_115 = { + sizeof(struct ProtocolExtensionContainer_170P57), + offsetof(struct ProtocolExtensionContainer_170P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P57 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P57_tags_115, + sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P57_tags_115, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P57_115, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P58_specs_117 = { + sizeof(struct ProtocolExtensionContainer_170P58), + offsetof(struct ProtocolExtensionContainer_170P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P58 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P58_tags_117, + sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P58_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P58_117, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P59_specs_119 = { + sizeof(struct ProtocolExtensionContainer_170P59), + offsetof(struct ProtocolExtensionContainer_170P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P59 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P59_tags_119, + sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P59_tags_119, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P59_119, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P60_specs_121 = { + sizeof(struct ProtocolExtensionContainer_170P60), + offsetof(struct ProtocolExtensionContainer_170P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P60 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P60_tags_121, + sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P60_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P60_121, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P61_specs_123 = { + sizeof(struct ProtocolExtensionContainer_170P61), + offsetof(struct ProtocolExtensionContainer_170P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P61 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P61_tags_123, + sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P61_tags_123, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P61_123, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P62_specs_125 = { + sizeof(struct ProtocolExtensionContainer_170P62), + offsetof(struct ProtocolExtensionContainer_170P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P62 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P62_tags_125, + sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P62_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P62_125, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P63_specs_127 = { + sizeof(struct ProtocolExtensionContainer_170P63), + offsetof(struct ProtocolExtensionContainer_170P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P63 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P63_tags_127, + sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P63_tags_127, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P63_127, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P64_specs_129 = { + sizeof(struct ProtocolExtensionContainer_170P64), + offsetof(struct ProtocolExtensionContainer_170P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P64 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P64_tags_129, + sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P64_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P64_129, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P65_specs_131 = { + sizeof(struct ProtocolExtensionContainer_170P65), + offsetof(struct ProtocolExtensionContainer_170P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P65 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P65_tags_131, + sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P65_tags_131, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P65_131, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P66_specs_133 = { + sizeof(struct ProtocolExtensionContainer_170P66), + offsetof(struct ProtocolExtensionContainer_170P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P66 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P66_tags_133, + sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P66_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P66_133, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P67_specs_135 = { + sizeof(struct ProtocolExtensionContainer_170P67), + offsetof(struct ProtocolExtensionContainer_170P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P67 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P67_tags_135, + sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P67_tags_135, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P67_135, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P68_specs_137 = { + sizeof(struct ProtocolExtensionContainer_170P68), + offsetof(struct ProtocolExtensionContainer_170P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P68 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P68_tags_137, + sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P68_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P68_137, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P69_specs_139 = { + sizeof(struct ProtocolExtensionContainer_170P69), + offsetof(struct ProtocolExtensionContainer_170P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P69 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P69_tags_139, + sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P69_tags_139, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P69_139, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P70_specs_141 = { + sizeof(struct ProtocolExtensionContainer_170P70), + offsetof(struct ProtocolExtensionContainer_170P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P70 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P70_tags_141, + sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P70_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P70_141, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P71_specs_143 = { + sizeof(struct ProtocolExtensionContainer_170P71), + offsetof(struct ProtocolExtensionContainer_170P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P71 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P71_tags_143, + sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P71_tags_143, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P71_143, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P72_specs_145 = { + sizeof(struct ProtocolExtensionContainer_170P72), + offsetof(struct ProtocolExtensionContainer_170P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P72 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P72_tags_145, + sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P72_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P72_145, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P73_specs_147 = { + sizeof(struct ProtocolExtensionContainer_170P73), + offsetof(struct ProtocolExtensionContainer_170P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P73 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P73_tags_147, + sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P73_tags_147, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P73_147, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P74_specs_149 = { + sizeof(struct ProtocolExtensionContainer_170P74), + offsetof(struct ProtocolExtensionContainer_170P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P74 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P74_tags_149, + sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P74_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P74_149, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P75_specs_151 = { + sizeof(struct ProtocolExtensionContainer_170P75), + offsetof(struct ProtocolExtensionContainer_170P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P75 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P75_tags_151, + sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P75_tags_151, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P75_151, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P76_specs_153 = { + sizeof(struct ProtocolExtensionContainer_170P76), + offsetof(struct ProtocolExtensionContainer_170P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P76 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P76_tags_153, + sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P76_tags_153, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P76_153, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P77_specs_155 = { + sizeof(struct ProtocolExtensionContainer_170P77), + offsetof(struct ProtocolExtensionContainer_170P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P77 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P77_tags_155, + sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P77_tags_155, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P77_155, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P78_specs_157 = { + sizeof(struct ProtocolExtensionContainer_170P78), + offsetof(struct ProtocolExtensionContainer_170P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P78 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P78_tags_157, + sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P78_tags_157, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P78_157, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P79_specs_159 = { + sizeof(struct ProtocolExtensionContainer_170P79), + offsetof(struct ProtocolExtensionContainer_170P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P79 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P79_tags_159, + sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P79_tags_159, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P79_159, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P80_specs_161 = { + sizeof(struct ProtocolExtensionContainer_170P80), + offsetof(struct ProtocolExtensionContainer_170P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P80 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P80_tags_161, + sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P80_tags_161, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P80_161, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P81_specs_163 = { + sizeof(struct ProtocolExtensionContainer_170P81), + offsetof(struct ProtocolExtensionContainer_170P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P81 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P81_tags_163, + sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P81_tags_163, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P81_163, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P82_specs_165 = { + sizeof(struct ProtocolExtensionContainer_170P82), + offsetof(struct ProtocolExtensionContainer_170P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P82 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P82_tags_165, + sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P82_tags_165, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P82_165, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P83_specs_167 = { + sizeof(struct ProtocolExtensionContainer_170P83), + offsetof(struct ProtocolExtensionContainer_170P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P83 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P83_tags_167, + sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P83_tags_167, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P83_167, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P84_specs_169 = { + sizeof(struct ProtocolExtensionContainer_170P84), + offsetof(struct ProtocolExtensionContainer_170P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P84 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P84_tags_169, + sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P84_tags_169, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P84_169, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P85_specs_171 = { + sizeof(struct ProtocolExtensionContainer_170P85), + offsetof(struct ProtocolExtensionContainer_170P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P85 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P85_tags_171, + sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P85_tags_171, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P85_171, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P86_specs_173 = { + sizeof(struct ProtocolExtensionContainer_170P86), + offsetof(struct ProtocolExtensionContainer_170P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P86 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P86_tags_173, + sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P86_tags_173, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P86_173, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P87_specs_175 = { + sizeof(struct ProtocolExtensionContainer_170P87), + offsetof(struct ProtocolExtensionContainer_170P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P87 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P87_tags_175, + sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P87_tags_175, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P87_175, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P88_specs_177 = { + sizeof(struct ProtocolExtensionContainer_170P88), + offsetof(struct ProtocolExtensionContainer_170P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P88 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P88_tags_177, + sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P88_tags_177, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P88_177, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P89_specs_179 = { + sizeof(struct ProtocolExtensionContainer_170P89), + offsetof(struct ProtocolExtensionContainer_170P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P89 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P89_tags_179, + sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P89_tags_179, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P89_179, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P90_specs_181 = { + sizeof(struct ProtocolExtensionContainer_170P90), + offsetof(struct ProtocolExtensionContainer_170P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P90 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P90_tags_181, + sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P90_tags_181, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P90_181, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P90_specs_181 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P91_183[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNBServedCells_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P91_tags_183[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P91_specs_183 = { + sizeof(struct ProtocolExtensionContainer_170P91), + offsetof(struct ProtocolExtensionContainer_170P91, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P91 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P91_tags_183, + sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P91_tags_183, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P91_constr_183, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P91_183, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P91_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P92_185[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P92_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P92_specs_185 = { + sizeof(struct ProtocolExtensionContainer_170P92), + offsetof(struct ProtocolExtensionContainer_170P92, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P92 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P92_tags_185, + sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P92_tags_185, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P92_constr_185, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P92_185, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P92_specs_185 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P93_187[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P93_tags_187[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P93_specs_187 = { + sizeof(struct ProtocolExtensionContainer_170P93), + offsetof(struct ProtocolExtensionContainer_170P93, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P93 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P93_tags_187, + sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P93_tags_187, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P93_constr_187, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P93_187, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P93_specs_187 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P94_189[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P94_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P94_specs_189 = { + sizeof(struct ProtocolExtensionContainer_170P94), + offsetof(struct ProtocolExtensionContainer_170P94, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P94 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P94_tags_189, + sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P94_tags_189, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P94_constr_189, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P94_189, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P94_specs_189 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P95_191[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P95_tags_191[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P95_specs_191 = { + sizeof(struct ProtocolExtensionContainer_170P95), + offsetof(struct ProtocolExtensionContainer_170P95, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P95 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P95_tags_191, + sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P95_tags_191, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P95_constr_191, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P95_191, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P95_specs_191 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P96_193[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P96_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P96_specs_193 = { + sizeof(struct ProtocolExtensionContainer_170P96), + offsetof(struct ProtocolExtensionContainer_170P96, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P96 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P96_tags_193, + sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P96_tags_193, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P96_constr_193, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P96_193, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P96_specs_193 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P97_195[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRNeighbour_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P97_tags_195[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P97_specs_195 = { + sizeof(struct ProtocolExtensionContainer_170P97), + offsetof(struct ProtocolExtensionContainer_170P97, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P97 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P97_tags_195, + sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P97_tags_195, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P97_constr_195, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P97_195, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P97_specs_195 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P98_197[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Limited_list_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P98_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P98_specs_197 = { + sizeof(struct ProtocolExtensionContainer_170P98), + offsetof(struct ProtocolExtensionContainer_170P98, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P98 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P98_tags_197, + sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P98_tags_197, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P98_constr_197, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P98_197, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P98_specs_197 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P99_199[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P99_tags_199[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P99_specs_199 = { + sizeof(struct ProtocolExtensionContainer_170P99), + offsetof(struct ProtocolExtensionContainer_170P99, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P99 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P99_tags_199, + sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P99_tags_199, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P99_constr_199, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P99_199, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P99_specs_199 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P100_201[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToModify_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P100_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P100_specs_201 = { + sizeof(struct ProtocolExtensionContainer_170P100), + offsetof(struct ProtocolExtensionContainer_170P100, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P100 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P100_tags_201, + sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P100_tags_201, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P100_constr_201, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P100_201, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P100_specs_201 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P101_203[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P101_tags_203[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P101_specs_203 = { + sizeof(struct ProtocolExtensionContainer_170P101), + offsetof(struct ProtocolExtensionContainer_170P101, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P101 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P101_tags_203, + sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P101_tags_203, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P101_constr_203, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P101_203, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P101_specs_203 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P102_205[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P102_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P102_specs_205 = { + sizeof(struct ProtocolExtensionContainer_170P102), + offsetof(struct ProtocolExtensionContainer_170P102, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P102 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P102_tags_205, + sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P102_tags_205, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P102_constr_205, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P102_205, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P102_specs_205 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P103_207[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P103_tags_207[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P103_specs_207 = { + sizeof(struct ProtocolExtensionContainer_170P103), + offsetof(struct ProtocolExtensionContainer_170P103, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P103 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P103_tags_207, + sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P103_tags_207, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P103_constr_207, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P103_207, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P103_specs_207 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P104_209[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABSInformationFDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P104_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P104_specs_209 = { + sizeof(struct ProtocolExtensionContainer_170P104), + offsetof(struct ProtocolExtensionContainer_170P104, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P104 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P104_tags_209, + sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P104_tags_209, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P104_constr_209, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P104_209, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P104_specs_209 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P105_211[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABSInformationTDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P105_tags_211[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P105_specs_211 = { + sizeof(struct ProtocolExtensionContainer_170P105), + offsetof(struct ProtocolExtensionContainer_170P105, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P105 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P105_tags_211, + sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P105_tags_211, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P105_constr_211, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P105_211, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P105_specs_211 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P106_213[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABS_Status_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P106_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P106_specs_213 = { + sizeof(struct ProtocolExtensionContainer_170P106), + offsetof(struct ProtocolExtensionContainer_170P106, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P106 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P106_tags_213, + sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P106_tags_213, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P106_constr_213, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P106_213, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P106_specs_213 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P107_215[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P107_tags_215[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P107_specs_215 = { + sizeof(struct ProtocolExtensionContainer_170P107), + offsetof(struct ProtocolExtensionContainer_170P107, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P107 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P107_tags_215, + sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P107_tags_215, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P107_constr_215, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P107_215, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P107_specs_215 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P108_217[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P108_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P108_specs_217 = { + sizeof(struct ProtocolExtensionContainer_170P108), + offsetof(struct ProtocolExtensionContainer_170P108, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P108 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P108_tags_217, + sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P108_tags_217, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P108_constr_217, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P108_217, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P108_specs_217 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P109_219[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AllocationAndRetentionPriority_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P109_tags_219[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P109_specs_219 = { + sizeof(struct ProtocolExtensionContainer_170P109), + offsetof(struct ProtocolExtensionContainer_170P109, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P109 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P109_tags_219, + sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P109_tags_219, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P109_constr_219, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P109_219, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P109_specs_219 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P110_221[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AS_SecurityInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P110_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P110_specs_221 = { + sizeof(struct ProtocolExtensionContainer_170P110), + offsetof(struct ProtocolExtensionContainer_170P110, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P110 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P110_tags_221, + sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P110_tags_221, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P110_constr_221, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P110_221, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P110_specs_221 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P111_223[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BluetoothMeasurementConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P111_tags_223[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P111_specs_223 = { + sizeof(struct ProtocolExtensionContainer_170P111), + offsetof(struct ProtocolExtensionContainer_170P111, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P111 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P111_tags_223, + sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P111_tags_223, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P111_constr_223, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P111_223, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P111_specs_223 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P112_225[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P112_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P112_specs_225 = { + sizeof(struct ProtocolExtensionContainer_170P112), + offsetof(struct ProtocolExtensionContainer_170P112, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P112 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P112_tags_225, + sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P112_tags_225, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P112_constr_225, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P112_225, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P112_specs_225 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P113_227[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P113_tags_227[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P113_specs_227 = { + sizeof(struct ProtocolExtensionContainer_170P113), + offsetof(struct ProtocolExtensionContainer_170P113, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P113 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P113_tags_227, + sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P113_tags_227, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P113_constr_227, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P113_227, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P113_specs_227 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P114_229[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellReplacingInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P114_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P114_specs_229 = { + sizeof(struct ProtocolExtensionContainer_170P114), + offsetof(struct ProtocolExtensionContainer_170P114, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P114 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P114_tags_229, + sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P114_tags_229, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P114_constr_229, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P114_229, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P114_specs_229 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P115_231[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellType_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P115_tags_231[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P115_specs_231 = { + sizeof(struct ProtocolExtensionContainer_170P115), + offsetof(struct ProtocolExtensionContainer_170P115, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P115 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P115_tags_231, + sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P115_tags_231, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P115_constr_231, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P115_231, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P115_specs_231 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P116_233[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictionsItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P116_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P116_specs_233 = { + sizeof(struct ProtocolExtensionContainer_170P116), + offsetof(struct ProtocolExtensionContainer_170P116, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P116 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P116_tags_233, + sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P116_tags_233, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P116_constr_233, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P116_233, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P116_specs_233 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P117_235[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPHypothesisSetItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P117_tags_235[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P117_specs_235 = { + sizeof(struct ProtocolExtensionContainer_170P117), + offsetof(struct ProtocolExtensionContainer_170P117, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P117 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P117_tags_235, + sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P117_tags_235, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P117_constr_235, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P117_235, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P117_specs_235 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P118_237[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P118_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P118_specs_237 = { + sizeof(struct ProtocolExtensionContainer_170P118), + offsetof(struct ProtocolExtensionContainer_170P118, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P118 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P118_tags_237, + sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P118_tags_237, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P118_constr_237, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P118_237, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P118_specs_237 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P119_239[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformationItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P119_tags_239[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P119_specs_239 = { + sizeof(struct ProtocolExtensionContainer_170P119), + offsetof(struct ProtocolExtensionContainer_170P119, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P119 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P119_tags_239, + sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P119_tags_239, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P119_constr_239, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P119_239, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P119_specs_239 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P120_241[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformationStartTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P120_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P120_specs_241 = { + sizeof(struct ProtocolExtensionContainer_170P120), + offsetof(struct ProtocolExtensionContainer_170P120, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P120 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P120_tags_241, + sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P120_tags_241, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P120_constr_241, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P120_241, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P120_specs_241 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P121_243[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacity_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P121_tags_243[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P121_specs_243 = { + sizeof(struct ProtocolExtensionContainer_170P121), + offsetof(struct ProtocolExtensionContainer_170P121, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P121 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P121_tags_243, + sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P121_tags_243, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P121_constr_243, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P121_243, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P121_specs_243 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P122_245[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacityGroup_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P122_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P122_specs_245 = { + sizeof(struct ProtocolExtensionContainer_170P122), + offsetof(struct ProtocolExtensionContainer_170P122, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P122 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P122_tags_245, + sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P122_tags_245, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P122_constr_245, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P122_245, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P122_specs_245 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P123_247[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvalue_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P123_tags_247[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P123_specs_247 = { + sizeof(struct ProtocolExtensionContainer_170P123), + offsetof(struct ProtocolExtensionContainer_170P123, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P123 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P123_tags_247, + sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P123_tags_247, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P123_constr_247, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P123_247, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P123_specs_247 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P124_249[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTValueExtended_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P124_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P124_specs_249 = { + sizeof(struct ProtocolExtensionContainer_170P124), + offsetof(struct ProtocolExtensionContainer_170P124, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P124 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P124_tags_249, + sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P124_tags_249, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P124_constr_249, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P124_249, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P124_specs_249 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P125_251[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P125_tags_251[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P125_specs_251 = { + sizeof(struct ProtocolExtensionContainer_170P125), + offsetof(struct ProtocolExtensionContainer_170P125, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P125 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P125_tags_251, + sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P125_tags_251, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P125_constr_251, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P125_251, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P125_specs_251 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P126_253[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P126_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P126_specs_253 = { + sizeof(struct ProtocolExtensionContainer_170P126), + offsetof(struct ProtocolExtensionContainer_170P126, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P126 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P126_tags_253, + sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P126_tags_253, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P126_constr_253, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P126_253, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P126_specs_253 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P127_255[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P127_tags_255[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P127_specs_255 = { + sizeof(struct ProtocolExtensionContainer_170P127), + offsetof(struct ProtocolExtensionContainer_170P127, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P127 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P127_tags_255, + sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P127_tags_255, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P127_constr_255, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P127_255, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P127_specs_255 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P128_257[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P128_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P128_specs_257 = { + sizeof(struct ProtocolExtensionContainer_170P128), + offsetof(struct ProtocolExtensionContainer_170P128, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P128 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P128_tags_257, + sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P128_tags_257, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P128_constr_257, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P128_257, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P128_specs_257 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P129_259[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportPerCSIProcess_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P129_tags_259[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P129_specs_259 = { + sizeof(struct ProtocolExtensionContainer_170P129), + offsetof(struct ProtocolExtensionContainer_170P129, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P129 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P129_tags_259, + sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P129_tags_259, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P129_constr_259, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P129_259, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P129_specs_259 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P130_261[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportPerCSIProcessItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P130_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P130_specs_261 = { + sizeof(struct ProtocolExtensionContainer_170P130), + offsetof(struct ProtocolExtensionContainer_170P130, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P130 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P130_tags_261, + sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P130_tags_261, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P130_constr_261, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P130_261, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P130_specs_261 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P131_263[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P131_tags_263[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P131_specs_263 = { + sizeof(struct ProtocolExtensionContainer_170P131), + offsetof(struct ProtocolExtensionContainer_170P131, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P131 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P131_tags_263, + sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P131_tags_263, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P131_constr_263, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P131_263, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P131_specs_263 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P132_265[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DeliveryStatus_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P132_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P132_specs_265 = { + sizeof(struct ProtocolExtensionContainer_170P132), + offsetof(struct ProtocolExtensionContainer_170P132, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P132 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P132_tags_265, + sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P132_tags_265, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P132_constr_265, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P132_265, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P132_specs_265 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P133_267[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DynamicNAICSInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P133_tags_267[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P133_specs_267 = { + sizeof(struct ProtocolExtensionContainer_170P133), + offsetof(struct ProtocolExtensionContainer_170P133, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P133 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P133_tags_267, + sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P133_tags_267, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P133_constr_267, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P133_267, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P133_specs_267 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P134_269[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P134_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P134_specs_269 = { + sizeof(struct ProtocolExtensionContainer_170P134), + offsetof(struct ProtocolExtensionContainer_170P134, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P134 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P134_tags_269, + sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P134_tags_269, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P134_constr_269, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P134_269, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P134_specs_269 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P135_271[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTP_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P135_tags_271[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P135_specs_271 = { + sizeof(struct ProtocolExtensionContainer_170P135), + offsetof(struct ProtocolExtensionContainer_170P135, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P135 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P135_tags_271, + sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P135_tags_271, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P135_constr_271, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P135_271, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P135_specs_271 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P136_273[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTPStartTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P136_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P136_specs_273 = { + sizeof(struct ProtocolExtensionContainer_170P136), + offsetof(struct ProtocolExtensionContainer_170P136, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P136 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P136_tags_273, + sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P136_tags_273, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P136_constr_273, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P136_273, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P136_specs_273 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P137_275[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EN_DC_ResourceConfigurationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P137_tags_275[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P137_specs_275 = { + sizeof(struct ProtocolExtensionContainer_170P137), + offsetof(struct ProtocolExtensionContainer_170P137, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P137 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P137_tags_275, + sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P137_tags_275, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P137_constr_275, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P137_275, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P137_specs_275 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P138_277[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P138_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P138_specs_277 = { + sizeof(struct ProtocolExtensionContainer_170P138), + offsetof(struct ProtocolExtensionContainer_170P138, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P138 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P138_tags_277, + sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P138_tags_277, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P138_constr_277, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P138_277, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P138_specs_277 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P139_279[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P139_tags_279[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P139_specs_279 = { + sizeof(struct ProtocolExtensionContainer_170P139), + offsetof(struct ProtocolExtensionContainer_170P139, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P139 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P139_tags_279, + sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P139_tags_279, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P139_constr_279, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P139_279, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P139_specs_279 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P140_281[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P140_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P140_specs_281 = { + sizeof(struct ProtocolExtensionContainer_170P140), + offsetof(struct ProtocolExtensionContainer_170P140, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P140 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P140_tags_281, + sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P140_tags_281, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P140_constr_281, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P140_281, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P140_specs_281 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P141_283[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABUsageReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P141_tags_283[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P141_specs_283 = { + sizeof(struct ProtocolExtensionContainer_170P141), + offsetof(struct ProtocolExtensionContainer_170P141, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P141 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P141_tags_283, + sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P141_tags_283, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P141_constr_283, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P141_283, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P141_specs_283 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P142_285[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P142_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P142_specs_285 = { + sizeof(struct ProtocolExtensionContainer_170P142), + offsetof(struct ProtocolExtensionContainer_170P142, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P142 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P142_tags_285, + sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P142_tags_285, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P142_constr_285, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P142_285, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P142_specs_285 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P143_287[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEActivityBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P143_tags_287[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P143_specs_287 = { + sizeof(struct ProtocolExtensionContainer_170P143), + offsetof(struct ProtocolExtensionContainer_170P143, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P143 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P143_tags_287, + sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P143_tags_287, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P143_constr_287, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P143_287, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P143_specs_287 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P144_289[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P144_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P144_specs_289 = { + sizeof(struct ProtocolExtensionContainer_170P144), + offsetof(struct ProtocolExtensionContainer_170P144, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P144 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P144_tags_289, + sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P144_tags_289, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P144_constr_289, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P144_289, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P144_specs_289 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P145_291[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P145_tags_291[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P145_specs_291 = { + sizeof(struct ProtocolExtensionContainer_170P145), + offsetof(struct ProtocolExtensionContainer_170P145, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P145 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P145_tags_291, + sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P145_tags_291, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P145_constr_291, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P145_291, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P145_specs_291 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P146_293[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenTAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P146_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P146_specs_293 = { + sizeof(struct ProtocolExtensionContainer_170P146), + offsetof(struct ProtocolExtensionContainer_170P146, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P146 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P146_tags_293, + sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P146_tags_293, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P146_constr_293, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P146_293, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P146_specs_293 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P147_295[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenLAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P147_tags_295[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P147_specs_295 = { + sizeof(struct ProtocolExtensionContainer_170P147), + offsetof(struct ProtocolExtensionContainer_170P147, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P147 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P147_tags_295, + sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P147_tags_295, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P147_constr_295, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P147_295, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P147_specs_295 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P148_297[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FreqBandNrItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P148_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P148_specs_297 = { + sizeof(struct ProtocolExtensionContainer_170P148), + offsetof(struct ProtocolExtensionContainer_170P148, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P148 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P148_tags_297, + sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P148_tags_297, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P148_constr_297, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P148_297, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P148_specs_297 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P149_299[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GBR_QosInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P149_tags_299[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P149_specs_299 = { + sizeof(struct ProtocolExtensionContainer_170P149), + offsetof(struct ProtocolExtensionContainer_170P149, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P149 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P149_tags_299, + sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P149_tags_299, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P149_constr_299, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P149_299, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P149_specs_299 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P150_301[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P150_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P150_specs_301 = { + sizeof(struct ProtocolExtensionContainer_170P150), + offsetof(struct ProtocolExtensionContainer_170P150, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P150 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P150_tags_301, + sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P150_tags_301, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P150_constr_301, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P150_301, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P150_specs_301 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P151_303[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P151_tags_303[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P151_specs_303 = { + sizeof(struct ProtocolExtensionContainer_170P151), + offsetof(struct ProtocolExtensionContainer_170P151, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P151 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P151_tags_303, + sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P151_tags_303, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P151_constr_303, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P151_303, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P151_specs_303 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P152_305[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P152_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P152_specs_305 = { + sizeof(struct ProtocolExtensionContainer_170P152), + offsetof(struct ProtocolExtensionContainer_170P152, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P152 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P152_tags_305, + sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P152_tags_305, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P152_constr_305, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P152_305, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P152_specs_305 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P153_307[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GU_Group_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P153_tags_307[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P153_specs_307 = { + sizeof(struct ProtocolExtensionContainer_170P153), + offsetof(struct ProtocolExtensionContainer_170P153, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P153 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P153_tags_307, + sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P153_tags_307, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P153_constr_307, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P153_307, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P153_specs_307 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P154_309[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P154_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P154_specs_309 = { + sizeof(struct ProtocolExtensionContainer_170P154), + offsetof(struct ProtocolExtensionContainer_170P154, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P154 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P154_tags_309, + sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P154_tags_309, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P154_constr_309, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P154_309, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P154_specs_309 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P155_311[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P155_tags_311[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P155_specs_311 = { + sizeof(struct ProtocolExtensionContainer_170P155), + offsetof(struct ProtocolExtensionContainer_170P155, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P155 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P155_tags_311, + sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P155_tags_311, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P155_constr_311, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P155_311, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P155_specs_311 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P156_313[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HWLoadIndicator_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P156_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P156_specs_313 = { + sizeof(struct ProtocolExtensionContainer_170P156), + offsetof(struct ProtocolExtensionContainer_170P156, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P156 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P156_tags_313, + sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P156_tags_313, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P156_constr_313, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P156_313, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P156_specs_313 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P157_315[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P157_tags_315[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P157_specs_315 = { + sizeof(struct ProtocolExtensionContainer_170P157), + offsetof(struct ProtocolExtensionContainer_170P157, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P157 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P157_tags_315, + sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P157_tags_315, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P157_constr_315, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P157_315, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P157_specs_315 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P158_317[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LocationReportingInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P158_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P158_specs_317 = { + sizeof(struct ProtocolExtensionContainer_170P158), + offsetof(struct ProtocolExtensionContainer_170P158, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P158 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P158_tags_317, + sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P158_tags_317, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P158_constr_317, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P158_317, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P158_specs_317 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P159_319[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M1PeriodicReporting_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P159_tags_319[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P159_specs_319 = { + sizeof(struct ProtocolExtensionContainer_170P159), + offsetof(struct ProtocolExtensionContainer_170P159, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P159 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P159_tags_319, + sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P159_tags_319, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P159_constr_319, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P159_319, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P159_specs_319 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P160_321[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M1ThresholdEventA2_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P160_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P160_specs_321 = { + sizeof(struct ProtocolExtensionContainer_170P160), + offsetof(struct ProtocolExtensionContainer_170P160, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P160 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P160_tags_321, + sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P160_tags_321, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P160_constr_321, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P160_321, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P160_specs_321 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P161_323[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M3Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P161_tags_323[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P161_specs_323 = { + sizeof(struct ProtocolExtensionContainer_170P161), + offsetof(struct ProtocolExtensionContainer_170P161, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P161 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P161_tags_323, + sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P161_tags_323, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P161_constr_323, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P161_323, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P161_specs_323 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P162_325[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M4Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P162_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P162_specs_325 = { + sizeof(struct ProtocolExtensionContainer_170P162), + offsetof(struct ProtocolExtensionContainer_170P162, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P162 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P162_tags_325, + sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P162_tags_325, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P162_constr_325, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P162_325, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P162_specs_325 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P163_327[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M5Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P163_tags_327[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P163_specs_327 = { + sizeof(struct ProtocolExtensionContainer_170P163), + offsetof(struct ProtocolExtensionContainer_170P163, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P163 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P163_tags_327, + sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P163_tags_327, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P163_constr_327, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P163_327, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P163_specs_327 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P164_329[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M6Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P164_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P164_specs_329 = { + sizeof(struct ProtocolExtensionContainer_170P164), + offsetof(struct ProtocolExtensionContainer_170P164, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P164 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P164_tags_329, + sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P164_tags_329, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P164_constr_329, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P164_329, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P164_specs_329 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P165_331[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M7Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P165_tags_331[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P165_specs_331 = { + sizeof(struct ProtocolExtensionContainer_170P165), + offsetof(struct ProtocolExtensionContainer_170P165, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P165 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P165_tags_331, + sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P165_tags_331, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P165_constr_331, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P165_331, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P165_specs_331 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P166_333[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDT_Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P166_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P166_specs_333 = { + sizeof(struct ProtocolExtensionContainer_170P166), + offsetof(struct ProtocolExtensionContainer_170P166, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P166 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P166_tags_333, + sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P166_tags_333, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P166_constr_333, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P166_333, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P166_specs_333 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P167_335[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P167_tags_335[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P167_specs_335 = { + sizeof(struct ProtocolExtensionContainer_170P167), + offsetof(struct ProtocolExtensionContainer_170P167, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P167 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P167_tags_335, + sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P167_tags_335, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P167_constr_335, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P167_335, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P167_specs_335 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P168_337[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P168_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P168_specs_337 = { + sizeof(struct ProtocolExtensionContainer_170P168), + offsetof(struct ProtocolExtensionContainer_170P168, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P168 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P168_tags_337, + sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P168_tags_337, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P168_constr_337, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P168_337, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P168_specs_337 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P169_339[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BandInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P169_tags_339[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P169_specs_339 = { + sizeof(struct ProtocolExtensionContainer_170P169), + offsetof(struct ProtocolExtensionContainer_170P169, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P169 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P169_tags_339, + sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P169_tags_339, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P169_constr_339, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P169_339, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P169_specs_339 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P170_341[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SplitSRB_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P170_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P170_specs_341 = { + sizeof(struct ProtocolExtensionContainer_170P170), + offsetof(struct ProtocolExtensionContainer_170P170, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P170 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P170_tags_341, + sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P170_tags_341, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P170_constr_341, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P170_341, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P170_specs_341 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P171_343[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UENRMeasurement_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P171_tags_343[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P171_specs_343 = { + sizeof(struct ProtocolExtensionContainer_170P171), + offsetof(struct ProtocolExtensionContainer_170P171, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P171 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P171_tags_343, + sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P171_tags_343, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P171_constr_343, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P171_343, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P171_specs_343 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P172_345[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Neighbour_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P172_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P172_specs_345 = { + sizeof(struct ProtocolExtensionContainer_170P172), + offsetof(struct ProtocolExtensionContainer_170P172, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P172 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P172_tags_345, + sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P172_tags_345, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P172_constr_345, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P172_345, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P172_specs_345 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P173_347[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRFreqInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P173_tags_347[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P173_specs_347 = { + sizeof(struct ProtocolExtensionContainer_170P173), + offsetof(struct ProtocolExtensionContainer_170P173, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P173 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P173_tags_347, + sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P173_tags_347, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P173_constr_347, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P173_347, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P173_specs_347 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P174_349[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P174_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P174_specs_349 = { + sizeof(struct ProtocolExtensionContainer_170P174), + offsetof(struct ProtocolExtensionContainer_170P174, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P174 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P174_tags_349, + sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P174_tags_349, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P174_constr_349, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P174_349, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P174_specs_349 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P175_351[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NR_TxBW_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P175_tags_351[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P175_specs_351 = { + sizeof(struct ProtocolExtensionContainer_170P175), + offsetof(struct ProtocolExtensionContainer_170P175, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P175 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P175_tags_351, + sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P175_tags_351, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P175_constr_351, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P175_351, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P175_specs_351 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P176_353[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P176_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P176_specs_353 = { + sizeof(struct ProtocolExtensionContainer_170P176), + offsetof(struct ProtocolExtensionContainer_170P176, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P176 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P176_tags_353, + sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P176_tags_353, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P176_constr_353, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P176_353, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P176_specs_353 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P177_355[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PRACH_Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P177_tags_355[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P177_specs_355 = { + sizeof(struct ProtocolExtensionContainer_170P177), + offsetof(struct ProtocolExtensionContainer_170P177, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P177 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P177_tags_355, + sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P177_tags_355, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P177_constr_355, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P177_355, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P177_specs_355 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P178_357[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PLMNAreaBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P178_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P178_specs_357 = { + sizeof(struct ProtocolExtensionContainer_170P178), + offsetof(struct ProtocolExtensionContainer_170P178, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P178 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P178_tags_357, + sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P178_tags_357, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P178_constr_357, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P178_357, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P178_specs_357 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P179_359[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P179_tags_359[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P179_specs_359 = { + sizeof(struct ProtocolExtensionContainer_170P179), + offsetof(struct ProtocolExtensionContainer_170P179, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P179 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P179_tags_359, + sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P179_tags_359, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P179_constr_359, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P179_359, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P179_specs_359 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P180_361[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P180_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P180_specs_361 = { + sizeof(struct ProtocolExtensionContainer_170P180), + offsetof(struct ProtocolExtensionContainer_170P180, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P180 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P180_tags_361, + sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P180_tags_361, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P180_constr_361, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P180_361, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P180_specs_361 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P181_363[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedFootprintTimePattern_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P181_tags_363[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P181_specs_363 = { + sizeof(struct ProtocolExtensionContainer_170P181), + offsetof(struct ProtocolExtensionContainer_170P181, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P181 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P181_tags_363, + sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P181_tags_363, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P181_constr_363, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P181_363, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P181_specs_363 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P182_365[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedResourceList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P182_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P182_specs_365 = { + sizeof(struct ProtocolExtensionContainer_170P182), + offsetof(struct ProtocolExtensionContainer_170P182, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P182 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P182_tags_365, + sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P182_tags_365, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P182_constr_365, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P182_365, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P182_specs_365 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P183_367[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RadioResourceStatus_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P183_tags_367[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P183_specs_367 = { + sizeof(struct ProtocolExtensionContainer_170P183), + offsetof(struct ProtocolExtensionContainer_170P183, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P183 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P183_tags_367, + sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P183_tags_367, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P183_constr_367, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P183_367, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P183_specs_367 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P184_369[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RelativeNarrowbandTxPower_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P184_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P184_specs_369 = { + sizeof(struct ProtocolExtensionContainer_170P184), + offsetof(struct ProtocolExtensionContainer_170P184, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P184 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P184_tags_369, + sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P184_tags_369, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P184_constr_369, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P184_369, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P184_specs_369 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P185_371[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReservedSubframePattern_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P185_tags_371[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P185_specs_371 = { + sizeof(struct ProtocolExtensionContainer_170P185), + offsetof(struct ProtocolExtensionContainer_170P185, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P185 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P185_tags_371, + sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P185_tags_371, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P185_constr_371, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P185_371, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P185_specs_371 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P186_373[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P186_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P186_specs_373 = { + sizeof(struct ProtocolExtensionContainer_170P186), + offsetof(struct ProtocolExtensionContainer_170P186, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P186 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P186_tags_373, + sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P186_tags_373, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P186_constr_373, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P186_373, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P186_specs_373 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P187_375[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMeasurementResult_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P187_tags_375[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P187_specs_375 = { + sizeof(struct ProtocolExtensionContainer_170P187), + offsetof(struct ProtocolExtensionContainer_170P187, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P187 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P187_tags_375, + sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P187_tags_375, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P187_constr_375, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P187_375, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P187_specs_375 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P188_377[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMRList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P188_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P188_specs_377 = { + sizeof(struct ProtocolExtensionContainer_170P188), + offsetof(struct ProtocolExtensionContainer_170P188, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P188 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P188_tags_377, + sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P188_tags_377, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P188_constr_377, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P188_377, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P188_specs_377 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P189_379[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1TNLLoadIndicator_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P189_tags_379[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P189_specs_379 = { + sizeof(struct ProtocolExtensionContainer_170P189), + offsetof(struct ProtocolExtensionContainer_170P189, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P189 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P189_tags_379, + sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P189_tags_379, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P189_constr_379, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P189_379, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P189_specs_379 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P190_381[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P190_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P190_specs_381 = { + sizeof(struct ProtocolExtensionContainer_170P190), + offsetof(struct ProtocolExtensionContainer_170P190, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P190 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P190_tags_381, + sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P190_tags_381, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P190_constr_381, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P190_381, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P190_specs_381 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P191_383[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCell_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P191_tags_383[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P191_specs_383 = { + sizeof(struct ProtocolExtensionContainer_170P191), + offsetof(struct ProtocolExtensionContainer_170P191, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P191 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P191_tags_383, + sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P191_tags_383, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P191_constr_383, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P191_383, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P191_specs_383 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P192_385[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P192_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P192_specs_385 = { + sizeof(struct ProtocolExtensionContainer_170P192), + offsetof(struct ProtocolExtensionContainer_170P192, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P192 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P192_tags_385, + sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P192_tags_385, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P192_constr_385, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P192_385, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P192_specs_385 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P193_387[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P193_tags_387[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P193_specs_387 = { + sizeof(struct ProtocolExtensionContainer_170P193), + offsetof(struct ProtocolExtensionContainer_170P193, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P193 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P193_tags_387, + sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P193_tags_387, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P193_constr_387, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P193_387, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P193_specs_387 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P194_389[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SpecialSubframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P194_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P194_specs_389 = { + sizeof(struct ProtocolExtensionContainer_170P194), + offsetof(struct ProtocolExtensionContainer_170P194, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P194 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P194_tags_389, + sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P194_tags_389, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P194_constr_389, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P194_389, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P194_specs_389 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P195_391[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P195_tags_391[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P195_specs_391 = { + sizeof(struct ProtocolExtensionContainer_170P195), + offsetof(struct ProtocolExtensionContainer_170P195, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P195 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P195_tags_391, + sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P195_tags_391, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P195_constr_391, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P195_391, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P195_specs_391 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P196_393[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P196_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P196_specs_393 = { + sizeof(struct ProtocolExtensionContainer_170P196), + offsetof(struct ProtocolExtensionContainer_170P196, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P196 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P196_tags_393, + sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P196_tags_393, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P196_constr_393, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P196_393, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P196_specs_393 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P197_395[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ScheduledCommunicationTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P197_tags_395[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P197_specs_395 = { + sizeof(struct ProtocolExtensionContainer_170P197), + offsetof(struct ProtocolExtensionContainer_170P197, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P197 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P197_tags_395, + sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P197_tags_395, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P197_constr_395, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P197_395, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P197_specs_395 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P198_397[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQIItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P198_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P198_specs_397 = { + sizeof(struct ProtocolExtensionContainer_170P198), + offsetof(struct ProtocolExtensionContainer_170P198, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P198 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P198_tags_397, + sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P198_tags_397, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P198_constr_397, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P198_397, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P198_specs_397 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P199_399[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SULInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P199_tags_399[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P199_specs_399 = { + sizeof(struct ProtocolExtensionContainer_170P199), + offsetof(struct ProtocolExtensionContainer_170P199, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P199 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P199_tags_399, + sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P199_tags_399, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P199_constr_399, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P199_399, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P199_specs_399 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P200_401[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupportedSULFreqBandItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P200_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P200_specs_401 = { + sizeof(struct ProtocolExtensionContainer_170P200), + offsetof(struct ProtocolExtensionContainer_170P200, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P200 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P200_tags_401, + sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P200_tags_401, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P200_constr_401, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P200_401, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P200_specs_401 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P201_403[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TABasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P201_tags_403[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P201_specs_403 = { + sizeof(struct ProtocolExtensionContainer_170P201), + offsetof(struct ProtocolExtensionContainer_170P201, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P201 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P201_tags_403, + sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P201_tags_403, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P201_constr_403, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P201_403, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P201_specs_403 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P202_405[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAIBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P202_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P202_specs_405 = { + sizeof(struct ProtocolExtensionContainer_170P202), + offsetof(struct ProtocolExtensionContainer_170P202, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P202 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P202_tags_405, + sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P202_tags_405, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P202_constr_405, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P202_405, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P202_specs_405 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P203_407[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P203_tags_407[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P203_specs_407 = { + sizeof(struct ProtocolExtensionContainer_170P203), + offsetof(struct ProtocolExtensionContainer_170P203, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P203 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P203_tags_407, + sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P203_tags_407, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P203_constr_407, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P203_407, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P203_specs_407 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P204_409[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TABasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P204_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P204_specs_409 = { + sizeof(struct ProtocolExtensionContainer_170P204), + offsetof(struct ProtocolExtensionContainer_170P204, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P204 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P204_tags_409, + sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P204_tags_409, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P204_constr_409, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P204_409, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P204_specs_409 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P205_411[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAIBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P205_tags_411[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P205_specs_411 = { + sizeof(struct ProtocolExtensionContainer_170P205), + offsetof(struct ProtocolExtensionContainer_170P205, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P205 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P205_tags_411, + sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P205_tags_411, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P205_constr_411, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P205_411, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P205_specs_411 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P206_413[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P206_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P206_specs_413 = { + sizeof(struct ProtocolExtensionContainer_170P206), + offsetof(struct ProtocolExtensionContainer_170P206, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P206 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P206_tags_413, + sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P206_tags_413, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P206_constr_413, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P206_413, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P206_specs_413 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P207_415[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P207_tags_415[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P207_specs_415 = { + sizeof(struct ProtocolExtensionContainer_170P207), + offsetof(struct ProtocolExtensionContainer_170P207, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P207 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P207_tags_415, + sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P207_tags_415, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P207_constr_415, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P207_415, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P207_specs_415 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P208_417[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Tunnel_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P208_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P208_specs_417 = { + sizeof(struct ProtocolExtensionContainer_170P208), + offsetof(struct ProtocolExtensionContainer_170P208, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P208 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P208_tags_417, + sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P208_tags_417, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P208_constr_417, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P208_417, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P208_specs_417 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P209_419[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregate_MaximumBitrate_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P209_tags_419[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P209_specs_419 = { + sizeof(struct ProtocolExtensionContainer_170P209), + offsetof(struct ProtocolExtensionContainer_170P209, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P209 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P209_tags_419, + sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P209_tags_419, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P209_constr_419, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P209_419, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P209_specs_419 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P210_421[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAppLayerMeasConfig_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P210_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P210_specs_421 = { + sizeof(struct ProtocolExtensionContainer_170P210), + offsetof(struct ProtocolExtensionContainer_170P210, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P210 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P210_tags_421, + sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P210_tags_421, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P210_constr_421, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P210_421, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P210_specs_421 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P211_423[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESecurityCapabilities_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P211_tags_423[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P211_specs_423 = { + sizeof(struct ProtocolExtensionContainer_170P211), + offsetof(struct ProtocolExtensionContainer_170P211, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P211 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P211_tags_423, + sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P211_tags_423, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P211_constr_423, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P211_423, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P211_specs_423 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P212_425[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P212_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P212_specs_425 = { + sizeof(struct ProtocolExtensionContainer_170P212), + offsetof(struct ProtocolExtensionContainer_170P212, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P212 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P212_tags_425, + sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P212_tags_425, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P212_constr_425, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P212_425, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P212_specs_425 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P213_427[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P213_tags_427[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P213_specs_427 = { + sizeof(struct ProtocolExtensionContainer_170P213), + offsetof(struct ProtocolExtensionContainer_170P213, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P213 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P213_tags_427, + sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P213_tags_427, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P213_constr_427, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P213_427, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P213_specs_427 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P214_429[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULandDLSharing_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P214_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P214_specs_429 = { + sizeof(struct ProtocolExtensionContainer_170P214), + offsetof(struct ProtocolExtensionContainer_170P214, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P214 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P214_tags_429, + sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P214_tags_429, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P214_constr_429, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P214_429, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P214_specs_429 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P215_431[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P215_tags_431[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P215_specs_431 = { + sizeof(struct ProtocolExtensionContainer_170P215), + offsetof(struct ProtocolExtensionContainer_170P215, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P215 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P215_tags_431, + sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P215_tags_431, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P215_constr_431, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P215_431, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P215_specs_431 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P216_433[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P216_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P216_specs_433 = { + sizeof(struct ProtocolExtensionContainer_170P216), + offsetof(struct ProtocolExtensionContainer_170P216, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P216 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P216_tags_433, + sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P216_tags_433, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P216_constr_433, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P216_433, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P216_specs_433 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P217_435[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULOnlySharing_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P217_tags_435[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P217_specs_435 = { + sizeof(struct ProtocolExtensionContainer_170P217), + offsetof(struct ProtocolExtensionContainer_170P217, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P217 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P217_tags_435, + sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P217_tags_435, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P217_constr_435, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P217_435, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P217_specs_435 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P218_437[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UsableABSInformationFDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P218_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P218_specs_437 = { + sizeof(struct ProtocolExtensionContainer_170P218), + offsetof(struct ProtocolExtensionContainer_170P218, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P218 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P218_tags_437, + sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P218_tags_437, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P218_constr_437, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P218_437, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P218_specs_437 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P219_439[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UsableABSInformationTDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P219_tags_439[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P219_specs_439 = { + sizeof(struct ProtocolExtensionContainer_170P219), + offsetof(struct ProtocolExtensionContainer_170P219, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P219 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P219_tags_439, + sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P219_tags_439, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P219_constr_439, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P219_439, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P219_specs_439 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P220_441[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P220_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P220_specs_441 = { + sizeof(struct ProtocolExtensionContainer_170P220), + offsetof(struct ProtocolExtensionContainer_170P220, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P220 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P220_tags_441, + sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P220_tags_441, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P220_constr_441, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P220_441, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P220_specs_441 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P221_443[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WidebandCQI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P221_tags_443[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P221_specs_443 = { + sizeof(struct ProtocolExtensionContainer_170P221), + offsetof(struct ProtocolExtensionContainer_170P221, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P221 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P221_tags_443, + sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P221_tags_443, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P221_constr_443, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P221_443, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P221_specs_443 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P222_445[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WLANMeasurementConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P222_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P222_specs_445 = { + sizeof(struct ProtocolExtensionContainer_170P222), + offsetof(struct ProtocolExtensionContainer_170P222, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P222 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P222_tags_445, + sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P222_tags_445, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P222_constr_445, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P222_445, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P222_specs_445 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.h b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.h new file mode 100644 index 0000000..3de7cd3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionContainer.h @@ -0,0 +1,2505 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolExtensionContainer_H_ +#define _ProtocolExtensionContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UE_ContextInformation_ExtIEs; +struct E_RABs_ToBeSetup_ItemExtIEs; +struct UE_ContextReferenceAtSeNB_ItemExtIEs; +struct UE_ContextReferenceAtWT_ItemExtIEs; +struct UE_ContextReferenceAtSgNB_ItemExtIEs; +struct E_RABs_Admitted_Item_ExtIEs; +struct E_RABs_SubjectToStatusTransfer_ItemExtIEs; +struct CellInformation_Item_ExtIEs; +struct ServedCellsToModify_Item_ExtIEs; +struct CellToReport_Item_ExtIEs; +struct MeasurementInitiationResult_Item_ExtIEs; +struct MeasurementFailureCause_Item_ExtIEs; +struct CompleteFailureCauseInformation_Item_ExtIEs; +struct CellMeasurementResult_Item_ExtIEs; +struct ServedCellsToActivate_Item_ExtIEs; +struct ActivatedCellList_Item_ExtIEs; +struct RNL_Header_Item_ExtIEs; +struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs; +struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs; +struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs; +struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs; +struct UE_ContextInformationSeNBModReqExtIEs; +struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqdItemExtIEs; +struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs; +struct E_RABs_SubjectToCounterCheckItemExtIEs; +struct UE_ContextInformationRetrieve_ExtIEs; +struct E_RABs_ToBeSetupRetrieve_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs; +struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs; +struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs; +struct UE_ContextInformationSgNBModReqExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs; +struct ServedEUTRAcellsENDCX2Management_ExtIEs; +struct En_gNBServedCells_ExtIEs; +struct ServedNRCell_Information_ExtIEs; +struct FDD_InfoServedNRCell_Information_ExtIEs; +struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs; +struct TDD_InfoServedNRCell_Information_ExtIEs; +struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs; +struct NRNeighbour_Information_ExtIEs; +struct Limited_list_ExtIEs; +struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs; +struct ServedNRCellsToModify_Item_ExtIEs; +struct ServedNRCellsToActivate_Item_ExtIEs; +struct ActivatedNRCellList_Item_ExtIEs; +struct E_RABs_DataForwardingAddress_ItemExtIEs; +struct ABSInformationFDD_ExtIEs; +struct ABSInformationTDD_ExtIEs; +struct ABS_Status_ExtIEs; +struct AdditionalSpecialSubframe_Info_ExtIEs; +struct AdditionalSpecialSubframeExtension_Info_ExtIEs; +struct AllocationAndRetentionPriority_ExtIEs; +struct AS_SecurityInformation_ExtIEs; +struct BluetoothMeasurementConfiguration_ExtIEs; +struct CellBasedMDT_ExtIEs; +struct CellBasedQMC_ExtIEs; +struct CellReplacingInfo_ExtIEs; +struct CellType_ExtIEs; +struct CNTypeRestrictionsItem_ExtIEs; +struct CoMPHypothesisSetItem_ExtIEs; +struct CoMPInformation_ExtIEs; +struct CoMPInformationItem_ExtIEs; +struct CoMPInformationStartTime_ExtIEs; +struct CompositeAvailableCapacity_ExtIEs; +struct CompositeAvailableCapacityGroup_ExtIEs; +struct COUNTvalue_ExtIEs; +struct COUNTValueExtended_ExtIEs; +struct COUNTvaluePDCP_SNlength18_ExtIEs; +struct CriticalityDiagnostics_ExtIEs; +struct CriticalityDiagnostics_IE_List_ExtIEs; +struct CSIReportList_ExtIEs; +struct CSIReportPerCSIProcess_ExtIEs; +struct CSIReportPerCSIProcessItem_ExtIEs; +struct DataTrafficResourceIndication_ExtIEs; +struct DeliveryStatus_ExtIEs; +struct DynamicNAICSInformation_ExtIEs; +struct ECGI_ExtIEs; +struct EnhancedRNTP_ExtIEs; +struct EnhancedRNTPStartTime_ExtIEs; +struct EN_DC_ResourceConfigurationExtIEs; +struct ERABActivityNotifyItem_ExtIEs; +struct E_RAB_Level_QoS_Parameters_ExtIEs; +struct E_RAB_Item_ExtIEs; +struct E_RABUsageReport_Item_ExtIEs; +struct ExpectedUEBehaviour_ExtIEs; +struct ExpectedUEActivityBehaviour_ExtIEs; +struct ExtendedULInterferenceOverloadInfo_ExtIEs; +struct FDD_Info_ExtIEs; +struct ForbiddenTAs_Item_ExtIEs; +struct ForbiddenLAs_Item_ExtIEs; +struct FreqBandNrItem_ExtIEs; +struct GBR_QosInformation_ExtIEs; +struct GlobalENB_ID_ExtIEs; +struct GlobalGNB_ID_ExtIEs; +struct GTPtunnelEndpoint_ExtIEs; +struct GU_Group_ID_ExtIEs; +struct GUMMEI_ExtIEs; +struct HandoverRestrictionList_ExtIEs; +struct HWLoadIndicator_ExtIEs; +struct LastVisitedEUTRANCellInformation_ExtIEs; +struct LocationReportingInformation_ExtIEs; +struct M1PeriodicReporting_ExtIEs; +struct M1ThresholdEventA2_ExtIEs; +struct M3Configuration_ExtIEs; +struct M4Configuration_ExtIEs; +struct M5Configuration_ExtIEs; +struct M6Configuration_ExtIEs; +struct M7Configuration_ExtIEs; +struct MDT_Configuration_ExtIEs; +struct MeNBResourceCoordinationInformationExtIEs; +struct MBSFN_Subframe_Info_ExtIEs; +struct BandInfo_ExtIEs; +struct SplitSRB_ExtIEs; +struct UENRMeasurement_ExtIEs; +struct Neighbour_Information_ExtIEs; +struct NRFreqInfo_ExtIEs; +struct NRCGI_ExtIEs; +struct NR_TxBW_ExtIEs; +struct NRUESecurityCapabilities_ExtIEs; +struct PRACH_Configuration_ExtIEs; +struct PLMNAreaBasedQMC_ExtIEs; +struct ProSeAuthorized_ExtIEs; +struct ProtectedEUTRAResourceIndication_ExtIEs; +struct ProtectedFootprintTimePattern_ExtIEs; +struct ProtectedResourceList_Item_ExtIEs; +struct RadioResourceStatus_ExtIEs; +struct RelativeNarrowbandTxPower_ExtIEs; +struct ReservedSubframePattern_ExtIEs; +struct RLC_Status_ExtIEs; +struct RSRPMeasurementResult_ExtIEs; +struct RSRPMRList_ExtIEs; +struct S1TNLLoadIndicator_ExtIEs; +struct SecondaryRATUsageReport_Item_ExtIEs; +struct ServedCell_ExtIEs; +struct ServedCell_Information_ExtIEs; +struct SgNBResourceCoordinationInformationExtIEs; +struct SpecialSubframe_Info_ExtIEs; +struct SubbandCQI_ExtIEs; +struct Subscription_Based_UE_DifferentiationInfo_ExtIEs; +struct ScheduledCommunicationTime_ExtIEs; +struct SubbandCQIItem_ExtIEs; +struct SULInformation_ExtIEs; +struct SupportedSULFreqBandItem_ExtIEs; +struct TABasedMDT_ExtIEs; +struct TAIBasedMDT_ExtIEs; +struct TAI_Item_ExtIEs; +struct TABasedQMC_ExtIEs; +struct TAIBasedQMC_ExtIEs; +struct TDD_Info_ExtIEs; +struct TraceActivation_ExtIEs; +struct Tunnel_Information_ExtIEs; +struct UEAggregate_MaximumBitrate_ExtIEs; +struct UEAppLayerMeasConfig_ExtIEs; +struct UESecurityCapabilities_ExtIEs; +struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs; +struct UEsToBeResetList_Item_ExtIEs; +struct ULandDLSharing_ExtIEs; +struct ULConfiguration_ExtIEs; +struct UL_HighInterferenceIndicationInfo_Item_ExtIEs; +struct ULOnlySharing_ExtIEs; +struct UsableABSInformationFDD_ExtIEs; +struct UsableABSInformationTDD_ExtIEs; +struct V2XServicesAuthorized_ExtIEs; +struct WidebandCQI_ExtIEs; +struct WLANMeasurementConfiguration_ExtIEs; + +/* ProtocolExtensionContainer */ +typedef struct ProtocolExtensionContainer_170P0 { + A_SEQUENCE_OF(struct UE_ContextInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P0_t; +typedef struct ProtocolExtensionContainer_170P1 { + A_SEQUENCE_OF(struct E_RABs_ToBeSetup_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P1_t; +typedef struct ProtocolExtensionContainer_170P2 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtSeNB_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P2_t; +typedef struct ProtocolExtensionContainer_170P3 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtWT_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P3_t; +typedef struct ProtocolExtensionContainer_170P4 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtSgNB_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P4_t; +typedef struct ProtocolExtensionContainer_170P5 { + A_SEQUENCE_OF(struct E_RABs_Admitted_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P5_t; +typedef struct ProtocolExtensionContainer_170P6 { + A_SEQUENCE_OF(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P6_t; +typedef struct ProtocolExtensionContainer_170P7 { + A_SEQUENCE_OF(struct CellInformation_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P7_t; +typedef struct ProtocolExtensionContainer_170P8 { + A_SEQUENCE_OF(struct ServedCellsToModify_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P8_t; +typedef struct ProtocolExtensionContainer_170P9 { + A_SEQUENCE_OF(struct CellToReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P9_t; +typedef struct ProtocolExtensionContainer_170P10 { + A_SEQUENCE_OF(struct MeasurementInitiationResult_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P10_t; +typedef struct ProtocolExtensionContainer_170P11 { + A_SEQUENCE_OF(struct MeasurementFailureCause_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P11_t; +typedef struct ProtocolExtensionContainer_170P12 { + A_SEQUENCE_OF(struct CompleteFailureCauseInformation_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P12_t; +typedef struct ProtocolExtensionContainer_170P13 { + A_SEQUENCE_OF(struct CellMeasurementResult_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P13_t; +typedef struct ProtocolExtensionContainer_170P14 { + A_SEQUENCE_OF(struct ServedCellsToActivate_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P14_t; +typedef struct ProtocolExtensionContainer_170P15 { + A_SEQUENCE_OF(struct ActivatedCellList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P15_t; +typedef struct ProtocolExtensionContainer_170P16 { + A_SEQUENCE_OF(struct RNL_Header_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P16_t; +typedef struct ProtocolExtensionContainer_170P17 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P17_t; +typedef struct ProtocolExtensionContainer_170P18 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P18_t; +typedef struct ProtocolExtensionContainer_170P19 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P19_t; +typedef struct ProtocolExtensionContainer_170P20 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P20_t; +typedef struct ProtocolExtensionContainer_170P21 { + A_SEQUENCE_OF(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P21_t; +typedef struct ProtocolExtensionContainer_170P22 { + A_SEQUENCE_OF(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P22_t; +typedef struct ProtocolExtensionContainer_170P23 { + A_SEQUENCE_OF(struct UE_ContextInformationSeNBModReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P23_t; +typedef struct ProtocolExtensionContainer_170P24 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P24_t; +typedef struct ProtocolExtensionContainer_170P25 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P25_t; +typedef struct ProtocolExtensionContainer_170P26 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P26_t; +typedef struct ProtocolExtensionContainer_170P27 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P27_t; +typedef struct ProtocolExtensionContainer_170P28 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P28_t; +typedef struct ProtocolExtensionContainer_170P29 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P29_t; +typedef struct ProtocolExtensionContainer_170P30 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P30_t; +typedef struct ProtocolExtensionContainer_170P31 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P31_t; +typedef struct ProtocolExtensionContainer_170P32 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P32_t; +typedef struct ProtocolExtensionContainer_170P33 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P33_t; +typedef struct ProtocolExtensionContainer_170P34 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P34_t; +typedef struct ProtocolExtensionContainer_170P35 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P35_t; +typedef struct ProtocolExtensionContainer_170P36 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqdItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P36_t; +typedef struct ProtocolExtensionContainer_170P37 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P37_t; +typedef struct ProtocolExtensionContainer_170P38 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P38_t; +typedef struct ProtocolExtensionContainer_170P39 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P39_t; +typedef struct ProtocolExtensionContainer_170P40 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P40_t; +typedef struct ProtocolExtensionContainer_170P41 { + A_SEQUENCE_OF(struct E_RABs_SubjectToCounterCheckItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P41_t; +typedef struct ProtocolExtensionContainer_170P42 { + A_SEQUENCE_OF(struct UE_ContextInformationRetrieve_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P42_t; +typedef struct ProtocolExtensionContainer_170P43 { + A_SEQUENCE_OF(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P43_t; +typedef struct ProtocolExtensionContainer_170P44 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P44_t; +typedef struct ProtocolExtensionContainer_170P45 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P45_t; +typedef struct ProtocolExtensionContainer_170P46 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P46_t; +typedef struct ProtocolExtensionContainer_170P47 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P47_t; +typedef struct ProtocolExtensionContainer_170P48 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P48_t; +typedef struct ProtocolExtensionContainer_170P49 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P49_t; +typedef struct ProtocolExtensionContainer_170P50 { + A_SEQUENCE_OF(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P50_t; +typedef struct ProtocolExtensionContainer_170P51 { + A_SEQUENCE_OF(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P51_t; +typedef struct ProtocolExtensionContainer_170P52 { + A_SEQUENCE_OF(struct UE_ContextInformationSgNBModReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P52_t; +typedef struct ProtocolExtensionContainer_170P53 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P53_t; +typedef struct ProtocolExtensionContainer_170P54 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P54_t; +typedef struct ProtocolExtensionContainer_170P55 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P55_t; +typedef struct ProtocolExtensionContainer_170P56 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P56_t; +typedef struct ProtocolExtensionContainer_170P57 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P57_t; +typedef struct ProtocolExtensionContainer_170P58 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P58_t; +typedef struct ProtocolExtensionContainer_170P59 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P59_t; +typedef struct ProtocolExtensionContainer_170P60 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P60_t; +typedef struct ProtocolExtensionContainer_170P61 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P61_t; +typedef struct ProtocolExtensionContainer_170P62 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P62_t; +typedef struct ProtocolExtensionContainer_170P63 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P63_t; +typedef struct ProtocolExtensionContainer_170P64 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P64_t; +typedef struct ProtocolExtensionContainer_170P65 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P65_t; +typedef struct ProtocolExtensionContainer_170P66 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P66_t; +typedef struct ProtocolExtensionContainer_170P67 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P67_t; +typedef struct ProtocolExtensionContainer_170P68 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P68_t; +typedef struct ProtocolExtensionContainer_170P69 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P69_t; +typedef struct ProtocolExtensionContainer_170P70 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P70_t; +typedef struct ProtocolExtensionContainer_170P71 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P71_t; +typedef struct ProtocolExtensionContainer_170P72 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P72_t; +typedef struct ProtocolExtensionContainer_170P73 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P73_t; +typedef struct ProtocolExtensionContainer_170P74 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P74_t; +typedef struct ProtocolExtensionContainer_170P75 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P75_t; +typedef struct ProtocolExtensionContainer_170P76 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P76_t; +typedef struct ProtocolExtensionContainer_170P77 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P77_t; +typedef struct ProtocolExtensionContainer_170P78 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P78_t; +typedef struct ProtocolExtensionContainer_170P79 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P79_t; +typedef struct ProtocolExtensionContainer_170P80 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P80_t; +typedef struct ProtocolExtensionContainer_170P81 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P81_t; +typedef struct ProtocolExtensionContainer_170P82 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P82_t; +typedef struct ProtocolExtensionContainer_170P83 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P83_t; +typedef struct ProtocolExtensionContainer_170P84 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P84_t; +typedef struct ProtocolExtensionContainer_170P85 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P85_t; +typedef struct ProtocolExtensionContainer_170P86 { + A_SEQUENCE_OF(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P86_t; +typedef struct ProtocolExtensionContainer_170P87 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P87_t; +typedef struct ProtocolExtensionContainer_170P88 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P88_t; +typedef struct ProtocolExtensionContainer_170P89 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P89_t; +typedef struct ProtocolExtensionContainer_170P90 { + A_SEQUENCE_OF(struct ServedEUTRAcellsENDCX2Management_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P90_t; +typedef struct ProtocolExtensionContainer_170P91 { + A_SEQUENCE_OF(struct En_gNBServedCells_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P91_t; +typedef struct ProtocolExtensionContainer_170P92 { + A_SEQUENCE_OF(struct ServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P92_t; +typedef struct ProtocolExtensionContainer_170P93 { + A_SEQUENCE_OF(struct FDD_InfoServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P93_t; +typedef struct ProtocolExtensionContainer_170P94 { + A_SEQUENCE_OF(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P94_t; +typedef struct ProtocolExtensionContainer_170P95 { + A_SEQUENCE_OF(struct TDD_InfoServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P95_t; +typedef struct ProtocolExtensionContainer_170P96 { + A_SEQUENCE_OF(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P96_t; +typedef struct ProtocolExtensionContainer_170P97 { + A_SEQUENCE_OF(struct NRNeighbour_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P97_t; +typedef struct ProtocolExtensionContainer_170P98 { + A_SEQUENCE_OF(struct Limited_list_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P98_t; +typedef struct ProtocolExtensionContainer_170P99 { + A_SEQUENCE_OF(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P99_t; +typedef struct ProtocolExtensionContainer_170P100 { + A_SEQUENCE_OF(struct ServedNRCellsToModify_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P100_t; +typedef struct ProtocolExtensionContainer_170P101 { + A_SEQUENCE_OF(struct ServedNRCellsToActivate_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P101_t; +typedef struct ProtocolExtensionContainer_170P102 { + A_SEQUENCE_OF(struct ActivatedNRCellList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P102_t; +typedef struct ProtocolExtensionContainer_170P103 { + A_SEQUENCE_OF(struct E_RABs_DataForwardingAddress_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P103_t; +typedef struct ProtocolExtensionContainer_170P104 { + A_SEQUENCE_OF(struct ABSInformationFDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P104_t; +typedef struct ProtocolExtensionContainer_170P105 { + A_SEQUENCE_OF(struct ABSInformationTDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P105_t; +typedef struct ProtocolExtensionContainer_170P106 { + A_SEQUENCE_OF(struct ABS_Status_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P106_t; +typedef struct ProtocolExtensionContainer_170P107 { + A_SEQUENCE_OF(struct AdditionalSpecialSubframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P107_t; +typedef struct ProtocolExtensionContainer_170P108 { + A_SEQUENCE_OF(struct AdditionalSpecialSubframeExtension_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P108_t; +typedef struct ProtocolExtensionContainer_170P109 { + A_SEQUENCE_OF(struct AllocationAndRetentionPriority_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P109_t; +typedef struct ProtocolExtensionContainer_170P110 { + A_SEQUENCE_OF(struct AS_SecurityInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P110_t; +typedef struct ProtocolExtensionContainer_170P111 { + A_SEQUENCE_OF(struct BluetoothMeasurementConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P111_t; +typedef struct ProtocolExtensionContainer_170P112 { + A_SEQUENCE_OF(struct CellBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P112_t; +typedef struct ProtocolExtensionContainer_170P113 { + A_SEQUENCE_OF(struct CellBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P113_t; +typedef struct ProtocolExtensionContainer_170P114 { + A_SEQUENCE_OF(struct CellReplacingInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P114_t; +typedef struct ProtocolExtensionContainer_170P115 { + A_SEQUENCE_OF(struct CellType_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P115_t; +typedef struct ProtocolExtensionContainer_170P116 { + A_SEQUENCE_OF(struct CNTypeRestrictionsItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P116_t; +typedef struct ProtocolExtensionContainer_170P117 { + A_SEQUENCE_OF(struct CoMPHypothesisSetItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P117_t; +typedef struct ProtocolExtensionContainer_170P118 { + A_SEQUENCE_OF(struct CoMPInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P118_t; +typedef struct ProtocolExtensionContainer_170P119 { + A_SEQUENCE_OF(struct CoMPInformationItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P119_t; +typedef struct ProtocolExtensionContainer_170P120 { + A_SEQUENCE_OF(struct CoMPInformationStartTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P120_t; +typedef struct ProtocolExtensionContainer_170P121 { + A_SEQUENCE_OF(struct CompositeAvailableCapacity_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P121_t; +typedef struct ProtocolExtensionContainer_170P122 { + A_SEQUENCE_OF(struct CompositeAvailableCapacityGroup_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P122_t; +typedef struct ProtocolExtensionContainer_170P123 { + A_SEQUENCE_OF(struct COUNTvalue_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P123_t; +typedef struct ProtocolExtensionContainer_170P124 { + A_SEQUENCE_OF(struct COUNTValueExtended_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P124_t; +typedef struct ProtocolExtensionContainer_170P125 { + A_SEQUENCE_OF(struct COUNTvaluePDCP_SNlength18_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P125_t; +typedef struct ProtocolExtensionContainer_170P126 { + A_SEQUENCE_OF(struct CriticalityDiagnostics_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P126_t; +typedef struct ProtocolExtensionContainer_170P127 { + A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_List_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P127_t; +typedef struct ProtocolExtensionContainer_170P128 { + A_SEQUENCE_OF(struct CSIReportList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P128_t; +typedef struct ProtocolExtensionContainer_170P129 { + A_SEQUENCE_OF(struct CSIReportPerCSIProcess_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P129_t; +typedef struct ProtocolExtensionContainer_170P130 { + A_SEQUENCE_OF(struct CSIReportPerCSIProcessItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P130_t; +typedef struct ProtocolExtensionContainer_170P131 { + A_SEQUENCE_OF(struct DataTrafficResourceIndication_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P131_t; +typedef struct ProtocolExtensionContainer_170P132 { + A_SEQUENCE_OF(struct DeliveryStatus_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P132_t; +typedef struct ProtocolExtensionContainer_170P133 { + A_SEQUENCE_OF(struct DynamicNAICSInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P133_t; +typedef struct ProtocolExtensionContainer_170P134 { + A_SEQUENCE_OF(struct ECGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P134_t; +typedef struct ProtocolExtensionContainer_170P135 { + A_SEQUENCE_OF(struct EnhancedRNTP_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P135_t; +typedef struct ProtocolExtensionContainer_170P136 { + A_SEQUENCE_OF(struct EnhancedRNTPStartTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P136_t; +typedef struct ProtocolExtensionContainer_170P137 { + A_SEQUENCE_OF(struct EN_DC_ResourceConfigurationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P137_t; +typedef struct ProtocolExtensionContainer_170P138 { + A_SEQUENCE_OF(struct ERABActivityNotifyItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P138_t; +typedef struct ProtocolExtensionContainer_170P139 { + A_SEQUENCE_OF(struct E_RAB_Level_QoS_Parameters_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P139_t; +typedef struct ProtocolExtensionContainer_170P140 { + A_SEQUENCE_OF(struct E_RAB_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P140_t; +typedef struct ProtocolExtensionContainer_170P141 { + A_SEQUENCE_OF(struct E_RABUsageReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P141_t; +typedef struct ProtocolExtensionContainer_170P142 { + A_SEQUENCE_OF(struct ExpectedUEBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P142_t; +typedef struct ProtocolExtensionContainer_170P143 { + A_SEQUENCE_OF(struct ExpectedUEActivityBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P143_t; +typedef struct ProtocolExtensionContainer_170P144 { + A_SEQUENCE_OF(struct ExtendedULInterferenceOverloadInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P144_t; +typedef struct ProtocolExtensionContainer_170P145 { + A_SEQUENCE_OF(struct FDD_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P145_t; +typedef struct ProtocolExtensionContainer_170P146 { + A_SEQUENCE_OF(struct ForbiddenTAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P146_t; +typedef struct ProtocolExtensionContainer_170P147 { + A_SEQUENCE_OF(struct ForbiddenLAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P147_t; +typedef struct ProtocolExtensionContainer_170P148 { + A_SEQUENCE_OF(struct FreqBandNrItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P148_t; +typedef struct ProtocolExtensionContainer_170P149 { + A_SEQUENCE_OF(struct GBR_QosInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P149_t; +typedef struct ProtocolExtensionContainer_170P150 { + A_SEQUENCE_OF(struct GlobalENB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P150_t; +typedef struct ProtocolExtensionContainer_170P151 { + A_SEQUENCE_OF(struct GlobalGNB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P151_t; +typedef struct ProtocolExtensionContainer_170P152 { + A_SEQUENCE_OF(struct GTPtunnelEndpoint_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P152_t; +typedef struct ProtocolExtensionContainer_170P153 { + A_SEQUENCE_OF(struct GU_Group_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P153_t; +typedef struct ProtocolExtensionContainer_170P154 { + A_SEQUENCE_OF(struct GUMMEI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P154_t; +typedef struct ProtocolExtensionContainer_170P155 { + A_SEQUENCE_OF(struct HandoverRestrictionList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P155_t; +typedef struct ProtocolExtensionContainer_170P156 { + A_SEQUENCE_OF(struct HWLoadIndicator_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P156_t; +typedef struct ProtocolExtensionContainer_170P157 { + A_SEQUENCE_OF(struct LastVisitedEUTRANCellInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P157_t; +typedef struct ProtocolExtensionContainer_170P158 { + A_SEQUENCE_OF(struct LocationReportingInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P158_t; +typedef struct ProtocolExtensionContainer_170P159 { + A_SEQUENCE_OF(struct M1PeriodicReporting_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P159_t; +typedef struct ProtocolExtensionContainer_170P160 { + A_SEQUENCE_OF(struct M1ThresholdEventA2_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P160_t; +typedef struct ProtocolExtensionContainer_170P161 { + A_SEQUENCE_OF(struct M3Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P161_t; +typedef struct ProtocolExtensionContainer_170P162 { + A_SEQUENCE_OF(struct M4Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P162_t; +typedef struct ProtocolExtensionContainer_170P163 { + A_SEQUENCE_OF(struct M5Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P163_t; +typedef struct ProtocolExtensionContainer_170P164 { + A_SEQUENCE_OF(struct M6Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P164_t; +typedef struct ProtocolExtensionContainer_170P165 { + A_SEQUENCE_OF(struct M7Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P165_t; +typedef struct ProtocolExtensionContainer_170P166 { + A_SEQUENCE_OF(struct MDT_Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P166_t; +typedef struct ProtocolExtensionContainer_170P167 { + A_SEQUENCE_OF(struct MeNBResourceCoordinationInformationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P167_t; +typedef struct ProtocolExtensionContainer_170P168 { + A_SEQUENCE_OF(struct MBSFN_Subframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P168_t; +typedef struct ProtocolExtensionContainer_170P169 { + A_SEQUENCE_OF(struct BandInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P169_t; +typedef struct ProtocolExtensionContainer_170P170 { + A_SEQUENCE_OF(struct SplitSRB_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P170_t; +typedef struct ProtocolExtensionContainer_170P171 { + A_SEQUENCE_OF(struct UENRMeasurement_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P171_t; +typedef struct ProtocolExtensionContainer_170P172 { + A_SEQUENCE_OF(struct Neighbour_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P172_t; +typedef struct ProtocolExtensionContainer_170P173 { + A_SEQUENCE_OF(struct NRFreqInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P173_t; +typedef struct ProtocolExtensionContainer_170P174 { + A_SEQUENCE_OF(struct NRCGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P174_t; +typedef struct ProtocolExtensionContainer_170P175 { + A_SEQUENCE_OF(struct NR_TxBW_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P175_t; +typedef struct ProtocolExtensionContainer_170P176 { + A_SEQUENCE_OF(struct NRUESecurityCapabilities_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P176_t; +typedef struct ProtocolExtensionContainer_170P177 { + A_SEQUENCE_OF(struct PRACH_Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P177_t; +typedef struct ProtocolExtensionContainer_170P178 { + A_SEQUENCE_OF(struct PLMNAreaBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P178_t; +typedef struct ProtocolExtensionContainer_170P179 { + A_SEQUENCE_OF(struct ProSeAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P179_t; +typedef struct ProtocolExtensionContainer_170P180 { + A_SEQUENCE_OF(struct ProtectedEUTRAResourceIndication_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P180_t; +typedef struct ProtocolExtensionContainer_170P181 { + A_SEQUENCE_OF(struct ProtectedFootprintTimePattern_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P181_t; +typedef struct ProtocolExtensionContainer_170P182 { + A_SEQUENCE_OF(struct ProtectedResourceList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P182_t; +typedef struct ProtocolExtensionContainer_170P183 { + A_SEQUENCE_OF(struct RadioResourceStatus_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P183_t; +typedef struct ProtocolExtensionContainer_170P184 { + A_SEQUENCE_OF(struct RelativeNarrowbandTxPower_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P184_t; +typedef struct ProtocolExtensionContainer_170P185 { + A_SEQUENCE_OF(struct ReservedSubframePattern_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P185_t; +typedef struct ProtocolExtensionContainer_170P186 { + A_SEQUENCE_OF(struct RLC_Status_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P186_t; +typedef struct ProtocolExtensionContainer_170P187 { + A_SEQUENCE_OF(struct RSRPMeasurementResult_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P187_t; +typedef struct ProtocolExtensionContainer_170P188 { + A_SEQUENCE_OF(struct RSRPMRList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P188_t; +typedef struct ProtocolExtensionContainer_170P189 { + A_SEQUENCE_OF(struct S1TNLLoadIndicator_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P189_t; +typedef struct ProtocolExtensionContainer_170P190 { + A_SEQUENCE_OF(struct SecondaryRATUsageReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P190_t; +typedef struct ProtocolExtensionContainer_170P191 { + A_SEQUENCE_OF(struct ServedCell_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P191_t; +typedef struct ProtocolExtensionContainer_170P192 { + A_SEQUENCE_OF(struct ServedCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P192_t; +typedef struct ProtocolExtensionContainer_170P193 { + A_SEQUENCE_OF(struct SgNBResourceCoordinationInformationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P193_t; +typedef struct ProtocolExtensionContainer_170P194 { + A_SEQUENCE_OF(struct SpecialSubframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P194_t; +typedef struct ProtocolExtensionContainer_170P195 { + A_SEQUENCE_OF(struct SubbandCQI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P195_t; +typedef struct ProtocolExtensionContainer_170P196 { + A_SEQUENCE_OF(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P196_t; +typedef struct ProtocolExtensionContainer_170P197 { + A_SEQUENCE_OF(struct ScheduledCommunicationTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P197_t; +typedef struct ProtocolExtensionContainer_170P198 { + A_SEQUENCE_OF(struct SubbandCQIItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P198_t; +typedef struct ProtocolExtensionContainer_170P199 { + A_SEQUENCE_OF(struct SULInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P199_t; +typedef struct ProtocolExtensionContainer_170P200 { + A_SEQUENCE_OF(struct SupportedSULFreqBandItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P200_t; +typedef struct ProtocolExtensionContainer_170P201 { + A_SEQUENCE_OF(struct TABasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P201_t; +typedef struct ProtocolExtensionContainer_170P202 { + A_SEQUENCE_OF(struct TAIBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P202_t; +typedef struct ProtocolExtensionContainer_170P203 { + A_SEQUENCE_OF(struct TAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P203_t; +typedef struct ProtocolExtensionContainer_170P204 { + A_SEQUENCE_OF(struct TABasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P204_t; +typedef struct ProtocolExtensionContainer_170P205 { + A_SEQUENCE_OF(struct TAIBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P205_t; +typedef struct ProtocolExtensionContainer_170P206 { + A_SEQUENCE_OF(struct TDD_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P206_t; +typedef struct ProtocolExtensionContainer_170P207 { + A_SEQUENCE_OF(struct TraceActivation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P207_t; +typedef struct ProtocolExtensionContainer_170P208 { + A_SEQUENCE_OF(struct Tunnel_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P208_t; +typedef struct ProtocolExtensionContainer_170P209 { + A_SEQUENCE_OF(struct UEAggregate_MaximumBitrate_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P209_t; +typedef struct ProtocolExtensionContainer_170P210 { + A_SEQUENCE_OF(struct UEAppLayerMeasConfig_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P210_t; +typedef struct ProtocolExtensionContainer_170P211 { + A_SEQUENCE_OF(struct UESecurityCapabilities_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P211_t; +typedef struct ProtocolExtensionContainer_170P212 { + A_SEQUENCE_OF(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P212_t; +typedef struct ProtocolExtensionContainer_170P213 { + A_SEQUENCE_OF(struct UEsToBeResetList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P213_t; +typedef struct ProtocolExtensionContainer_170P214 { + A_SEQUENCE_OF(struct ULandDLSharing_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P214_t; +typedef struct ProtocolExtensionContainer_170P215 { + A_SEQUENCE_OF(struct ULConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P215_t; +typedef struct ProtocolExtensionContainer_170P216 { + A_SEQUENCE_OF(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P216_t; +typedef struct ProtocolExtensionContainer_170P217 { + A_SEQUENCE_OF(struct ULOnlySharing_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P217_t; +typedef struct ProtocolExtensionContainer_170P218 { + A_SEQUENCE_OF(struct UsableABSInformationFDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P218_t; +typedef struct ProtocolExtensionContainer_170P219 { + A_SEQUENCE_OF(struct UsableABSInformationTDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P219_t; +typedef struct ProtocolExtensionContainer_170P220 { + A_SEQUENCE_OF(struct V2XServicesAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P220_t; +typedef struct ProtocolExtensionContainer_170P221 { + A_SEQUENCE_OF(struct WidebandCQI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P221_t; +typedef struct ProtocolExtensionContainer_170P222 { + A_SEQUENCE_OF(struct WLANMeasurementConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P222_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P20; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P20_specs_41; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P20_41[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P21; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P21_specs_43; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P21_43[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P22; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P22_specs_45; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P22_45[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P23; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P23_specs_47; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P23_47[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P24; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P24_specs_49; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P24_49[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P25; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P25_specs_51; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P25_51[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P26; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P26_specs_53; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P26_53[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P27; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P27_specs_55; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P27_55[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P28; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P28_specs_57; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P28_57[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P29; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P29_specs_59; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P29_59[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P30; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P30_specs_61; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P30_61[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P31; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P31_specs_63; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P31_63[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P32; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P32_specs_65; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P32_65[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P33; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P33_specs_67; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P33_67[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P34; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P34_specs_69; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P34_69[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P35; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P35_specs_71; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P35_71[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P36; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P36_specs_73; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P36_73[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P37; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P37_specs_75; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P37_75[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P38; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P38_specs_77; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P38_77[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P39; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P39_specs_79; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P39_79[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P40; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P40_specs_81; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P40_81[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P41; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P41_specs_83; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P41_83[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P42; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P42_specs_85; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P42_85[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P43; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P43_specs_87; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P43_87[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P44; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P44_specs_89; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P44_89[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P45; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P45_specs_91; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P45_91[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P46; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P46_specs_93; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P46_93[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P47; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P47_specs_95; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P47_95[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P48; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P48_specs_97; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P48_97[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P49; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P49_specs_99; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P49_99[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P50; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P50_specs_101; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P50_101[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P51; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P51_specs_103; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P51_103[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P52; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P52_specs_105; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P52_105[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P53; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P53_specs_107; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P53_107[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P54; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P54_specs_109; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P54_109[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P55; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P55_specs_111; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P55_111[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P56; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P56_specs_113; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P56_113[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P57; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P57_specs_115; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P57_115[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P58; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P58_specs_117; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P58_117[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P59; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P59_specs_119; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P59_119[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P60; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P60_specs_121; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P60_121[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P61; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P61_specs_123; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P61_123[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P62; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P62_specs_125; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P62_125[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P63; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P63_specs_127; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P63_127[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P64; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P64_specs_129; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P64_129[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P65; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P65_specs_131; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P65_131[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P66; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P66_specs_133; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P66_133[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P67; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P67_specs_135; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P67_135[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P68; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P68_specs_137; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P68_137[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P69; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P69_specs_139; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P69_139[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P70; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P70_specs_141; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P70_141[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P71; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P71_specs_143; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P71_143[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P72; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P72_specs_145; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P72_145[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P73; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P73_specs_147; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P73_147[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P74; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P74_specs_149; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P74_149[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P75; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P75_specs_151; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P75_151[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P76; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P76_specs_153; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P76_153[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P77; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P77_specs_155; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P77_155[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P78; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P78_specs_157; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P78_157[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P79; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P79_specs_159; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P79_159[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P80; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P80_specs_161; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P80_161[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P81; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P81_specs_163; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P81_163[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P82; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P82_specs_165; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P82_165[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P83; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P83_specs_167; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P83_167[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P84; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P84_specs_169; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P84_169[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P85; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P85_specs_171; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P85_171[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P86; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P86_specs_173; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P86_173[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P87; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P87_specs_175; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P87_175[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P88; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P88_specs_177; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P88_177[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P89; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P89_specs_179; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P89_179[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P90; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P90_specs_181; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P90_181[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P90_constr_181; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P91; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P91_specs_183; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P91_183[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P91_constr_183; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P92; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P92_specs_185; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P92_185[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P92_constr_185; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P93; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P93_specs_187; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P93_187[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P93_constr_187; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P94; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P94_specs_189; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P94_189[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P94_constr_189; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P95; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P95_specs_191; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P95_191[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P95_constr_191; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P96; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P96_specs_193; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P96_193[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P96_constr_193; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P97; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P97_specs_195; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P97_195[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P97_constr_195; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P98; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P98_specs_197; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P98_197[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P98_constr_197; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P99; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P99_specs_199; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P99_199[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P99_constr_199; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P100; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P100_specs_201; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P100_201[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P100_constr_201; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P101; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P101_specs_203; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P101_203[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P101_constr_203; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P102; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P102_specs_205; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P102_205[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P102_constr_205; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P103; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P103_specs_207; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P103_207[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P103_constr_207; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P104; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P104_specs_209; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P104_209[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P104_constr_209; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P105; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P105_specs_211; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P105_211[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P105_constr_211; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P106; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P106_specs_213; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P106_213[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P106_constr_213; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P107; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P107_specs_215; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P107_215[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P107_constr_215; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P108; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P108_specs_217; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P108_217[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P108_constr_217; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P109; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P109_specs_219; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P109_219[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P109_constr_219; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P110; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P110_specs_221; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P110_221[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P110_constr_221; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P111; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P111_specs_223; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P111_223[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P111_constr_223; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P112; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P112_specs_225; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P112_225[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P112_constr_225; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P113; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P113_specs_227; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P113_227[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P113_constr_227; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P114; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P114_specs_229; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P114_229[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P114_constr_229; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P115; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P115_specs_231; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P115_231[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P115_constr_231; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P116; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P116_specs_233; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P116_233[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P116_constr_233; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P117; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P117_specs_235; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P117_235[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P117_constr_235; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P118; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P118_specs_237; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P118_237[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P118_constr_237; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P119; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P119_specs_239; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P119_239[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P119_constr_239; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P120; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P120_specs_241; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P120_241[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P120_constr_241; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P121; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P121_specs_243; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P121_243[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P121_constr_243; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P122; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P122_specs_245; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P122_245[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P122_constr_245; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P123; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P123_specs_247; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P123_247[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P123_constr_247; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P124; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P124_specs_249; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P124_249[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P124_constr_249; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P125; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P125_specs_251; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P125_251[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P125_constr_251; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P126; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P126_specs_253; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P126_253[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P126_constr_253; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P127; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P127_specs_255; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P127_255[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P127_constr_255; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P128; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P128_specs_257; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P128_257[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P128_constr_257; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P129; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P129_specs_259; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P129_259[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P129_constr_259; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P130; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P130_specs_261; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P130_261[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P130_constr_261; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P131; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P131_specs_263; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P131_263[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P131_constr_263; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P132; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P132_specs_265; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P132_265[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P132_constr_265; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P133; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P133_specs_267; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P133_267[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P133_constr_267; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P134; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P134_specs_269; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P134_269[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P134_constr_269; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P135; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P135_specs_271; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P135_271[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P135_constr_271; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P136; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P136_specs_273; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P136_273[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P136_constr_273; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P137; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P137_specs_275; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P137_275[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P137_constr_275; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P138; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P138_specs_277; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P138_277[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P138_constr_277; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P139; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P139_specs_279; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P139_279[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P139_constr_279; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P140; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P140_specs_281; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P140_281[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P140_constr_281; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P141; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P141_specs_283; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P141_283[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P141_constr_283; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P142; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P142_specs_285; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P142_285[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P142_constr_285; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P143; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P143_specs_287; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P143_287[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P143_constr_287; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P144; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P144_specs_289; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P144_289[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P144_constr_289; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P145; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P145_specs_291; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P145_291[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P145_constr_291; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P146; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P146_specs_293; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P146_293[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P146_constr_293; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P147; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P147_specs_295; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P147_295[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P147_constr_295; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P148; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P148_specs_297; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P148_297[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P148_constr_297; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P149; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P149_specs_299; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P149_299[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P149_constr_299; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P150; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P150_specs_301; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P150_301[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P150_constr_301; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P151; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P151_specs_303; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P151_303[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P151_constr_303; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P152; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P152_specs_305; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P152_305[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P152_constr_305; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P153; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P153_specs_307; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P153_307[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P153_constr_307; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P154; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P154_specs_309; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P154_309[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P154_constr_309; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P155; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P155_specs_311; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P155_311[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P155_constr_311; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P156; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P156_specs_313; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P156_313[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P156_constr_313; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P157; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P157_specs_315; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P157_315[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P157_constr_315; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P158; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P158_specs_317; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P158_317[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P158_constr_317; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P159; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P159_specs_319; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P159_319[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P159_constr_319; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P160; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P160_specs_321; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P160_321[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P160_constr_321; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P161; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P161_specs_323; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P161_323[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P161_constr_323; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P162; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P162_specs_325; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P162_325[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P162_constr_325; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P163; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P163_specs_327; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P163_327[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P163_constr_327; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P164; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P164_specs_329; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P164_329[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P164_constr_329; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P165; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P165_specs_331; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P165_331[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P165_constr_331; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P166; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P166_specs_333; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P166_333[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P166_constr_333; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P167; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P167_specs_335; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P167_335[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P167_constr_335; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P168; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P168_specs_337; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P168_337[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P168_constr_337; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P169; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P169_specs_339; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P169_339[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P169_constr_339; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P170; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P170_specs_341; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P170_341[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P170_constr_341; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P171; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P171_specs_343; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P171_343[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P171_constr_343; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P172; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P172_specs_345; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P172_345[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P172_constr_345; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P173; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P173_specs_347; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P173_347[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P173_constr_347; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P174; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P174_specs_349; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P174_349[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P174_constr_349; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P175; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P175_specs_351; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P175_351[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P175_constr_351; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P176; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P176_specs_353; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P176_353[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P176_constr_353; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P177; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P177_specs_355; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P177_355[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P177_constr_355; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P178; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P178_specs_357; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P178_357[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P178_constr_357; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P179; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P179_specs_359; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P179_359[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P179_constr_359; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P180; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P180_specs_361; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P180_361[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P180_constr_361; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P181; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P181_specs_363; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P181_363[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P181_constr_363; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P182; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P182_specs_365; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P182_365[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P182_constr_365; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P183; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P183_specs_367; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P183_367[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P183_constr_367; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P184; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P184_specs_369; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P184_369[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P184_constr_369; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P185; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P185_specs_371; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P185_371[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P185_constr_371; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P186; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P186_specs_373; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P186_373[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P186_constr_373; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P187; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P187_specs_375; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P187_375[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P187_constr_375; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P188; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P188_specs_377; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P188_377[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P188_constr_377; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P189; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P189_specs_379; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P189_379[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P189_constr_379; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P190; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P190_specs_381; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P190_381[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P190_constr_381; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P191; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P191_specs_383; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P191_383[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P191_constr_383; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P192; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P192_specs_385; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P192_385[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P192_constr_385; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P193; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P193_specs_387; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P193_387[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P193_constr_387; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P194; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P194_specs_389; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P194_389[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P194_constr_389; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P195; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P195_specs_391; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P195_391[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P195_constr_391; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P196; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P196_specs_393; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P196_393[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P196_constr_393; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P197; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P197_specs_395; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P197_395[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P197_constr_395; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P198; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P198_specs_397; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P198_397[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P198_constr_397; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P199; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P199_specs_399; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P199_399[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P199_constr_399; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P200; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P200_specs_401; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P200_401[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P200_constr_401; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P201; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P201_specs_403; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P201_403[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P201_constr_403; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P202; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P202_specs_405; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P202_405[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P202_constr_405; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P203; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P203_specs_407; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P203_407[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P203_constr_407; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P204; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P204_specs_409; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P204_409[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P204_constr_409; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P205; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P205_specs_411; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P205_411[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P205_constr_411; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P206; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P206_specs_413; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P206_413[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P206_constr_413; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P207; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P207_specs_415; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P207_415[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P207_constr_415; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P208; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P208_specs_417; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P208_417[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P208_constr_417; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P209; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P209_specs_419; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P209_419[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P209_constr_419; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P210; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P210_specs_421; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P210_421[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P210_constr_421; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P211; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P211_specs_423; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P211_423[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P211_constr_423; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P212; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P212_specs_425; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P212_425[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P212_constr_425; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P213; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P213_specs_427; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P213_427[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P213_constr_427; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P214; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P214_specs_429; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P214_429[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P214_constr_429; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P215; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P215_specs_431; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P215_431[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P215_constr_431; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P216; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P216_specs_433; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P216_433[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P216_constr_433; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P217; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P217_specs_435; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P217_435[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P217_constr_435; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P218; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P218_specs_437; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P218_437[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P218_constr_437; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P219; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P219_specs_439; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P219_439[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P219_constr_439; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P220; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P220_specs_441; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P220_441[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P220_constr_441; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P221; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P221_specs_443; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P221_443[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P221_constr_443; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P222; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P222_specs_445; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P222_445[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P222_constr_445; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolExtensionContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.c b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.c new file mode 100644 index 0000000..7d6741e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.c @@ -0,0 +1,40928 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolExtensionField.h" + +static const long asn_VAL_1_id_ManagementBasedMDTallowed = 74; +static const long asn_VAL_1_ignore = 1; +static const long asn_VAL_1_optional = 0; +static const long asn_VAL_2_id_ManagementBasedMDTPLMNList = 89; +static const long asn_VAL_2_ignore = 1; +static const long asn_VAL_2_optional = 0; +static const long asn_VAL_3_id_UESidelinkAggregateMaximumBitRate = 184; +static const long asn_VAL_3_ignore = 1; +static const long asn_VAL_3_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_ManagementBasedMDTallowed }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_ignore }, + { "&Extension", aioc__type, &asn_DEF_ManagementBasedMDTallowed }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_ManagementBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_UESidelinkAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_ignore }, + { "&Extension", aioc__type, &asn_DEF_UESidelinkAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformation_ExtIEs_1[] = { + { 3, 4, asn_IOS_UE_ContextInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_4_id_BearerType = 171; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_4_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_BearerType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&Extension", aioc__type, &asn_DEF_BearerType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1_rows } +}; +static const long asn_VAL_5_id_ReceiveStatusOfULPDCPSDUsExtended = 91; +static const long asn_VAL_5_ignore = 1; +static const long asn_VAL_5_optional = 0; +static const long asn_VAL_6_id_ULCOUNTValueExtended = 92; +static const long asn_VAL_6_ignore = 1; +static const long asn_VAL_6_optional = 0; +static const long asn_VAL_7_id_DLCOUNTValueExtended = 93; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_7_optional = 0; +static const long asn_VAL_8_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = 150; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_8_optional = 0; +static const long asn_VAL_9_id_ULCOUNTValuePDCP_SNlength18 = 151; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_optional = 0; +static const long asn_VAL_10_id_DLCOUNTValuePDCP_SNlength18 = 152; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_ReceiveStatusOfULPDCPSDUsExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_ignore }, + { "&Extension", aioc__type, &asn_DEF_ReceiveStatusOfULPDCPSDUsExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_ULCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_DLCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&Extension", aioc__type, &asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_ULCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_DLCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1[] = { + { 6, 4, asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1_rows } +}; +static const long asn_VAL_11_id_ABSInformation = 61; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_11_optional = 0; +static const long asn_VAL_12_id_InvokeIndication = 62; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_12_optional = 0; +static const long asn_VAL_13_id_IntendedULDLConfiguration = 99; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_13_optional = 0; +static const long asn_VAL_14_id_ExtendedULInterferenceOverloadInfo = 100; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const long asn_VAL_15_id_CoMPInformation = 108; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_15_optional = 0; +static const long asn_VAL_16_id_DynamicDLTransmissionInformation = 106; +static const long asn_VAL_16_ignore = 1; +static const long asn_VAL_16_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellInformation_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_ABSInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&Extension", aioc__type, &asn_DEF_ABSInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_InvokeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&Extension", aioc__type, &asn_DEF_InvokeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_IntendedULDLConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&Extension", aioc__type, &asn_DEF_SubframeAssignment }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_ExtendedULInterferenceOverloadInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedULInterferenceOverloadInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_CoMPInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&Extension", aioc__type, &asn_DEF_CoMPInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_DynamicDLTransmissionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore }, + { "&Extension", aioc__type, &asn_DEF_DynamicDLTransmissionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_optional } +}; +static const asn_ioc_set_t asn_IOS_CellInformation_Item_ExtIEs_1[] = { + { 6, 4, asn_IOS_CellInformation_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_17_id_DeactivationIndication = 59; +static const long asn_VAL_17_ignore = 1; +static const long asn_VAL_17_optional = 0; +static const asn_ioc_cell_t asn_IOS_ServedCellsToModify_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_DeactivationIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_ignore }, + { "&Extension", aioc__type, &asn_DEF_DeactivationIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_optional } +}; +static const asn_ioc_set_t asn_IOS_ServedCellsToModify_Item_ExtIEs_1[] = { + { 1, 4, asn_IOS_ServedCellsToModify_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_18_id_CompositeAvailableCapacityGroup = 42; +static const long asn_VAL_18_ignore = 1; +static const long asn_VAL_18_optional = 0; +static const long asn_VAL_19_id_ABS_Status = 63; +static const long asn_VAL_19_ignore = 1; +static const long asn_VAL_19_optional = 0; +static const long asn_VAL_20_id_RSRPMRList = 110; +static const long asn_VAL_20_ignore = 1; +static const long asn_VAL_20_optional = 0; +static const long asn_VAL_21_id_CSIReportList = 146; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_optional = 0; +static const long asn_VAL_22_id_CellReportingIndicator = 170; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellMeasurementResult_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_CompositeAvailableCapacityGroup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_ignore }, + { "&Extension", aioc__type, &asn_DEF_CompositeAvailableCapacityGroup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_ABS_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_ignore }, + { "&Extension", aioc__type, &asn_DEF_ABS_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RSRPMRList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_ignore }, + { "&Extension", aioc__type, &asn_DEF_RSRPMRList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_CSIReportList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Extension", aioc__type, &asn_DEF_CSIReportList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CellReportingIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Extension", aioc__type, &asn_DEF_CellReportingIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_CellMeasurementResult_Item_ExtIEs_1[] = { + { 5, 4, asn_IOS_CellMeasurementResult_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_23_id_Correlation_ID = 166; +static const long asn_VAL_23_ignore = 1; +static const long asn_VAL_23_optional = 0; +static const long asn_VAL_24_id_SIPTO_Correlation_ID = 167; +static const long asn_VAL_24_ignore = 1; +static const long asn_VAL_24_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1_rows } +}; +static const long asn_VAL_25_id_Correlation_ID = 166; +static const long asn_VAL_25_ignore = 1; +static const long asn_VAL_25_optional = 0; +static const long asn_VAL_26_id_SIPTO_Correlation_ID = 167; +static const long asn_VAL_26_ignore = 1; +static const long asn_VAL_26_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1_rows } +}; +static const long asn_VAL_27_id_UESidelinkAggregateMaximumBitRate = 184; +static const long asn_VAL_27_ignore = 1; +static const long asn_VAL_27_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_UESidelinkAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_ignore }, + { "&Extension", aioc__type, &asn_DEF_UESidelinkAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1[] = { + { 1, 4, asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1_rows } +}; +static const long asn_VAL_28_id_uL_GTPtunnelEndpoint = 185; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_dL_Forwarding = 306; +static const long asn_VAL_29_ignore = 1; +static const long asn_VAL_29_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_uL_GTPtunnelEndpoint }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_dL_Forwarding }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_ignore }, + { "&Extension", aioc__type, &asn_DEF_DL_Forwarding }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1_rows } +}; +static const long asn_VAL_30_id_RLCMode_transferred = 317; +static const long asn_VAL_30_ignore = 1; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_31_id_uLpDCPSnLength = 302; +static const long asn_VAL_31_ignore = 1; +static const long asn_VAL_31_optional = 0; +static const long asn_VAL_32_id_dLPDCPSnLength = 311; +static const long asn_VAL_32_ignore = 1; +static const long asn_VAL_32_optional = 0; +static const long asn_VAL_33_id_duplicationActivation = 315; +static const long asn_VAL_33_ignore = 1; +static const long asn_VAL_33_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_duplicationActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_ignore }, + { "&Extension", aioc__type, &asn_DEF_DuplicationActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_34_id_uLpDCPSnLength = 302; +static const long asn_VAL_34_ignore = 1; +static const long asn_VAL_34_optional = 0; +static const long asn_VAL_35_id_dLPDCPSnLength = 311; +static const long asn_VAL_35_ignore = 1; +static const long asn_VAL_35_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_36_id_lCID = 314; +static const long asn_VAL_36_ignore = 1; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_37_id_SubscriberProfileIDforRFP = 275; +static const long asn_VAL_37_ignore = 1; +static const long asn_VAL_37_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_ignore }, + { "&Extension", aioc__type, &asn_DEF_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1[] = { + { 1, 4, asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1_rows } +}; +static const long asn_VAL_38_id_RLCMode_transferred = 317; +static const long asn_VAL_38_ignore = 1; +static const long asn_VAL_38_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_39_id_uLpDCPSnLength = 302; +static const long asn_VAL_39_ignore = 1; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_dLPDCPSnLength = 311; +static const long asn_VAL_40_ignore = 1; +static const long asn_VAL_40_optional = 0; +static const long asn_VAL_41_id_duplicationActivation = 315; +static const long asn_VAL_41_ignore = 1; +static const long asn_VAL_41_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_duplicationActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_ignore }, + { "&Extension", aioc__type, &asn_DEF_DuplicationActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_42_id_RLC_Status = 300; +static const long asn_VAL_42_ignore = 1; +static const long asn_VAL_42_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_43_id_uLpDCPSnLength = 302; +static const long asn_VAL_43_ignore = 1; +static const long asn_VAL_43_optional = 0; +static const long asn_VAL_44_id_dLPDCPSnLength = 311; +static const long asn_VAL_44_ignore = 1; +static const long asn_VAL_44_optional = 0; +static const long asn_VAL_45_id_secondarymeNBULGTPTEIDatPDCP = 313; +static const long asn_VAL_45_ignore = 1; +static const long asn_VAL_45_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_secondarymeNBULGTPTEIDatPDCP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_46_id_uLpDCPSnLength = 302; +static const long asn_VAL_46_ignore = 1; +static const long asn_VAL_46_optional = 0; +static const long asn_VAL_47_id_dLPDCPSnLength = 311; +static const long asn_VAL_47_ignore = 1; +static const long asn_VAL_47_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_48_id_lCID = 314; +static const long asn_VAL_48_ignore = 1; +static const long asn_VAL_48_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_49_id_uLpDCPSnLength = 302; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_optional = 0; +static const long asn_VAL_50_id_dLPDCPSnLength = 311; +static const long asn_VAL_50_ignore = 1; +static const long asn_VAL_50_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_51_id_secondarysgNBDLGTPTEIDatPDCP = 312; +static const long asn_VAL_51_ignore = 1; +static const long asn_VAL_51_optional = 0; +static const long asn_VAL_52_id_RLC_Status = 300; +static const long asn_VAL_52_ignore = 1; +static const long asn_VAL_52_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_secondarysgNBDLGTPTEIDatPDCP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_ignore }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_53_id_RLCMode_transferred = 317; +static const long asn_VAL_53_ignore = 1; +static const long asn_VAL_53_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1_rows } +}; +static const long asn_VAL_54_id_uLpDCPSnLength = 302; +static const long asn_VAL_54_ignore = 1; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_dLPDCPSnLength = 311; +static const long asn_VAL_55_ignore = 1; +static const long asn_VAL_55_optional = 0; +static const long asn_VAL_56_id_new_drb_ID_req = 325; +static const long asn_VAL_56_ignore = 1; +static const long asn_VAL_56_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_new_drb_ID_req }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, + { "&Extension", aioc__type, &asn_DEF_NewDRBIDrequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_57_id_RLC_Status = 300; +static const long asn_VAL_57_ignore = 1; +static const long asn_VAL_57_optional = 0; +static const long asn_VAL_58_id_lCID = 314; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_59_id_uLpDCPSnLength = 302; +static const long asn_VAL_59_ignore = 1; +static const long asn_VAL_59_optional = 0; +static const long asn_VAL_60_id_dLPDCPSnLength = 311; +static const long asn_VAL_60_ignore = 1; +static const long asn_VAL_60_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_61_id_DownlinkPacketLossRate = 273; +static const long asn_VAL_61_ignore = 1; +static const long asn_VAL_61_optional = 0; +static const long asn_VAL_62_id_UplinkPacketLossRate = 274; +static const long asn_VAL_62_ignore = 1; +static const long asn_VAL_62_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_DownlinkPacketLossRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_ignore }, + { "&Extension", aioc__type, &asn_DEF_Packet_LossRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_UplinkPacketLossRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_ignore }, + { "&Extension", aioc__type, &asn_DEF_Packet_LossRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1[] = { + { 2, 4, asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1_rows } +}; +static const long asn_VAL_63_id_UL_EARFCNExtension = 95; +static const long asn_VAL_63_reject = 0; +static const long asn_VAL_63_optional = 0; +static const long asn_VAL_64_id_DL_EARFCNExtension = 96; +static const long asn_VAL_64_reject = 0; +static const long asn_VAL_64_optional = 0; +static const long asn_VAL_65_id_OffsetOfNbiotChannelNumberToDL_EARFCN = 177; +static const long asn_VAL_65_reject = 0; +static const long asn_VAL_65_optional = 0; +static const long asn_VAL_66_id_OffsetOfNbiotChannelNumberToUL_EARFCN = 178; +static const long asn_VAL_66_reject = 0; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_NRS_NSSS_PowerOffset = 282; +static const long asn_VAL_67_ignore = 1; +static const long asn_VAL_67_optional = 0; +static const long asn_VAL_68_id_NSSS_NumOccasionDifferentPrecoder = 283; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_optional = 0; +static const asn_ioc_cell_t asn_IOS_FDD_Info_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_UL_EARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_DL_EARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_OffsetOfNbiotChannelNumberToDL_EARFCN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_reject }, + { "&Extension", aioc__type, &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_OffsetOfNbiotChannelNumberToUL_EARFCN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_reject }, + { "&Extension", aioc__type, &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_NRS_NSSS_PowerOffset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRS_NSSS_PowerOffset }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_NSSS_NumOccasionDifferentPrecoder }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Extension", aioc__type, &asn_DEF_NSSS_NumOccasionDifferentPrecoder }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional } +}; +static const asn_ioc_set_t asn_IOS_FDD_Info_ExtIEs_1[] = { + { 6, 4, asn_IOS_FDD_Info_ExtIEs_1_rows } +}; +static const long asn_VAL_69_id_extended_e_RAB_MaximumBitrateDL = 196; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_extended_e_RAB_MaximumBitrateUL = 197; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_extended_e_RAB_GuaranteedBitrateDL = 198; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const long asn_VAL_72_id_extended_e_RAB_GuaranteedBitrateUL = 199; +static const long asn_VAL_72_ignore = 1; +static const long asn_VAL_72_optional = 0; +static const asn_ioc_cell_t asn_IOS_GBR_QosInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_extended_e_RAB_MaximumBitrateDL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_extended_e_RAB_MaximumBitrateUL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_extended_e_RAB_GuaranteedBitrateDL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_extended_e_RAB_GuaranteedBitrateUL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional } +}; +static const asn_ioc_set_t asn_IOS_GBR_QosInformation_ExtIEs_1[] = { + { 4, 4, asn_IOS_GBR_QosInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_73_id_NRrestrictioninEPSasSecondaryRAT = 202; +static const long asn_VAL_73_ignore = 1; +static const long asn_VAL_73_optional = 0; +static const long asn_VAL_74_id_CNTypeRestrictions = 301; +static const long asn_VAL_74_ignore = 1; +static const long asn_VAL_74_optional = 0; +static const long asn_VAL_75_id_NRrestrictionin5GS = 305; +static const long asn_VAL_75_ignore = 1; +static const long asn_VAL_75_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRestrictionList_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_NRrestrictioninEPSasSecondaryRAT }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRrestrictioninEPSasSecondaryRAT }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_CNTypeRestrictions }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_ignore }, + { "&Extension", aioc__type, &asn_DEF_CNTypeRestrictions }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_NRrestrictionin5GS }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRrestrictionin5GS }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRestrictionList_ExtIEs_1[] = { + { 3, 4, asn_IOS_HandoverRestrictionList_ExtIEs_1_rows } +}; +static const long asn_VAL_76_id_Time_UE_StayedInCell_EnhancedGranularity = 77; +static const long asn_VAL_76_ignore = 1; +static const long asn_VAL_76_optional = 0; +static const long asn_VAL_77_id_HO_cause = 80; +static const long asn_VAL_77_ignore = 1; +static const long asn_VAL_77_optional = 0; +static const asn_ioc_cell_t asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_Time_UE_StayedInCell_EnhancedGranularity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, + { "&Extension", aioc__type, &asn_DEF_Time_UE_StayedInCell_EnhancedGranularity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_HO_cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_ignore }, + { "&Extension", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_optional } +}; +static const asn_ioc_set_t asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1[] = { + { 2, 4, asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_78_id_M3Configuration = 85; +static const long asn_VAL_78_ignore = 1; +static const long asn_VAL_78_conditional = 1; +static const long asn_VAL_79_id_M4Configuration = 86; +static const long asn_VAL_79_ignore = 1; +static const long asn_VAL_79_conditional = 1; +static const long asn_VAL_80_id_M5Configuration = 87; +static const long asn_VAL_80_ignore = 1; +static const long asn_VAL_80_conditional = 1; +static const long asn_VAL_81_id_MDT_Location_Info = 88; +static const long asn_VAL_81_ignore = 1; +static const long asn_VAL_81_optional = 0; +static const long asn_VAL_82_id_SignallingBasedMDTPLMNList = 90; +static const long asn_VAL_82_ignore = 1; +static const long asn_VAL_82_optional = 0; +static const long asn_VAL_83_id_M6Configuration = 161; +static const long asn_VAL_83_ignore = 1; +static const long asn_VAL_83_conditional = 1; +static const long asn_VAL_84_id_M7Configuration = 162; +static const long asn_VAL_84_ignore = 1; +static const long asn_VAL_84_conditional = 1; +static const long asn_VAL_85_id_BluetoothMeasurementConfiguration = 303; +static const long asn_VAL_85_ignore = 1; +static const long asn_VAL_85_optional = 0; +static const long asn_VAL_86_id_WLANMeasurementConfiguration = 304; +static const long asn_VAL_86_ignore = 1; +static const long asn_VAL_86_optional = 0; +static const asn_ioc_cell_t asn_IOS_MDT_Configuration_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_M3Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_ignore }, + { "&Extension", aioc__type, &asn_DEF_M3Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_M4Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, + { "&Extension", aioc__type, &asn_DEF_M4Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_M5Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, + { "&Extension", aioc__type, &asn_DEF_M5Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_MDT_Location_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDT_Location_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_SignallingBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_M6Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_ignore }, + { "&Extension", aioc__type, &asn_DEF_M6Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_M7Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_ignore }, + { "&Extension", aioc__type, &asn_DEF_M7Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_BluetoothMeasurementConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_ignore }, + { "&Extension", aioc__type, &asn_DEF_BluetoothMeasurementConfiguration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_WLANMeasurementConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_ignore }, + { "&Extension", aioc__type, &asn_DEF_WLANMeasurementConfiguration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional } +}; +static const asn_ioc_set_t asn_IOS_MDT_Configuration_ExtIEs_1[] = { + { 9, 4, asn_IOS_MDT_Configuration_ExtIEs_1_rows } +}; +static const long asn_VAL_87_id_NRCGI = 322; +static const long asn_VAL_87_ignore = 1; +static const long asn_VAL_87_optional = 0; +static const long asn_VAL_88_id_MeNBCoordinationAssistanceInformation = 323; +static const long asn_VAL_88_reject = 0; +static const long asn_VAL_88_optional = 0; +static const asn_ioc_cell_t asn_IOS_MeNBResourceCoordinationInformationExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_NRCGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRCGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_MeNBCoordinationAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_reject }, + { "&Extension", aioc__type, &asn_DEF_MeNBCoordinationAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_optional } +}; +static const asn_ioc_set_t asn_IOS_MeNBResourceCoordinationInformationExtIEs_1[] = { + { 2, 4, asn_IOS_MeNBResourceCoordinationInformationExtIEs_1_rows } +}; +static const long asn_VAL_89_id_NeighbourTAC = 76; +static const long asn_VAL_89_ignore = 1; +static const long asn_VAL_89_optional = 0; +static const long asn_VAL_90_id_eARFCNExtension = 94; +static const long asn_VAL_90_reject = 0; +static const long asn_VAL_90_optional = 0; +static const asn_ioc_cell_t asn_IOS_Neighbour_Information_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_NeighbourTAC }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_ignore }, + { "&Extension", aioc__type, &asn_DEF_TAC }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_eARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_optional } +}; +static const asn_ioc_set_t asn_IOS_Neighbour_Information_ExtIEs_1[] = { + { 2, 4, asn_IOS_Neighbour_Information_ExtIEs_1_rows } +}; +static const long asn_VAL_91_id_ProSeUEtoNetworkRelaying = 149; +static const long asn_VAL_91_ignore = 1; +static const long asn_VAL_91_optional = 0; +static const asn_ioc_cell_t asn_IOS_ProSeAuthorized_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_ProSeUEtoNetworkRelaying }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_ignore }, + { "&Extension", aioc__type, &asn_DEF_ProSeUEtoNetworkRelaying }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_optional } +}; +static const asn_ioc_set_t asn_IOS_ProSeAuthorized_ExtIEs_1[] = { + { 1, 4, asn_IOS_ProSeAuthorized_ExtIEs_1_rows } +}; +static const long asn_VAL_92_id_DL_scheduling_PDCCH_CCE_usage = 193; +static const long asn_VAL_92_ignore = 1; +static const long asn_VAL_92_optional = 0; +static const long asn_VAL_93_id_UL_scheduling_PDCCH_CCE_usage = 194; +static const long asn_VAL_93_ignore = 1; +static const long asn_VAL_93_optional = 0; +static const asn_ioc_cell_t asn_IOS_RadioResourceStatus_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_DL_scheduling_PDCCH_CCE_usage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_ignore }, + { "&Extension", aioc__type, &asn_DEF_DL_scheduling_PDCCH_CCE_usage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_UL_scheduling_PDCCH_CCE_usage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_ignore }, + { "&Extension", aioc__type, &asn_DEF_UL_scheduling_PDCCH_CCE_usage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_optional } +}; +static const asn_ioc_set_t asn_IOS_RadioResourceStatus_ExtIEs_1[] = { + { 2, 4, asn_IOS_RadioResourceStatus_ExtIEs_1_rows } +}; +static const long asn_VAL_94_id_enhancedRNTP = 148; +static const long asn_VAL_94_ignore = 1; +static const long asn_VAL_94_optional = 0; +static const asn_ioc_cell_t asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_enhancedRNTP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_ignore }, + { "&Extension", aioc__type, &asn_DEF_EnhancedRNTP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional } +}; +static const asn_ioc_set_t asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1[] = { + { 1, 4, asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1_rows } +}; +static const long asn_VAL_95_id_UEID = 147; +static const long asn_VAL_95_ignore = 1; +static const long asn_VAL_95_optional = 0; +static const asn_ioc_cell_t asn_IOS_RSRPMRList_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_UEID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_ignore }, + { "&Extension", aioc__type, &asn_DEF_UEID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_optional } +}; +static const asn_ioc_set_t asn_IOS_RSRPMRList_ExtIEs_1[] = { + { 1, 4, asn_IOS_RSRPMRList_ExtIEs_1_rows } +}; +static const long asn_VAL_96_id_Number_of_Antennaports = 41; +static const long asn_VAL_96_ignore = 1; +static const long asn_VAL_96_optional = 0; +static const long asn_VAL_97_id_PRACH_Configuration = 55; +static const long asn_VAL_97_ignore = 1; +static const long asn_VAL_97_optional = 0; +static const long asn_VAL_98_id_MBSFN_Subframe_Info = 56; +static const long asn_VAL_98_ignore = 1; +static const long asn_VAL_98_optional = 0; +static const long asn_VAL_99_id_CSG_Id = 70; +static const long asn_VAL_99_ignore = 1; +static const long asn_VAL_99_optional = 0; +static const long asn_VAL_100_id_MBMS_Service_Area_List = 79; +static const long asn_VAL_100_ignore = 1; +static const long asn_VAL_100_optional = 0; +static const long asn_VAL_101_id_MultibandInfoList = 84; +static const long asn_VAL_101_ignore = 1; +static const long asn_VAL_101_optional = 0; +static const long asn_VAL_102_id_FreqBandIndicatorPriority = 160; +static const long asn_VAL_102_ignore = 1; +static const long asn_VAL_102_optional = 0; +static const long asn_VAL_103_id_BandwidthReducedSI = 180; +static const long asn_VAL_103_ignore = 1; +static const long asn_VAL_103_optional = 0; +static const long asn_VAL_104_id_ProtectedEUTRAResourceIndication = 284; +static const long asn_VAL_104_ignore = 1; +static const long asn_VAL_104_optional = 0; +static const asn_ioc_cell_t asn_IOS_ServedCell_Information_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_Number_of_Antennaports }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_ignore }, + { "&Extension", aioc__type, &asn_DEF_Number_of_Antennaports }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_PRACH_Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_ignore }, + { "&Extension", aioc__type, &asn_DEF_PRACH_Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_MBSFN_Subframe_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_ignore }, + { "&Extension", aioc__type, &asn_DEF_MBSFN_Subframe_Infolist }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, + { "&Extension", aioc__type, &asn_DEF_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_MBMS_Service_Area_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, + { "&Extension", aioc__type, &asn_DEF_MBMS_Service_Area_Identity_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_MultibandInfoList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, + { "&Extension", aioc__type, &asn_DEF_MultibandInfoList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_FreqBandIndicatorPriority }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_ignore }, + { "&Extension", aioc__type, &asn_DEF_FreqBandIndicatorPriority }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_BandwidthReducedSI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, + { "&Extension", aioc__type, &asn_DEF_BandwidthReducedSI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_ProtectedEUTRAResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_ignore }, + { "&Extension", aioc__type, &asn_DEF_ProtectedEUTRAResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_optional } +}; +static const asn_ioc_set_t asn_IOS_ServedCell_Information_ExtIEs_1[] = { + { 9, 4, asn_IOS_ServedCell_Information_ExtIEs_1_rows } +}; +static const long asn_VAL_105_id_ECGI = 316; +static const long asn_VAL_105_ignore = 1; +static const long asn_VAL_105_optional = 0; +static const long asn_VAL_106_id_SgNBCoordinationAssistanceInformation = 324; +static const long asn_VAL_106_reject = 0; +static const long asn_VAL_106_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBResourceCoordinationInformationExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_ECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, + { "&Extension", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_SgNBCoordinationAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, + { "&Extension", aioc__type, &asn_DEF_SgNBCoordinationAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBResourceCoordinationInformationExtIEs_1[] = { + { 2, 4, asn_IOS_SgNBResourceCoordinationInformationExtIEs_1_rows } +}; +static const long asn_VAL_107_id_AdditionalSpecialSubframe_Info = 97; +static const long asn_VAL_107_ignore = 1; +static const long asn_VAL_107_optional = 0; +static const long asn_VAL_108_id_eARFCNExtension = 94; +static const long asn_VAL_108_reject = 0; +static const long asn_VAL_108_optional = 0; +static const long asn_VAL_109_id_AdditionalSpecialSubframeExtension_Info = 179; +static const long asn_VAL_109_ignore = 1; +static const long asn_VAL_109_optional = 0; +static const asn_ioc_cell_t asn_IOS_TDD_Info_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_AdditionalSpecialSubframe_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_ignore }, + { "&Extension", aioc__type, &asn_DEF_AdditionalSpecialSubframe_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_eARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_AdditionalSpecialSubframeExtension_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_ignore }, + { "&Extension", aioc__type, &asn_DEF_AdditionalSpecialSubframeExtension_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional } +}; +static const asn_ioc_set_t asn_IOS_TDD_Info_ExtIEs_1[] = { + { 3, 4, asn_IOS_TDD_Info_ExtIEs_1_rows } +}; +static const long asn_VAL_110_id_MDTConfiguration = 72; +static const long asn_VAL_110_ignore = 1; +static const long asn_VAL_110_optional = 0; +static const long asn_VAL_111_id_UEAppLayerMeasConfig = 195; +static const long asn_VAL_111_ignore = 1; +static const long asn_VAL_111_optional = 0; +static const asn_ioc_cell_t asn_IOS_TraceActivation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_MDTConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDT_Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_UEAppLayerMeasConfig }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, + { "&Extension", aioc__type, &asn_DEF_UEAppLayerMeasConfig }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_optional } +}; +static const asn_ioc_set_t asn_IOS_TraceActivation_ExtIEs_1[] = { + { 2, 4, asn_IOS_TraceActivation_ExtIEs_1_rows } +}; +static const long asn_VAL_112_id_extended_uEaggregateMaximumBitRateDownlink = 200; +static const long asn_VAL_112_ignore = 1; +static const long asn_VAL_112_optional = 0; +static const long asn_VAL_113_id_extended_uEaggregateMaximumBitRateUplink = 201; +static const long asn_VAL_113_ignore = 1; +static const long asn_VAL_113_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_extended_uEaggregateMaximumBitRateDownlink }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_extended_uEaggregateMaximumBitRateUplink }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_optional } +}; +static const asn_ioc_set_t asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1[] = { + { 2, 4, asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1_rows } +}; +static const long asn_VAL_114_id_serviceType = 276; +static const long asn_VAL_114_ignore = 1; +static const long asn_VAL_114_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEAppLayerMeasConfig_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_serviceType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_ignore }, + { "&Extension", aioc__type, &asn_DEF_ServiceType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_optional } +}; +static const asn_ioc_set_t asn_IOS_UEAppLayerMeasConfig_ExtIEs_1[] = { + { 1, 4, asn_IOS_UEAppLayerMeasConfig_ExtIEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellInformation_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellInformation_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ServedCellsToModify_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCellsToModify_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCellsToModify_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ServedCellsToModify_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCellsToModify_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCellsToModify_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellMeasurementResult_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellMeasurementResult_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformationRetrieve_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformationRetrieve_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformationSgNBModReqExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformationSgNBModReqExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RAB_Level_QoS_Parameters_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RAB_Level_QoS_Parameters_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_FDD_Info_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_FDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct FDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_FDD_Info_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_FDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct FDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_GBR_QosInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GBR_QosInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GBR_QosInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_GBR_QosInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GBR_QosInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GBR_QosInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRestrictionList_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRestrictionList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRestrictionList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRestrictionList_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRestrictionList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRestrictionList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeNBResourceCoordinationInformationExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeNBResourceCoordinationInformationExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Neighbour_Information_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Neighbour_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Neighbour_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_Neighbour_Information_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Neighbour_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Neighbour_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RadioResourceStatus_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RadioResourceStatus_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RadioResourceStatus_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RadioResourceStatus_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RadioResourceStatus_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RadioResourceStatus_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RelativeNarrowbandTxPower_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RelativeNarrowbandTxPower_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RSRPMRList_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RSRPMRList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RSRPMRList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RSRPMRList_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RSRPMRList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RSRPMRList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ServedCell_Information_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCell_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCell_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ServedCell_Information_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCell_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCell_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBResourceCoordinationInformationExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBResourceCoordinationInformationExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TDD_Info_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TDD_Info_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEAggregate_MaximumBitrate_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEAggregate_MaximumBitrate_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEAppLayerMeasConfig_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAppLayerMeasConfig_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAppLayerMeasConfig_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEAppLayerMeasConfig_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAppLayerMeasConfig_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAppLayerMeasConfig_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_478 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_479 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_480 CC_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_482 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_483 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_484 CC_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_486 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_487 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_488 CC_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_490 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_491 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_492 CC_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_494 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_495 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_496 CC_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_498 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_499 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_500 CC_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_502 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_503 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_504 CC_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_506 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_507 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_508 CC_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_510 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_511 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_512 CC_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_514 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_515 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_516 CC_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_518 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_519 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_520 CC_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_522 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_523 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_524 CC_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_526 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_527 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_528 CC_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_530 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_531 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_532 CC_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_534 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_535 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_536 CC_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_538 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_539 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_540 CC_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_542 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_543 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_544 CC_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_546 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_547 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_548 CC_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_550 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_551 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_552 CC_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_554 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_555 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_556 CC_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_558 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_559 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_560 CC_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_562 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_563 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_564 CC_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_566 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_567 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_568 CC_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_570 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_571 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_572 CC_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_574 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_575 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_576 CC_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_578 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_579 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_580 CC_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_582 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_583 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_584 CC_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_586 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_587 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_588 CC_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_590 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_591 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_592 CC_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_594 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_595 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_596 CC_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_598 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_599 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_600 CC_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_602 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_603 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_604 CC_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_606 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_607 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_608 CC_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_610 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_611 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_612 CC_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_614 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_615 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_616 CC_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_618 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_619 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_620 CC_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_622 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_623 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_624 CC_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_626 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_627 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_628 CC_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_630 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_631 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_632 CC_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_634 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_635 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_636 CC_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_638 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_639 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_640 CC_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_642 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_643 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_644 CC_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_646 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_647 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_648 CC_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_650 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_651 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_652 CC_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_654 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_655 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_656 CC_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_658 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_659 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_660 CC_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_662 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_663 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_664 CC_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_666 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_667 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_668 CC_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_670 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_671 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_672 CC_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_674 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_675 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_676 CC_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_678 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_679 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_680 CC_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_682 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_683 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_684 CC_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_686 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_687 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_688 CC_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_690 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_691 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_692 CC_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_694 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_695 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_696 CC_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_698 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_699 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_700 CC_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_702 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_703 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_704 CC_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_706 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_707 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_708 CC_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_710 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_711 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_712 CC_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_714 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_715 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_716 CC_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_718 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_719 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_720 CC_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_722 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_723 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_724 CC_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_726 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_727 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_728 CC_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_730 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_731 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_732 CC_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_734 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_735 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_736 CC_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_738 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_739 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_740 CC_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_742 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_743 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_744 CC_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_746 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_747 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_748 CC_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_750 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_751 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_752 CC_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_754 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_755 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_756 CC_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_758 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_759 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_760 CC_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_762 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_763 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_764 CC_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_766 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_767 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_768 CC_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_770 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_771 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_772 CC_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_774 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_775 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_776 CC_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_778 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_779 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_780 CC_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_782 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_783 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_784 CC_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_786 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_787 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_788 CC_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_790 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_791 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_792 CC_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_794 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_795 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_796 CC_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_798 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_799 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_800 CC_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_802 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_803 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_804 CC_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_806 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_807 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_808 CC_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_810 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_811 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_812 CC_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_814 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_815 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_816 CC_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_818 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_819 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_820 CC_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_822 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_823 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_824 CC_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_826 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_827 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_828 CC_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_830 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_831 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_832 CC_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_834 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_835 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_836 CC_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_838 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_839 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_840 CC_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_842 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_843 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_844 CC_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_846 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_847 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_848 CC_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_850 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_851 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_852 CC_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_854 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_855 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_856 CC_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_858 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_859 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_860 CC_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_862 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_863 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_864 CC_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_866 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_867 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_868 CC_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_870 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_871 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_872 CC_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_874 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_875 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_876 CC_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_878 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_879 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_880 CC_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_882 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_883 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_884 CC_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_886 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_887 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_888 CC_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_890 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_891 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_892 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_extensionValue_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.ManagementBasedMDTallowed), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ManagementBasedMDTallowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ManagementBasedMDTallowed" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.UESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESidelinkAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* ManagementBasedMDTallowed */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* UESidelinkAggregateMaximumBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_4 = { + sizeof(struct UE_ContextInformation_ExtIEs__extensionValue), + offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_4, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_4 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_4, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformation_ExtIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_4, + select_UE_ContextInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_4, memb_extensionValue_constraint_1 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_ExtIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_ExtIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_ExtIEs_specs_1 = { + sizeof(struct UE_ContextInformation_ExtIEs), + offsetof(struct UE_ContextInformation_ExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformation_ExtIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_ExtIEs = { + "UE-ContextInformation-ExtIEs", + "UE-ContextInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_ExtIEs_tags_1, + sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_ExtIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_ExtIEs_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformation_ExtIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, choice.BearerType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BearerType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* BearerType */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_8 = { + sizeof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_8 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_8, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetup_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_8, + select_E_RABs_ToBeSetup_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_8, memb_extensionValue_constraint_5 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_ItemExtIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5 = { + sizeof(struct E_RABs_ToBeSetup_ItemExtIEs), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_ItemExtIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs = { + "E-RABs-ToBeSetup-ItemExtIEs", + "E-RABs-ToBeSetup-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5, + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_12 = { + sizeof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_12 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_12, + 0, + { 0, &asn_PER_memb_extensionValue_constr_12, memb_extensionValue_constraint_9 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSeNB_ItemExtIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9 = { + sizeof(struct UE_ContextReferenceAtSeNB_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSeNB_ItemExtIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs = { + "UE-ContextReferenceAtSeNB-ItemExtIEs", + "UE-ContextReferenceAtSeNB-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9, + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_16 = { + sizeof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_16 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_16, + 0, + { 0, &asn_PER_memb_extensionValue_constr_16, memb_extensionValue_constraint_13 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtWT_ItemExtIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13 = { + sizeof(struct UE_ContextReferenceAtWT_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtWT_ItemExtIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs = { + "UE-ContextReferenceAtWT-ItemExtIEs", + "UE-ContextReferenceAtWT-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13, + sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_20 = { + sizeof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_20 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_20, + 0, + { 0, &asn_PER_memb_extensionValue_constr_20, memb_extensionValue_constraint_17 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSgNB_ItemExtIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17 = { + sizeof(struct UE_ContextReferenceAtSgNB_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSgNB_ItemExtIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs = { + "UE-ContextReferenceAtSgNB-ItemExtIEs", + "UE-ContextReferenceAtSgNB-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17, + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_24 = { + sizeof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_24 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_ExtIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_24, + 0, + { 0, &asn_PER_memb_extensionValue_constr_24, memb_extensionValue_constraint_21 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_Item_ExtIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21 = { + sizeof(struct E_RABs_Admitted_Item_ExtIEs), + offsetof(struct E_RABs_Admitted_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_Item_ExtIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item_ExtIEs = { + "E-RABs-Admitted-Item-ExtIEs", + "E-RABs-Admitted-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21, + sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21) + /sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21) + /sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_Item_ExtIEs_21, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsExtended), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReceiveStatusOfULPDCPSDUsExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTValueExtended), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTValueExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTValueExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsPDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTvaluePDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvaluePDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTvaluePDCP-SNlength18" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_28[] = { 0, 2, 1, 3 }; +static const unsigned asn_MAP_extensionValue_from_canonical_28[] = { 0, 2, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 1 }, /* ReceiveStatusOfULPDCPSDUsExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, -1, 0 }, /* ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* COUNTValueExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* COUNTvaluePDCP-SNlength18 */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_28 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_28, + 4, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_28, + asn_MAP_extensionValue_from_canonical_28, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_28 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_28, + 4, /* Elements count */ + &asn_SPC_extensionValue_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_28, + select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_28, memb_extensionValue_constraint_25 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs = { + "E-RABs-SubjectToStatusTransfer-ItemExtIEs", + "E-RABs-SubjectToStatusTransfer-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.ABSInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ABSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ABSInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.InvokeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_InvokeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InvokeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.SubframeAssignment), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SubframeAssignment, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubframeAssignment" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.ExtendedULInterferenceOverloadInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExtendedULInterferenceOverloadInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedULInterferenceOverloadInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.CoMPInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CoMPInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.DynamicDLTransmissionInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_DynamicDLTransmissionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DynamicDLTransmissionInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_32[] = { 1, 2, 3, 4, 0, 5 }; +static const unsigned asn_MAP_extensionValue_from_canonical_32[] = { 4, 0, 1, 2, 3, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 1 }, /* InvokeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 0 }, /* SubframeAssignment */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* ExtendedULInterferenceOverloadInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* CoMPInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 1 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 5, -1, 0 }, /* naics-active */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 1 }, /* tdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 5, -1, 0 }, /* naics-inactive */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 } /* abs-inactive */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_32 = { + sizeof(struct CellInformation_Item_ExtIEs__extensionValue), + offsetof(struct CellInformation_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellInformation_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellInformation_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_32, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_32, + asn_MAP_extensionValue_from_canonical_32, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_32 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_32, + 6, /* Elements count */ + &asn_SPC_extensionValue_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellInformation_Item_ExtIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellInformation_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_32, + select_CellInformation_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_32, memb_extensionValue_constraint_29 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_Item_ExtIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_Item_ExtIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_ExtIEs_specs_29 = { + sizeof(struct CellInformation_Item_ExtIEs), + offsetof(struct CellInformation_Item_ExtIEs, _asn_ctx), + asn_MAP_CellInformation_Item_ExtIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_Item_ExtIEs = { + "CellInformation-Item-ExtIEs", + "CellInformation-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_Item_ExtIEs_tags_29, + sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29) + /sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29[0]), /* 1 */ + asn_DEF_CellInformation_Item_ExtIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29) + /sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_Item_ExtIEs_29, + 3, /* Elements count */ + &asn_SPC_CellInformation_Item_ExtIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, choice.DeactivationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DeactivationIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* DeactivationIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_36 = { + sizeof(struct ServedCellsToModify_Item_ExtIEs__extensionValue), + offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedCellsToModify_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_36 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_36, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_ExtIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ServedCellsToModify_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_36, + select_ServedCellsToModify_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_36, memb_extensionValue_constraint_33 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToModify_Item_ExtIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33 = { + sizeof(struct ServedCellsToModify_Item_ExtIEs), + offsetof(struct ServedCellsToModify_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedCellsToModify_Item_ExtIEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item_ExtIEs = { + "ServedCellsToModify-Item-ExtIEs", + "ServedCellsToModify-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33, + sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33) + /sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[0]), /* 1 */ + asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33) + /sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToModify_Item_ExtIEs_33, + 3, /* Elements count */ + &asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_40 = { + sizeof(struct CellToReport_Item_ExtIEs__extensionValue), + offsetof(struct CellToReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellToReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellToReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_40 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellToReport_Item_ExtIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_40, + 0, + { 0, &asn_PER_memb_extensionValue_constr_40, memb_extensionValue_constraint_37 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_Item_ExtIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_Item_ExtIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_ExtIEs_specs_37 = { + sizeof(struct CellToReport_Item_ExtIEs), + offsetof(struct CellToReport_Item_ExtIEs, _asn_ctx), + asn_MAP_CellToReport_Item_ExtIEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_Item_ExtIEs = { + "CellToReport-Item-ExtIEs", + "CellToReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_Item_ExtIEs_tags_37, + sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37) + /sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37[0]), /* 1 */ + asn_DEF_CellToReport_Item_ExtIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37) + /sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_Item_ExtIEs_37, + 3, /* Elements count */ + &asn_SPC_CellToReport_Item_ExtIEs_specs_37 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_44 = { + sizeof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue, present), + sizeof(((struct MeasurementInitiationResult_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_44 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_44, + 0, + { 0, &asn_PER_memb_extensionValue_constr_44, memb_extensionValue_constraint_41 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_Item_ExtIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41 = { + sizeof(struct MeasurementInitiationResult_Item_ExtIEs), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs, _asn_ctx), + asn_MAP_MeasurementInitiationResult_Item_ExtIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs = { + "MeasurementInitiationResult-Item-ExtIEs", + "MeasurementInitiationResult-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41, + sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_48 = { + sizeof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue), + offsetof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue, present), + sizeof(((struct MeasurementFailureCause_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_48 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_ExtIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_48, + 0, + { 0, &asn_PER_memb_extensionValue_constr_48, memb_extensionValue_constraint_45 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_Item_ExtIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45 = { + sizeof(struct MeasurementFailureCause_Item_ExtIEs), + offsetof(struct MeasurementFailureCause_Item_ExtIEs, _asn_ctx), + asn_MAP_MeasurementFailureCause_Item_ExtIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item_ExtIEs = { + "MeasurementFailureCause-Item-ExtIEs", + "MeasurementFailureCause-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45, + sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45) + /sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45) + /sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_Item_ExtIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_52 = { + sizeof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue, present), + sizeof(((struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_52 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_52, + 0, + { 0, &asn_PER_memb_extensionValue_constr_52, memb_extensionValue_constraint_49 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_Item_ExtIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49 = { + sizeof(struct CompleteFailureCauseInformation_Item_ExtIEs), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_Item_ExtIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs = { + "CompleteFailureCauseInformation-Item-ExtIEs", + "CompleteFailureCauseInformation-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49, + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CompositeAvailableCapacityGroup), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacityGroup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompositeAvailableCapacityGroup" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.ABS_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABS_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ABS-Status" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.RSRPMRList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMRList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RSRPMRList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CSIReportList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSIReportList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CellReportingIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CellReportingIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellReportingIndicator" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_56[] = { 4, 0, 1, 2, 3 }; +static const unsigned asn_MAP_extensionValue_from_canonical_56[] = { 1, 2, 3, 4, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* CellReportingIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* CompositeAvailableCapacityGroup */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 2 }, /* ABS-Status */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 1 }, /* RSRPMRList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 0 } /* CSIReportList */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_56 = { + sizeof(struct CellMeasurementResult_Item_ExtIEs__extensionValue), + offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellMeasurementResult_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_56, + 5, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_56, + asn_MAP_extensionValue_from_canonical_56, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_56 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_56, + 5, /* Elements count */ + &asn_SPC_extensionValue_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_ExtIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellMeasurementResult_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_56, + select_CellMeasurementResult_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_56, memb_extensionValue_constraint_53 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_Item_ExtIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53 = { + sizeof(struct CellMeasurementResult_Item_ExtIEs), + offsetof(struct CellMeasurementResult_Item_ExtIEs, _asn_ctx), + asn_MAP_CellMeasurementResult_Item_ExtIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item_ExtIEs = { + "CellMeasurementResult-Item-ExtIEs", + "CellMeasurementResult-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53, + sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53) + /sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[0]), /* 1 */ + asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53) + /sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_Item_ExtIEs_53, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_60 = { + sizeof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue), + offsetof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedCellsToActivate_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_60 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_ExtIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_60, + 0, + { 0, &asn_PER_memb_extensionValue_constr_60, memb_extensionValue_constraint_57 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToActivate_Item_ExtIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57 = { + sizeof(struct ServedCellsToActivate_Item_ExtIEs), + offsetof(struct ServedCellsToActivate_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedCellsToActivate_Item_ExtIEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item_ExtIEs = { + "ServedCellsToActivate-Item-ExtIEs", + "ServedCellsToActivate-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57, + sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57) + /sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57) + /sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToActivate_Item_ExtIEs_57, + 3, /* Elements count */ + &asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_64 = { + sizeof(struct ActivatedCellList_Item_ExtIEs__extensionValue), + offsetof(struct ActivatedCellList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ActivatedCellList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ActivatedCellList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_64 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_ExtIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_64, + 0, + { 0, &asn_PER_memb_extensionValue_constr_64, memb_extensionValue_constraint_61 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedCellList_Item_ExtIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61 = { + sizeof(struct ActivatedCellList_Item_ExtIEs), + offsetof(struct ActivatedCellList_Item_ExtIEs, _asn_ctx), + asn_MAP_ActivatedCellList_Item_ExtIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item_ExtIEs = { + "ActivatedCellList-Item-ExtIEs", + "ActivatedCellList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61, + sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61) + /sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[0]), /* 1 */ + asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61) + /sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedCellList_Item_ExtIEs_61, + 3, /* Elements count */ + &asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_68 = { + sizeof(struct RNL_Header_Item_ExtIEs__extensionValue), + offsetof(struct RNL_Header_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RNL_Header_Item_ExtIEs__extensionValue, present), + sizeof(((struct RNL_Header_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_68 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RNL_Header_Item_ExtIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_68, + 0, + { 0, &asn_PER_memb_extensionValue_constr_68, memb_extensionValue_constraint_65 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RNL_Header_Item_ExtIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RNL_Header_Item_ExtIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_Item_ExtIEs_specs_65 = { + sizeof(struct RNL_Header_Item_ExtIEs), + offsetof(struct RNL_Header_Item_ExtIEs, _asn_ctx), + asn_MAP_RNL_Header_Item_ExtIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RNL_Header_Item_ExtIEs = { + "RNL-Header-Item-ExtIEs", + "RNL-Header-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RNL_Header_Item_ExtIEs_tags_65, + sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65) + /sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65[0]), /* 1 */ + asn_DEF_RNL_Header_Item_ExtIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65) + /sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RNL_Header_Item_ExtIEs_65, + 3, /* Elements count */ + &asn_SPC_RNL_Header_Item_ExtIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_72[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* Correlation-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_72 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_72, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_72 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_72, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_72, + select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_72, memb_extensionValue_constraint_69 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs = { + "E-RABs-ToBeAdded-Item-SCG-BearerExtIEs", + "E-RABs-ToBeAdded-Item-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_76 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_76 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_76, + 0, + { 0, &asn_PER_memb_extensionValue_constr_76, memb_extensionValue_constraint_73 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs = { + "E-RABs-ToBeAdded-Item-Split-BearerExtIEs", + "E-RABs-ToBeAdded-Item-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_80 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_80 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_80, + 0, + { 0, &asn_PER_memb_extensionValue_constr_80, memb_extensionValue_constraint_77 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_84 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_84 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_84, + 0, + { 0, &asn_PER_memb_extensionValue_constr_84, memb_extensionValue_constraint_81 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_88 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_88 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_88, + 0, + { 0, &asn_PER_memb_extensionValue_constr_88, memb_extensionValue_constraint_85 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs = { + "ResponseInformationSeNBReconfComp-SuccessItemExtIEs", + "ResponseInformationSeNBReconfComp-SuccessItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_92 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_92 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_92, + 0, + { 0, &asn_PER_memb_extensionValue_constr_92, memb_extensionValue_constraint_89 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs = { + "ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs", + "ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_96 = { + sizeof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationSeNBModReqExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_96 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_96, + 0, + { 0, &asn_PER_memb_extensionValue_constr_96, memb_extensionValue_constraint_93 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSeNBModReqExtIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93 = { + sizeof(struct UE_ContextInformationSeNBModReqExtIEs), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationSeNBModReqExtIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs = { + "UE-ContextInformationSeNBModReqExtIEs", + "UE-ContextInformationSeNBModReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93, + sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[0]), /* 1 */ + asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* Correlation-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_100 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_100, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_100 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_100, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_100, + select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_100, memb_extensionValue_constraint_97 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_104 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_104 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_104, + 0, + { 0, &asn_PER_memb_extensionValue_constr_104, memb_extensionValue_constraint_101 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_108 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_108 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_108, + 0, + { 0, &asn_PER_memb_extensionValue_constr_108, memb_extensionValue_constraint_105 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_112 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_112 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_112, + 0, + { 0, &asn_PER_memb_extensionValue_constr_112, memb_extensionValue_constraint_109 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_116 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_116 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_116, + 0, + { 0, &asn_PER_memb_extensionValue_constr_116, memb_extensionValue_constraint_113 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_120 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_120 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_120, + 0, + { 0, &asn_PER_memb_extensionValue_constr_120, memb_extensionValue_constraint_117 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_124 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_124 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_124, + 0, + { 0, &asn_PER_memb_extensionValue_constr_124, memb_extensionValue_constraint_121 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_128 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_128 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_128, + 0, + { 0, &asn_PER_memb_extensionValue_constr_128, memb_extensionValue_constraint_125 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_132 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_132 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_132, + 0, + { 0, &asn_PER_memb_extensionValue_constr_132, memb_extensionValue_constraint_129 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_136 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_136 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_136, + 0, + { 0, &asn_PER_memb_extensionValue_constr_136, memb_extensionValue_constraint_133 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_140 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_140 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_140, + 0, + { 0, &asn_PER_memb_extensionValue_constr_140, memb_extensionValue_constraint_137 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_144 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_144 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_144, + 0, + { 0, &asn_PER_memb_extensionValue_constr_144, memb_extensionValue_constraint_141 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_148 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_148 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_148, + 0, + { 0, &asn_PER_memb_extensionValue_constr_148, memb_extensionValue_constraint_145 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItemExtIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItemExtIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs = { + "E-RABs-ToBeReleased-ModReqdItemExtIEs", + "E-RABs-ToBeReleased-ModReqdItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_152 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_152 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_152, + 0, + { 0, &asn_PER_memb_extensionValue_constr_152, memb_extensionValue_constraint_149 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_156 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_156 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_156, + 0, + { 0, &asn_PER_memb_extensionValue_constr_156, memb_extensionValue_constraint_153 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_160 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_160 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_160, + 0, + { 0, &asn_PER_memb_extensionValue_constr_160, memb_extensionValue_constraint_157 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_164 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_164 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_164, + 0, + { 0, &asn_PER_memb_extensionValue_constr_164, memb_extensionValue_constraint_161 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_168 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_168 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_168, + 0, + { 0, &asn_PER_memb_extensionValue_constr_168, memb_extensionValue_constraint_165 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItemExtIEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemExtIEs), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItemExtIEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs = { + "E-RABs-SubjectToCounterCheckItemExtIEs", + "E-RABs-SubjectToCounterCheckItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, choice.UESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESidelinkAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UESidelinkAggregateMaximumBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_172 = { + sizeof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationRetrieve_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_172, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_172 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_172, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformationRetrieve_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_172, + select_UE_ContextInformationRetrieve_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_172, memb_extensionValue_constraint_169 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationRetrieve_ExtIEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169 = { + sizeof(struct UE_ContextInformationRetrieve_ExtIEs), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationRetrieve_ExtIEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs = { + "UE-ContextInformationRetrieve-ExtIEs", + "UE-ContextInformationRetrieve-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169, + sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[0]), /* 1 */ + asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, choice.DL_Forwarding), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DL-Forwarding" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_176[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_176[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* DL-Forwarding */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GTPtunnelEndpoint */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_176 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_176, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_176, + asn_MAP_extensionValue_from_canonical_176, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_176 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_176, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_176, + select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_176, memb_extensionValue_constraint_173 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs = { + "E-RABs-ToBeSetupRetrieve-ItemExtIEs", + "E-RABs-ToBeSetupRetrieve-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_180 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_180 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_178, memb_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_179, memb_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_180, + 0, + { 0, &asn_PER_memb_extensionValue_constr_180, memb_extensionValue_constraint_177 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_184 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_184, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_184 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_184, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_182, memb_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_183, memb_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_184, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_184, memb_extensionValue_constraint_181 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.DuplicationActivation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DuplicationActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DuplicationActivation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* DuplicationActivation */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_188 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_188, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_188 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_188, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_186, memb_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_187, memb_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_188, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_188, memb_extensionValue_constraint_185 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_192 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_192 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_190, memb_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_191, memb_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_192, + 0, + { 0, &asn_PER_memb_extensionValue_constr_192, memb_extensionValue_constraint_189 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_196 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_196, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_196 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_196, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_194, memb_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_195, memb_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_196, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_196, memb_extensionValue_constraint_193 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* LCID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_200 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_200, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_200 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_200, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_198, memb_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_199, memb_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_200, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_200, memb_extensionValue_constraint_197 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_204 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_204 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_202, memb_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_203, memb_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_204, + 0, + { 0, &asn_PER_memb_extensionValue_constr_204, memb_extensionValue_constraint_201 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs = { + "ResponseInformationSgNBReconfComp-SuccessItemExtIEs", + "ResponseInformationSgNBReconfComp-SuccessItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_208 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_208 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_206, memb_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_207, memb_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_208, + 0, + { 0, &asn_PER_memb_extensionValue_constr_208, memb_extensionValue_constraint_205 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs = { + "ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs", + "ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* SubscriberProfileIDforRFP */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_212 = { + sizeof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationSgNBModReqExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_212, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_212 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_212, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_210, memb_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformationSgNBModReqExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_211, memb_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_212, + select_UE_ContextInformationSgNBModReqExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_212, memb_extensionValue_constraint_209 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSgNBModReqExtIEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209 = { + sizeof(struct UE_ContextInformationSgNBModReqExtIEs), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationSgNBModReqExtIEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs = { + "UE-ContextInformationSgNBModReqExtIEs", + "UE-ContextInformationSgNBModReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209, + sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209) + /sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[0]), /* 1 */ + asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209) + /sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_216 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_216 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_214, memb_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_215, memb_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_216, + 0, + { 0, &asn_PER_memb_extensionValue_constr_216, memb_extensionValue_constraint_213 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_220[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_220[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_220 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_220, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_220 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_220, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_218, memb_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_219, memb_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_220, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_220, memb_extensionValue_constraint_217 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.DuplicationActivation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DuplicationActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DuplicationActivation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_224[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* DuplicationActivation */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_224 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_224, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_224 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_224, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_222, memb_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_223, memb_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_224, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_224, memb_extensionValue_constraint_221 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_228 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_228 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_226, memb_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_227, memb_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_228, + 0, + { 0, &asn_PER_memb_extensionValue_constr_228, memb_extensionValue_constraint_225 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeModified-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_232 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_232, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_232 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_232, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_230, memb_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_231, memb_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_232, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_232, memb_extensionValue_constraint_229 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* GTPtunnelEndpoint */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_236 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_236, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_236 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_236, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_234, memb_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_235, memb_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_236, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_236, memb_extensionValue_constraint_233 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_240 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_240 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_238, memb_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_239, memb_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_240, + 0, + { 0, &asn_PER_memb_extensionValue_constr_240, memb_extensionValue_constraint_237 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_244 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_244 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_242, memb_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_243, memb_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_244, + 0, + { 0, &asn_PER_memb_extensionValue_constr_244, memb_extensionValue_constraint_241 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_248 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_248 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_246, memb_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_247, memb_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_248, + 0, + { 0, &asn_PER_memb_extensionValue_constr_248, memb_extensionValue_constraint_245 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_252 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_252 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_250, memb_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_251, memb_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_252, + 0, + { 0, &asn_PER_memb_extensionValue_constr_252, memb_extensionValue_constraint_249 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_256 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_256, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_256 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_256, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_254, memb_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_255, memb_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_256, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_256, memb_extensionValue_constraint_253 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* LCID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_260 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_260, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_260 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_260, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_258, memb_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_259, memb_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_260, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_260, memb_extensionValue_constraint_257 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_264 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_264 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_262, memb_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_263, memb_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_264, + 0, + { 0, &asn_PER_memb_extensionValue_constr_264, memb_extensionValue_constraint_261 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_268 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_268, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_268 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_268, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_266, memb_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_267, memb_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_268, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_268, memb_extensionValue_constraint_265 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_272 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_272, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_272 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_272, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_270, memb_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_271, memb_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_272, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_272, memb_extensionValue_constraint_269 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_276 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_276 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_274, memb_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_275, memb_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_276, + 0, + { 0, &asn_PER_memb_extensionValue_constr_276, memb_extensionValue_constraint_273 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_280 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_280 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_278, memb_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_279, memb_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_280, + 0, + { 0, &asn_PER_memb_extensionValue_constr_280, memb_extensionValue_constraint_277 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_284 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_284 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_282, memb_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_283, memb_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_284, + 0, + { 0, &asn_PER_memb_extensionValue_constr_284, memb_extensionValue_constraint_281 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_288[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_288[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_288 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_288, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_288 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_288, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_286, memb_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_287, memb_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_288, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_288, memb_extensionValue_constraint_285 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_292 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_292 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_290, memb_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_291, memb_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_292, + 0, + { 0, &asn_PER_memb_extensionValue_constr_292, memb_extensionValue_constraint_289 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_296[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.NewDRBIDrequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NewDRBIDrequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NewDRBIDrequest" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_296[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* NewDRBIDrequest */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_296 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_296, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_296 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_296, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_294, memb_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_295, memb_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_296, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_296, memb_extensionValue_constraint_293 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_300[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_300[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_300[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_300[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* LCID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_300 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_300, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_300, + asn_MAP_extensionValue_from_canonical_300, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_300 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_300, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_298, memb_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_299, memb_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_300, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_300, memb_extensionValue_constraint_297 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_304 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_304 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_302, memb_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_303, memb_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_304, + 0, + { 0, &asn_PER_memb_extensionValue_constr_304, memb_extensionValue_constraint_301 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_308 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_308 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_306, memb_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_307, memb_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_308, + 0, + { 0, &asn_PER_memb_extensionValue_constr_308, memb_extensionValue_constraint_305 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_312[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_312[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_312 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_312, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_312 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_312, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_310, memb_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_311, memb_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_312, + select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_312, memb_extensionValue_constraint_309 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_316 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_316 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_314, memb_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_315, memb_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_316, + 0, + { 0, &asn_PER_memb_extensionValue_constr_316, memb_extensionValue_constraint_313 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_320 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_320 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_318, memb_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_319, memb_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_320, + 0, + { 0, &asn_PER_memb_extensionValue_constr_320, memb_extensionValue_constraint_317 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_324 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_324 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_322, memb_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_323, memb_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_324, + 0, + { 0, &asn_PER_memb_extensionValue_constr_324, memb_extensionValue_constraint_321 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_328 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_328 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_326, memb_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_327, memb_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_328, + 0, + { 0, &asn_PER_memb_extensionValue_constr_328, memb_extensionValue_constraint_325 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_332 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_332 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_330, memb_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_331, memb_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_332, + 0, + { 0, &asn_PER_memb_extensionValue_constr_332, memb_extensionValue_constraint_329 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_336 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_336 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_334, memb_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_335, memb_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_336, + 0, + { 0, &asn_PER_memb_extensionValue_constr_336, memb_extensionValue_constraint_333 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_340 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_340 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_338, memb_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_339, memb_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_340, + 0, + { 0, &asn_PER_memb_extensionValue_constr_340, memb_extensionValue_constraint_337 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_344 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_344 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_342, memb_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_343, memb_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_344, + 0, + { 0, &asn_PER_memb_extensionValue_constr_344, memb_extensionValue_constraint_341 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_348 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_348 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_346, memb_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_347, memb_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_348, + 0, + { 0, &asn_PER_memb_extensionValue_constr_348, memb_extensionValue_constraint_345 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs = { + "E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs", + "E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_352 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_352 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_350, memb_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_351, memb_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_352, + 0, + { 0, &asn_PER_memb_extensionValue_constr_352, memb_extensionValue_constraint_349 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_356 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_356 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_354, memb_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_355, memb_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_356, + 0, + { 0, &asn_PER_memb_extensionValue_constr_356, memb_extensionValue_constraint_353 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_360 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_360 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_358, memb_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_359, memb_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_360, + 0, + { 0, &asn_PER_memb_extensionValue_constr_360, memb_extensionValue_constraint_357 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_364 = { + sizeof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue, present), + sizeof(((struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_364 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_362, memb_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_363, memb_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_364, + 0, + { 0, &asn_PER_memb_extensionValue_constr_364, memb_extensionValue_constraint_361 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedEUTRAcellsENDCX2Management_ExtIEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361 = { + sizeof(struct ServedEUTRAcellsENDCX2Management_ExtIEs), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, _asn_ctx), + asn_MAP_ServedEUTRAcellsENDCX2Management_ExtIEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs = { + "ServedEUTRAcellsENDCX2Management-ExtIEs", + "ServedEUTRAcellsENDCX2Management-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361, + sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361, + 3, /* Elements count */ + &asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_368 = { + sizeof(struct En_gNBServedCells_ExtIEs__extensionValue), + offsetof(struct En_gNBServedCells_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct En_gNBServedCells_ExtIEs__extensionValue, present), + sizeof(((struct En_gNBServedCells_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_368 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNBServedCells_ExtIEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_366, memb_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_367, memb_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_368, + 0, + { 0, &asn_PER_memb_extensionValue_constr_368, memb_extensionValue_constraint_365 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNBServedCells_ExtIEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNBServedCells_ExtIEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNBServedCells_ExtIEs_specs_365 = { + sizeof(struct En_gNBServedCells_ExtIEs), + offsetof(struct En_gNBServedCells_ExtIEs, _asn_ctx), + asn_MAP_En_gNBServedCells_ExtIEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNBServedCells_ExtIEs = { + "En-gNBServedCells-ExtIEs", + "En-gNBServedCells-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNBServedCells_ExtIEs_tags_365, + sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365) + /sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365[0]), /* 1 */ + asn_DEF_En_gNBServedCells_ExtIEs_tags_365, /* Same as above */ + sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365) + /sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNBServedCells_ExtIEs_365, + 3, /* Elements count */ + &asn_SPC_En_gNBServedCells_ExtIEs_specs_365 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_372 = { + sizeof(struct ServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct ServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_372 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCell_Information_ExtIEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_370, memb_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_371, memb_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_372, + 0, + { 0, &asn_PER_memb_extensionValue_constr_372, memb_extensionValue_constraint_369 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCell_Information_ExtIEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_ExtIEs_specs_369 = { + sizeof(struct ServedNRCell_Information_ExtIEs), + offsetof(struct ServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCell_Information_ExtIEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information_ExtIEs = { + "ServedNRCell-Information-ExtIEs", + "ServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCell_Information_ExtIEs_tags_369, + sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369) + /sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[0]), /* 1 */ + asn_DEF_ServedNRCell_Information_ExtIEs_tags_369, /* Same as above */ + sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369) + /sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCell_Information_ExtIEs_369, + 3, /* Elements count */ + &asn_SPC_ServedNRCell_Information_ExtIEs_specs_369 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_376 = { + sizeof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_376 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_374, memb_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_375, memb_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_376, + 0, + { 0, &asn_PER_memb_extensionValue_constr_376, memb_extensionValue_constraint_373 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoServedNRCell_Information_ExtIEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373 = { + sizeof(struct FDD_InfoServedNRCell_Information_ExtIEs), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_FDD_InfoServedNRCell_Information_ExtIEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs = { + "FDD-InfoServedNRCell-Information-ExtIEs", + "FDD-InfoServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373, + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[0]), /* 1 */ + asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373, /* Same as above */ + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373, + 3, /* Elements count */ + &asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_380 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_380 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_378, memb_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_379, memb_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_380, + 0, + { 0, &asn_PER_memb_extensionValue_constr_380, memb_extensionValue_constraint_377 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs = { + "FDD-InfoNeighbourServedNRCell-Information-ExtIEs", + "FDD-InfoNeighbourServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377, + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[0]), /* 1 */ + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377, /* Same as above */ + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377, + 3, /* Elements count */ + &asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_384 = { + sizeof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_384 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_382, memb_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_383, memb_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_384, + 0, + { 0, &asn_PER_memb_extensionValue_constr_384, memb_extensionValue_constraint_381 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoServedNRCell_Information_ExtIEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381 = { + sizeof(struct TDD_InfoServedNRCell_Information_ExtIEs), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_TDD_InfoServedNRCell_Information_ExtIEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs = { + "TDD-InfoServedNRCell-Information-ExtIEs", + "TDD-InfoServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381, + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[0]), /* 1 */ + asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381, /* Same as above */ + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381, + 3, /* Elements count */ + &asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_388 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_388 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_386, memb_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_387, memb_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_388, + 0, + { 0, &asn_PER_memb_extensionValue_constr_388, memb_extensionValue_constraint_385 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs = { + "TDD-InfoNeighbourServedNRCell-Information-ExtIEs", + "TDD-InfoNeighbourServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385, + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[0]), /* 1 */ + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385, /* Same as above */ + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385, + 3, /* Elements count */ + &asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_392 = { + sizeof(struct NRNeighbour_Information_ExtIEs__extensionValue), + offsetof(struct NRNeighbour_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRNeighbour_Information_ExtIEs__extensionValue, present), + sizeof(((struct NRNeighbour_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_392 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRNeighbour_Information_ExtIEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_390, memb_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_391, memb_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_392, + 0, + { 0, &asn_PER_memb_extensionValue_constr_392, memb_extensionValue_constraint_389 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRNeighbour_Information_ExtIEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRNeighbour_Information_ExtIEs_specs_389 = { + sizeof(struct NRNeighbour_Information_ExtIEs), + offsetof(struct NRNeighbour_Information_ExtIEs, _asn_ctx), + asn_MAP_NRNeighbour_Information_ExtIEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information_ExtIEs = { + "NRNeighbour-Information-ExtIEs", + "NRNeighbour-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRNeighbour_Information_ExtIEs_tags_389, + sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389) + /sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[0]), /* 1 */ + asn_DEF_NRNeighbour_Information_ExtIEs_tags_389, /* Same as above */ + sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389) + /sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRNeighbour_Information_ExtIEs_389, + 3, /* Elements count */ + &asn_SPC_NRNeighbour_Information_ExtIEs_specs_389 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_396 = { + sizeof(struct Limited_list_ExtIEs__extensionValue), + offsetof(struct Limited_list_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Limited_list_ExtIEs__extensionValue, present), + sizeof(((struct Limited_list_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_396 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Limited_list_ExtIEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_394, memb_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_395, memb_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_396, + 0, + { 0, &asn_PER_memb_extensionValue_constr_396, memb_extensionValue_constraint_393 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Limited_list_ExtIEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Limited_list_ExtIEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Limited_list_ExtIEs_specs_393 = { + sizeof(struct Limited_list_ExtIEs), + offsetof(struct Limited_list_ExtIEs, _asn_ctx), + asn_MAP_Limited_list_ExtIEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Limited_list_ExtIEs = { + "Limited-list-ExtIEs", + "Limited-list-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Limited_list_ExtIEs_tags_393, + sizeof(asn_DEF_Limited_list_ExtIEs_tags_393) + /sizeof(asn_DEF_Limited_list_ExtIEs_tags_393[0]), /* 1 */ + asn_DEF_Limited_list_ExtIEs_tags_393, /* Same as above */ + sizeof(asn_DEF_Limited_list_ExtIEs_tags_393) + /sizeof(asn_DEF_Limited_list_ExtIEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Limited_list_ExtIEs_393, + 3, /* Elements count */ + &asn_SPC_Limited_list_ExtIEs_specs_393 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_400 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue, present), + sizeof(((struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_400 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_398, memb_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_399, memb_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_400, + 0, + { 0, &asn_PER_memb_extensionValue_constr_400, memb_extensionValue_constraint_397 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, _asn_ctx), + asn_MAP_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs = { + "ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs", + "ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397, + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397, + 3, /* Elements count */ + &asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_404 = { + sizeof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCellsToModify_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_404 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_402, memb_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_403, memb_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_404, + 0, + { 0, &asn_PER_memb_extensionValue_constr_404, memb_extensionValue_constraint_401 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToModify_Item_ExtIEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401 = { + sizeof(struct ServedNRCellsToModify_Item_ExtIEs), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCellsToModify_Item_ExtIEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs = { + "ServedNRCellsToModify-Item-ExtIEs", + "ServedNRCellsToModify-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401, + sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[0]), /* 1 */ + asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401, + 3, /* Elements count */ + &asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_408 = { + sizeof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_408 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_406, memb_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_407, memb_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_408, + 0, + { 0, &asn_PER_memb_extensionValue_constr_408, memb_extensionValue_constraint_405 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToActivate_Item_ExtIEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405 = { + sizeof(struct ServedNRCellsToActivate_Item_ExtIEs), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCellsToActivate_Item_ExtIEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs = { + "ServedNRCellsToActivate-Item-ExtIEs", + "ServedNRCellsToActivate-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405, + sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405, + 3, /* Elements count */ + &asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_412 = { + sizeof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue), + offsetof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ActivatedNRCellList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_412 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_ExtIEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_410, memb_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_411, memb_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_412, + 0, + { 0, &asn_PER_memb_extensionValue_constr_412, memb_extensionValue_constraint_409 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedNRCellList_Item_ExtIEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409 = { + sizeof(struct ActivatedNRCellList_Item_ExtIEs), + offsetof(struct ActivatedNRCellList_Item_ExtIEs, _asn_ctx), + asn_MAP_ActivatedNRCellList_Item_ExtIEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item_ExtIEs = { + "ActivatedNRCellList-Item-ExtIEs", + "ActivatedNRCellList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409, + sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedNRCellList_Item_ExtIEs_409, + 3, /* Elements count */ + &asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_416 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_416 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_414, memb_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_415, memb_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_416, + 0, + { 0, &asn_PER_memb_extensionValue_constr_416, memb_extensionValue_constraint_413 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_ItemExtIEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemExtIEs), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_ItemExtIEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs = { + "E-RABs-DataForwardingAddress-ItemExtIEs", + "E-RABs-DataForwardingAddress-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_420 = { + sizeof(struct ABSInformationFDD_ExtIEs__extensionValue), + offsetof(struct ABSInformationFDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABSInformationFDD_ExtIEs__extensionValue, present), + sizeof(((struct ABSInformationFDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_420 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationFDD_ExtIEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_418, memb_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_419, memb_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_420, + 0, + { 0, &asn_PER_memb_extensionValue_constr_420, memb_extensionValue_constraint_417 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABSInformationFDD_ExtIEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationFDD_ExtIEs_tag2el_417[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_ExtIEs_specs_417 = { + sizeof(struct ABSInformationFDD_ExtIEs), + offsetof(struct ABSInformationFDD_ExtIEs, _asn_ctx), + asn_MAP_ABSInformationFDD_ExtIEs_tag2el_417, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD_ExtIEs = { + "ABSInformationFDD-ExtIEs", + "ABSInformationFDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationFDD_ExtIEs_tags_417, + sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417) + /sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417[0]), /* 1 */ + asn_DEF_ABSInformationFDD_ExtIEs_tags_417, /* Same as above */ + sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417) + /sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationFDD_ExtIEs_417, + 3, /* Elements count */ + &asn_SPC_ABSInformationFDD_ExtIEs_specs_417 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_424 = { + sizeof(struct ABSInformationTDD_ExtIEs__extensionValue), + offsetof(struct ABSInformationTDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABSInformationTDD_ExtIEs__extensionValue, present), + sizeof(((struct ABSInformationTDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_424 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationTDD_ExtIEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_422, memb_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_423, memb_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_424, + 0, + { 0, &asn_PER_memb_extensionValue_constr_424, memb_extensionValue_constraint_421 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABSInformationTDD_ExtIEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationTDD_ExtIEs_tag2el_421[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_ExtIEs_specs_421 = { + sizeof(struct ABSInformationTDD_ExtIEs), + offsetof(struct ABSInformationTDD_ExtIEs, _asn_ctx), + asn_MAP_ABSInformationTDD_ExtIEs_tag2el_421, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD_ExtIEs = { + "ABSInformationTDD-ExtIEs", + "ABSInformationTDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationTDD_ExtIEs_tags_421, + sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421) + /sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421[0]), /* 1 */ + asn_DEF_ABSInformationTDD_ExtIEs_tags_421, /* Same as above */ + sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421) + /sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationTDD_ExtIEs_421, + 3, /* Elements count */ + &asn_SPC_ABSInformationTDD_ExtIEs_specs_421 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_428 = { + sizeof(struct ABS_Status_ExtIEs__extensionValue), + offsetof(struct ABS_Status_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABS_Status_ExtIEs__extensionValue, present), + sizeof(((struct ABS_Status_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_428 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABS_Status_ExtIEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_426, memb_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_427, memb_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_428, + 0, + { 0, &asn_PER_memb_extensionValue_constr_428, memb_extensionValue_constraint_425 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABS_Status_ExtIEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABS_Status_ExtIEs_tag2el_425[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_ExtIEs_specs_425 = { + sizeof(struct ABS_Status_ExtIEs), + offsetof(struct ABS_Status_ExtIEs, _asn_ctx), + asn_MAP_ABS_Status_ExtIEs_tag2el_425, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABS_Status_ExtIEs = { + "ABS-Status-ExtIEs", + "ABS-Status-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABS_Status_ExtIEs_tags_425, + sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425) + /sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425[0]), /* 1 */ + asn_DEF_ABS_Status_ExtIEs_tags_425, /* Same as above */ + sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425) + /sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABS_Status_ExtIEs_425, + 3, /* Elements count */ + &asn_SPC_ABS_Status_ExtIEs_specs_425 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_432 = { + sizeof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_432 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_430, memb_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_431, memb_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_432, + 0, + { 0, &asn_PER_memb_extensionValue_constr_432, memb_extensionValue_constraint_429 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframe_Info_ExtIEs_tag2el_429[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429 = { + sizeof(struct AdditionalSpecialSubframe_Info_ExtIEs), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, _asn_ctx), + asn_MAP_AdditionalSpecialSubframe_Info_ExtIEs_tag2el_429, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs = { + "AdditionalSpecialSubframe-Info-ExtIEs", + "AdditionalSpecialSubframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429, + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429, + 3, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_436 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue, present), + sizeof(((struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_436 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_434, memb_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_435, memb_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_436, + 0, + { 0, &asn_PER_memb_extensionValue_constr_436, memb_extensionValue_constraint_433 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframeExtension_Info_ExtIEs_tag2el_433[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, _asn_ctx), + asn_MAP_AdditionalSpecialSubframeExtension_Info_ExtIEs_tag2el_433, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs = { + "AdditionalSpecialSubframeExtension-Info-ExtIEs", + "AdditionalSpecialSubframeExtension-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433, + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433, + 3, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_440 = { + sizeof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue), + offsetof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue, present), + sizeof(((struct AllocationAndRetentionPriority_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_440 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_ExtIEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_438, memb_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_439, memb_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_440, + 0, + { 0, &asn_PER_memb_extensionValue_constr_440, memb_extensionValue_constraint_437 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AllocationAndRetentionPriority_ExtIEs_tag2el_437[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437 = { + sizeof(struct AllocationAndRetentionPriority_ExtIEs), + offsetof(struct AllocationAndRetentionPriority_ExtIEs, _asn_ctx), + asn_MAP_AllocationAndRetentionPriority_ExtIEs_tag2el_437, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority_ExtIEs = { + "AllocationAndRetentionPriority-ExtIEs", + "AllocationAndRetentionPriority-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437, + sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437) + /sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[0]), /* 1 */ + asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437, /* Same as above */ + sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437) + /sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AllocationAndRetentionPriority_ExtIEs_437, + 3, /* Elements count */ + &asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_444 = { + sizeof(struct AS_SecurityInformation_ExtIEs__extensionValue), + offsetof(struct AS_SecurityInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AS_SecurityInformation_ExtIEs__extensionValue, present), + sizeof(((struct AS_SecurityInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_444 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AS_SecurityInformation_ExtIEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_442, memb_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_443, memb_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_444, + 0, + { 0, &asn_PER_memb_extensionValue_constr_444, memb_extensionValue_constraint_441 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AS_SecurityInformation_ExtIEs_tag2el_441[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_ExtIEs_specs_441 = { + sizeof(struct AS_SecurityInformation_ExtIEs), + offsetof(struct AS_SecurityInformation_ExtIEs, _asn_ctx), + asn_MAP_AS_SecurityInformation_ExtIEs_tag2el_441, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation_ExtIEs = { + "AS-SecurityInformation-ExtIEs", + "AS-SecurityInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AS_SecurityInformation_ExtIEs_tags_441, + sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441) + /sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[0]), /* 1 */ + asn_DEF_AS_SecurityInformation_ExtIEs_tags_441, /* Same as above */ + sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441) + /sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AS_SecurityInformation_ExtIEs_441, + 3, /* Elements count */ + &asn_SPC_AS_SecurityInformation_ExtIEs_specs_441 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_448 = { + sizeof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_448 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_446, memb_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_447, memb_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_448, + 0, + { 0, &asn_PER_memb_extensionValue_constr_448, memb_extensionValue_constraint_445 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BluetoothMeasurementConfiguration_ExtIEs_tag2el_445[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445 = { + sizeof(struct BluetoothMeasurementConfiguration_ExtIEs), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, _asn_ctx), + asn_MAP_BluetoothMeasurementConfiguration_ExtIEs_tag2el_445, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs = { + "BluetoothMeasurementConfiguration-ExtIEs", + "BluetoothMeasurementConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445, + sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[0]), /* 1 */ + asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445, + 3, /* Elements count */ + &asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_452 = { + sizeof(struct CellBasedMDT_ExtIEs__extensionValue), + offsetof(struct CellBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct CellBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_452 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellBasedMDT_ExtIEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_450, memb_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_451, memb_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_452, + 0, + { 0, &asn_PER_memb_extensionValue_constr_452, memb_extensionValue_constraint_449 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellBasedMDT_ExtIEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedMDT_ExtIEs_tag2el_449[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_ExtIEs_specs_449 = { + sizeof(struct CellBasedMDT_ExtIEs), + offsetof(struct CellBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_CellBasedMDT_ExtIEs_tag2el_449, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedMDT_ExtIEs = { + "CellBasedMDT-ExtIEs", + "CellBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedMDT_ExtIEs_tags_449, + sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449) + /sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449[0]), /* 1 */ + asn_DEF_CellBasedMDT_ExtIEs_tags_449, /* Same as above */ + sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449) + /sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedMDT_ExtIEs_449, + 3, /* Elements count */ + &asn_SPC_CellBasedMDT_ExtIEs_specs_449 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_456 = { + sizeof(struct CellBasedQMC_ExtIEs__extensionValue), + offsetof(struct CellBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct CellBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_456 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_454, memb_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_455, memb_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_456, + 0, + { 0, &asn_PER_memb_extensionValue_constr_456, memb_extensionValue_constraint_453 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellBasedQMC_ExtIEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedQMC_ExtIEs_tag2el_453[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_453 = { + sizeof(struct CellBasedQMC_ExtIEs), + offsetof(struct CellBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_CellBasedQMC_ExtIEs_tag2el_453, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs = { + "CellBasedQMC-ExtIEs", + "CellBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedQMC_ExtIEs_tags_453, + sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453) + /sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453[0]), /* 1 */ + asn_DEF_CellBasedQMC_ExtIEs_tags_453, /* Same as above */ + sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453) + /sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedQMC_ExtIEs_453, + 3, /* Elements count */ + &asn_SPC_CellBasedQMC_ExtIEs_specs_453 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_460 = { + sizeof(struct CellReplacingInfo_ExtIEs__extensionValue), + offsetof(struct CellReplacingInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellReplacingInfo_ExtIEs__extensionValue, present), + sizeof(((struct CellReplacingInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_460 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellReplacingInfo_ExtIEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_458, memb_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_459, memb_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_460, + 0, + { 0, &asn_PER_memb_extensionValue_constr_460, memb_extensionValue_constraint_457 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellReplacingInfo_ExtIEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellReplacingInfo_ExtIEs_tag2el_457[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_ExtIEs_specs_457 = { + sizeof(struct CellReplacingInfo_ExtIEs), + offsetof(struct CellReplacingInfo_ExtIEs, _asn_ctx), + asn_MAP_CellReplacingInfo_ExtIEs_tag2el_457, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo_ExtIEs = { + "CellReplacingInfo-ExtIEs", + "CellReplacingInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellReplacingInfo_ExtIEs_tags_457, + sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457) + /sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457[0]), /* 1 */ + asn_DEF_CellReplacingInfo_ExtIEs_tags_457, /* Same as above */ + sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457) + /sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellReplacingInfo_ExtIEs_457, + 3, /* Elements count */ + &asn_SPC_CellReplacingInfo_ExtIEs_specs_457 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_464 = { + sizeof(struct CellType_ExtIEs__extensionValue), + offsetof(struct CellType_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellType_ExtIEs__extensionValue, present), + sizeof(((struct CellType_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_464 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellType_ExtIEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_462, memb_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_463, memb_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_464, + 0, + { 0, &asn_PER_memb_extensionValue_constr_464, memb_extensionValue_constraint_461 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellType_ExtIEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellType_ExtIEs_tag2el_461[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellType_ExtIEs_specs_461 = { + sizeof(struct CellType_ExtIEs), + offsetof(struct CellType_ExtIEs, _asn_ctx), + asn_MAP_CellType_ExtIEs_tag2el_461, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellType_ExtIEs = { + "CellType-ExtIEs", + "CellType-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellType_ExtIEs_tags_461, + sizeof(asn_DEF_CellType_ExtIEs_tags_461) + /sizeof(asn_DEF_CellType_ExtIEs_tags_461[0]), /* 1 */ + asn_DEF_CellType_ExtIEs_tags_461, /* Same as above */ + sizeof(asn_DEF_CellType_ExtIEs_tags_461) + /sizeof(asn_DEF_CellType_ExtIEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellType_ExtIEs_461, + 3, /* Elements count */ + &asn_SPC_CellType_ExtIEs_specs_461 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_468 = { + sizeof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue), + offsetof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue, present), + sizeof(((struct CNTypeRestrictionsItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_468 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_ExtIEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_466, memb_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_467, memb_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_468, + 0, + { 0, &asn_PER_memb_extensionValue_constr_468, memb_extensionValue_constraint_465 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CNTypeRestrictionsItem_ExtIEs_tag2el_465[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465 = { + sizeof(struct CNTypeRestrictionsItem_ExtIEs), + offsetof(struct CNTypeRestrictionsItem_ExtIEs, _asn_ctx), + asn_MAP_CNTypeRestrictionsItem_ExtIEs_tag2el_465, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem_ExtIEs = { + "CNTypeRestrictionsItem-ExtIEs", + "CNTypeRestrictionsItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465, + sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465) + /sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[0]), /* 1 */ + asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465) + /sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CNTypeRestrictionsItem_ExtIEs_465, + 3, /* Elements count */ + &asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_472 = { + sizeof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue), + offsetof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue, present), + sizeof(((struct CoMPHypothesisSetItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_472 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_ExtIEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_470, memb_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_471, memb_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_472, + 0, + { 0, &asn_PER_memb_extensionValue_constr_472, memb_extensionValue_constraint_469 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPHypothesisSetItem_ExtIEs_tag2el_469[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469 = { + sizeof(struct CoMPHypothesisSetItem_ExtIEs), + offsetof(struct CoMPHypothesisSetItem_ExtIEs, _asn_ctx), + asn_MAP_CoMPHypothesisSetItem_ExtIEs_tag2el_469, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem_ExtIEs = { + "CoMPHypothesisSetItem-ExtIEs", + "CoMPHypothesisSetItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469, + sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469) + /sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[0]), /* 1 */ + asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469) + /sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPHypothesisSetItem_ExtIEs_469, + 3, /* Elements count */ + &asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_476 = { + sizeof(struct CoMPInformation_ExtIEs__extensionValue), + offsetof(struct CoMPInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformation_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_476 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformation_ExtIEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_474, memb_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_475, memb_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_476, + 0, + { 0, &asn_PER_memb_extensionValue_constr_476, memb_extensionValue_constraint_473 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformation_ExtIEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformation_ExtIEs_tag2el_473[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_ExtIEs_specs_473 = { + sizeof(struct CoMPInformation_ExtIEs), + offsetof(struct CoMPInformation_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformation_ExtIEs_tag2el_473, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformation_ExtIEs = { + "CoMPInformation-ExtIEs", + "CoMPInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformation_ExtIEs_tags_473, + sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473) + /sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473[0]), /* 1 */ + asn_DEF_CoMPInformation_ExtIEs_tags_473, /* Same as above */ + sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473) + /sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformation_ExtIEs_473, + 3, /* Elements count */ + &asn_SPC_CoMPInformation_ExtIEs_specs_473 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_480 = { + sizeof(struct CoMPInformationItem_ExtIEs__extensionValue), + offsetof(struct CoMPInformationItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformationItem_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformationItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_480 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_480 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationItem_ExtIEs_477[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_478, memb_id_constraint_477 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_479, memb_criticality_constraint_477 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_480, + 0, + { 0, &asn_PER_memb_extensionValue_constr_480, memb_extensionValue_constraint_477 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationItem_ExtIEs_tags_477[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformationItem_ExtIEs_tag2el_477[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationItem_ExtIEs_specs_477 = { + sizeof(struct CoMPInformationItem_ExtIEs), + offsetof(struct CoMPInformationItem_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformationItem_ExtIEs_tag2el_477, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem_ExtIEs = { + "CoMPInformationItem-ExtIEs", + "CoMPInformationItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformationItem_ExtIEs_tags_477, + sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477) + /sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477[0]), /* 1 */ + asn_DEF_CoMPInformationItem_ExtIEs_tags_477, /* Same as above */ + sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477) + /sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformationItem_ExtIEs_477, + 3, /* Elements count */ + &asn_SPC_CoMPInformationItem_ExtIEs_specs_477 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_484 = { + sizeof(struct CoMPInformationStartTime_ExtIEs__extensionValue), + offsetof(struct CoMPInformationStartTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformationStartTime_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformationStartTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_484 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_484 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_ExtIEs_481[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_482, memb_id_constraint_481 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_483, memb_criticality_constraint_481 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_484, + 0, + { 0, &asn_PER_memb_extensionValue_constr_484, memb_extensionValue_constraint_481 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformationStartTime_ExtIEs_tag2el_481[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481 = { + sizeof(struct CoMPInformationStartTime_ExtIEs), + offsetof(struct CoMPInformationStartTime_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformationStartTime_ExtIEs_tag2el_481, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime_ExtIEs = { + "CoMPInformationStartTime-ExtIEs", + "CoMPInformationStartTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481, + sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481) + /sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[0]), /* 1 */ + asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481, /* Same as above */ + sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481) + /sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformationStartTime_ExtIEs_481, + 3, /* Elements count */ + &asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_488 = { + sizeof(struct CompositeAvailableCapacity_ExtIEs__extensionValue), + offsetof(struct CompositeAvailableCapacity_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompositeAvailableCapacity_ExtIEs__extensionValue, present), + sizeof(((struct CompositeAvailableCapacity_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_488 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_488 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_ExtIEs_485[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_486, memb_id_constraint_485 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_487, memb_criticality_constraint_485 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_488, + 0, + { 0, &asn_PER_memb_extensionValue_constr_488, memb_extensionValue_constraint_485 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacity_ExtIEs_tag2el_485[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485 = { + sizeof(struct CompositeAvailableCapacity_ExtIEs), + offsetof(struct CompositeAvailableCapacity_ExtIEs, _asn_ctx), + asn_MAP_CompositeAvailableCapacity_ExtIEs_tag2el_485, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity_ExtIEs = { + "CompositeAvailableCapacity-ExtIEs", + "CompositeAvailableCapacity-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485, + sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485) + /sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485) + /sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacity_ExtIEs_485, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_492 = { + sizeof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue, present), + sizeof(((struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_492 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_492 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_490, memb_id_constraint_489 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_491, memb_criticality_constraint_489 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_492, + 0, + { 0, &asn_PER_memb_extensionValue_constr_492, memb_extensionValue_constraint_489 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacityGroup_ExtIEs_tag2el_489[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489 = { + sizeof(struct CompositeAvailableCapacityGroup_ExtIEs), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, _asn_ctx), + asn_MAP_CompositeAvailableCapacityGroup_ExtIEs_tag2el_489, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs = { + "CompositeAvailableCapacityGroup-ExtIEs", + "CompositeAvailableCapacityGroup-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489, + sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_496 = { + sizeof(struct COUNTvalue_ExtIEs__extensionValue), + offsetof(struct COUNTvalue_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTvalue_ExtIEs__extensionValue, present), + sizeof(((struct COUNTvalue_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_496 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_496 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTvalue_ExtIEs_493[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_494, memb_id_constraint_493 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_495, memb_criticality_constraint_493 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_496, + 0, + { 0, &asn_PER_memb_extensionValue_constr_496, memb_extensionValue_constraint_493 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTvalue_ExtIEs_tags_493[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvalue_ExtIEs_tag2el_493[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_ExtIEs_specs_493 = { + sizeof(struct COUNTvalue_ExtIEs), + offsetof(struct COUNTvalue_ExtIEs, _asn_ctx), + asn_MAP_COUNTvalue_ExtIEs_tag2el_493, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvalue_ExtIEs = { + "COUNTvalue-ExtIEs", + "COUNTvalue-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvalue_ExtIEs_tags_493, + sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493) + /sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493[0]), /* 1 */ + asn_DEF_COUNTvalue_ExtIEs_tags_493, /* Same as above */ + sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493) + /sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvalue_ExtIEs_493, + 3, /* Elements count */ + &asn_SPC_COUNTvalue_ExtIEs_specs_493 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_500 = { + sizeof(struct COUNTValueExtended_ExtIEs__extensionValue), + offsetof(struct COUNTValueExtended_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTValueExtended_ExtIEs__extensionValue, present), + sizeof(((struct COUNTValueExtended_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_500 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_500 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTValueExtended_ExtIEs_497[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_498, memb_id_constraint_497 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_499, memb_criticality_constraint_497 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_500, + 0, + { 0, &asn_PER_memb_extensionValue_constr_500, memb_extensionValue_constraint_497 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTValueExtended_ExtIEs_tags_497[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTValueExtended_ExtIEs_tag2el_497[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_ExtIEs_specs_497 = { + sizeof(struct COUNTValueExtended_ExtIEs), + offsetof(struct COUNTValueExtended_ExtIEs, _asn_ctx), + asn_MAP_COUNTValueExtended_ExtIEs_tag2el_497, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended_ExtIEs = { + "COUNTValueExtended-ExtIEs", + "COUNTValueExtended-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTValueExtended_ExtIEs_tags_497, + sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497) + /sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497[0]), /* 1 */ + asn_DEF_COUNTValueExtended_ExtIEs_tags_497, /* Same as above */ + sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497) + /sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTValueExtended_ExtIEs_497, + 3, /* Elements count */ + &asn_SPC_COUNTValueExtended_ExtIEs_specs_497 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_504 = { + sizeof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, present), + sizeof(((struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_504 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_504 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_502, memb_id_constraint_501 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_503, memb_criticality_constraint_501 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_504, + 0, + { 0, &asn_PER_memb_extensionValue_constr_504, memb_extensionValue_constraint_501 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_501[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501 = { + sizeof(struct COUNTvaluePDCP_SNlength18_ExtIEs), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, _asn_ctx), + asn_MAP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_501, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs = { + "COUNTvaluePDCP-SNlength18-ExtIEs", + "COUNTvaluePDCP-SNlength18-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501, + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[0]), /* 1 */ + asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501, /* Same as above */ + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501, + 3, /* Elements count */ + &asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_508 = { + sizeof(struct CriticalityDiagnostics_ExtIEs__extensionValue), + offsetof(struct CriticalityDiagnostics_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CriticalityDiagnostics_ExtIEs__extensionValue, present), + sizeof(((struct CriticalityDiagnostics_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_508 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_508 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_505[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_506, memb_id_constraint_505 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_507, memb_criticality_constraint_505 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_508, + 0, + { 0, &asn_PER_memb_extensionValue_constr_508, memb_extensionValue_constraint_505 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_ExtIEs_tag2el_505[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505 = { + sizeof(struct CriticalityDiagnostics_ExtIEs), + offsetof(struct CriticalityDiagnostics_ExtIEs, _asn_ctx), + asn_MAP_CriticalityDiagnostics_ExtIEs_tag2el_505, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs = { + "CriticalityDiagnostics-ExtIEs", + "CriticalityDiagnostics-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505, + sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505) + /sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505) + /sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_ExtIEs_505, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_512 = { + sizeof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue, present), + sizeof(((struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_512 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_512 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_510, memb_id_constraint_509 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_511, memb_criticality_constraint_509 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_512, + 0, + { 0, &asn_PER_memb_extensionValue_constr_512, memb_extensionValue_constraint_509 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_List_ExtIEs_tag2el_509[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509 = { + sizeof(struct CriticalityDiagnostics_IE_List_ExtIEs), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, _asn_ctx), + asn_MAP_CriticalityDiagnostics_IE_List_ExtIEs_tag2el_509, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs = { + "CriticalityDiagnostics-IE-List-ExtIEs", + "CriticalityDiagnostics-IE-List-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_516 = { + sizeof(struct CSIReportList_ExtIEs__extensionValue), + offsetof(struct CSIReportList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportList_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportList_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_516 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_516 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportList_ExtIEs_513[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_514, memb_id_constraint_513 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_515, memb_criticality_constraint_513 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_516, + 0, + { 0, &asn_PER_memb_extensionValue_constr_516, memb_extensionValue_constraint_513 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportList_ExtIEs_tags_513[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportList_ExtIEs_tag2el_513[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportList_ExtIEs_specs_513 = { + sizeof(struct CSIReportList_ExtIEs), + offsetof(struct CSIReportList_ExtIEs, _asn_ctx), + asn_MAP_CSIReportList_ExtIEs_tag2el_513, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportList_ExtIEs = { + "CSIReportList-ExtIEs", + "CSIReportList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportList_ExtIEs_tags_513, + sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513) + /sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513[0]), /* 1 */ + asn_DEF_CSIReportList_ExtIEs_tags_513, /* Same as above */ + sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513) + /sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportList_ExtIEs_513, + 3, /* Elements count */ + &asn_SPC_CSIReportList_ExtIEs_specs_513 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_520 = { + sizeof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue), + offsetof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportPerCSIProcess_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_520 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_520 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_ExtIEs_517[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_518, memb_id_constraint_517 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_519, memb_criticality_constraint_517 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_520, + 0, + { 0, &asn_PER_memb_extensionValue_constr_520, memb_extensionValue_constraint_517 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportPerCSIProcess_ExtIEs_tag2el_517[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517 = { + sizeof(struct CSIReportPerCSIProcess_ExtIEs), + offsetof(struct CSIReportPerCSIProcess_ExtIEs, _asn_ctx), + asn_MAP_CSIReportPerCSIProcess_ExtIEs_tag2el_517, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess_ExtIEs = { + "CSIReportPerCSIProcess-ExtIEs", + "CSIReportPerCSIProcess-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517, + sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517) + /sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517) + /sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportPerCSIProcess_ExtIEs_517, + 3, /* Elements count */ + &asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_524 = { + sizeof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_524 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_524 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_522, memb_id_constraint_521 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_523, memb_criticality_constraint_521 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_524, + 0, + { 0, &asn_PER_memb_extensionValue_constr_524, memb_extensionValue_constraint_521 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportPerCSIProcessItem_ExtIEs_tag2el_521[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521 = { + sizeof(struct CSIReportPerCSIProcessItem_ExtIEs), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, _asn_ctx), + asn_MAP_CSIReportPerCSIProcessItem_ExtIEs_tag2el_521, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs = { + "CSIReportPerCSIProcessItem-ExtIEs", + "CSIReportPerCSIProcessItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521, + sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521, + 3, /* Elements count */ + &asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_528 = { + sizeof(struct DataTrafficResourceIndication_ExtIEs__extensionValue), + offsetof(struct DataTrafficResourceIndication_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DataTrafficResourceIndication_ExtIEs__extensionValue, present), + sizeof(((struct DataTrafficResourceIndication_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_528 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_528 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_ExtIEs_525[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_526, memb_id_constraint_525 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_527, memb_criticality_constraint_525 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_528, + 0, + { 0, &asn_PER_memb_extensionValue_constr_528, memb_extensionValue_constraint_525 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataTrafficResourceIndication_ExtIEs_tag2el_525[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525 = { + sizeof(struct DataTrafficResourceIndication_ExtIEs), + offsetof(struct DataTrafficResourceIndication_ExtIEs, _asn_ctx), + asn_MAP_DataTrafficResourceIndication_ExtIEs_tag2el_525, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication_ExtIEs = { + "DataTrafficResourceIndication-ExtIEs", + "DataTrafficResourceIndication-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525, + sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525) + /sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[0]), /* 1 */ + asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525, /* Same as above */ + sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525) + /sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataTrafficResourceIndication_ExtIEs_525, + 3, /* Elements count */ + &asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_532 = { + sizeof(struct DeliveryStatus_ExtIEs__extensionValue), + offsetof(struct DeliveryStatus_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DeliveryStatus_ExtIEs__extensionValue, present), + sizeof(((struct DeliveryStatus_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_532 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_532 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DeliveryStatus_ExtIEs_529[] = { + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_530, memb_id_constraint_529 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_531, memb_criticality_constraint_529 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_532, + 0, + { 0, &asn_PER_memb_extensionValue_constr_532, memb_extensionValue_constraint_529 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DeliveryStatus_ExtIEs_tags_529[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DeliveryStatus_ExtIEs_tag2el_529[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_ExtIEs_specs_529 = { + sizeof(struct DeliveryStatus_ExtIEs), + offsetof(struct DeliveryStatus_ExtIEs, _asn_ctx), + asn_MAP_DeliveryStatus_ExtIEs_tag2el_529, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DeliveryStatus_ExtIEs = { + "DeliveryStatus-ExtIEs", + "DeliveryStatus-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DeliveryStatus_ExtIEs_tags_529, + sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529) + /sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529[0]), /* 1 */ + asn_DEF_DeliveryStatus_ExtIEs_tags_529, /* Same as above */ + sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529) + /sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DeliveryStatus_ExtIEs_529, + 3, /* Elements count */ + &asn_SPC_DeliveryStatus_ExtIEs_specs_529 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_536 = { + sizeof(struct DynamicNAICSInformation_ExtIEs__extensionValue), + offsetof(struct DynamicNAICSInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DynamicNAICSInformation_ExtIEs__extensionValue, present), + sizeof(((struct DynamicNAICSInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_536 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_536 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_ExtIEs_533[] = { + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_534, memb_id_constraint_533 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_535, memb_criticality_constraint_533 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_536, + 0, + { 0, &asn_PER_memb_extensionValue_constr_536, memb_extensionValue_constraint_533 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicNAICSInformation_ExtIEs_tag2el_533[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533 = { + sizeof(struct DynamicNAICSInformation_ExtIEs), + offsetof(struct DynamicNAICSInformation_ExtIEs, _asn_ctx), + asn_MAP_DynamicNAICSInformation_ExtIEs_tag2el_533, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation_ExtIEs = { + "DynamicNAICSInformation-ExtIEs", + "DynamicNAICSInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533, + sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533) + /sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[0]), /* 1 */ + asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533, /* Same as above */ + sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533) + /sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DynamicNAICSInformation_ExtIEs_533, + 3, /* Elements count */ + &asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_540 = { + sizeof(struct ECGI_ExtIEs__extensionValue), + offsetof(struct ECGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ECGI_ExtIEs__extensionValue, present), + sizeof(((struct ECGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_540 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_540 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ECGI_ExtIEs_537[] = { + { ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_538, memb_id_constraint_537 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_539, memb_criticality_constraint_537 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_540, + 0, + { 0, &asn_PER_memb_extensionValue_constr_540, memb_extensionValue_constraint_537 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ECGI_ExtIEs_tags_537[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ECGI_ExtIEs_tag2el_537[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ECGI_ExtIEs_specs_537 = { + sizeof(struct ECGI_ExtIEs), + offsetof(struct ECGI_ExtIEs, _asn_ctx), + asn_MAP_ECGI_ExtIEs_tag2el_537, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ECGI_ExtIEs = { + "ECGI-ExtIEs", + "ECGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ECGI_ExtIEs_tags_537, + sizeof(asn_DEF_ECGI_ExtIEs_tags_537) + /sizeof(asn_DEF_ECGI_ExtIEs_tags_537[0]), /* 1 */ + asn_DEF_ECGI_ExtIEs_tags_537, /* Same as above */ + sizeof(asn_DEF_ECGI_ExtIEs_tags_537) + /sizeof(asn_DEF_ECGI_ExtIEs_tags_537[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ECGI_ExtIEs_537, + 3, /* Elements count */ + &asn_SPC_ECGI_ExtIEs_specs_537 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_544 = { + sizeof(struct EnhancedRNTP_ExtIEs__extensionValue), + offsetof(struct EnhancedRNTP_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct EnhancedRNTP_ExtIEs__extensionValue, present), + sizeof(((struct EnhancedRNTP_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_544 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_544 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EnhancedRNTP_ExtIEs_541[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_542, memb_id_constraint_541 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_543, memb_criticality_constraint_541 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_544, + 0, + { 0, &asn_PER_memb_extensionValue_constr_544, memb_extensionValue_constraint_541 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTP_ExtIEs_tags_541[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTP_ExtIEs_tag2el_541[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_ExtIEs_specs_541 = { + sizeof(struct EnhancedRNTP_ExtIEs), + offsetof(struct EnhancedRNTP_ExtIEs, _asn_ctx), + asn_MAP_EnhancedRNTP_ExtIEs_tag2el_541, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP_ExtIEs = { + "EnhancedRNTP-ExtIEs", + "EnhancedRNTP-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTP_ExtIEs_tags_541, + sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541) + /sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541[0]), /* 1 */ + asn_DEF_EnhancedRNTP_ExtIEs_tags_541, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541) + /sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTP_ExtIEs_541, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTP_ExtIEs_specs_541 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_548 = { + sizeof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue), + offsetof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue, present), + sizeof(((struct EnhancedRNTPStartTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_548 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_548 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_ExtIEs_545[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_546, memb_id_constraint_545 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_547, memb_criticality_constraint_545 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_548, + 0, + { 0, &asn_PER_memb_extensionValue_constr_548, memb_extensionValue_constraint_545 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTPStartTime_ExtIEs_tag2el_545[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545 = { + sizeof(struct EnhancedRNTPStartTime_ExtIEs), + offsetof(struct EnhancedRNTPStartTime_ExtIEs, _asn_ctx), + asn_MAP_EnhancedRNTPStartTime_ExtIEs_tag2el_545, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime_ExtIEs = { + "EnhancedRNTPStartTime-ExtIEs", + "EnhancedRNTPStartTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545, + sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545) + /sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[0]), /* 1 */ + asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545) + /sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTPStartTime_ExtIEs_545, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_552 = { + sizeof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue), + offsetof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue, _asn_ctx), + offsetof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue, present), + sizeof(((struct EN_DC_ResourceConfigurationExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_552 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_552 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfigurationExtIEs_549[] = { + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_550, memb_id_constraint_549 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_551, memb_criticality_constraint_549 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_552, + 0, + { 0, &asn_PER_memb_extensionValue_constr_552, memb_extensionValue_constraint_549 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EN_DC_ResourceConfigurationExtIEs_tag2el_549[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549 = { + sizeof(struct EN_DC_ResourceConfigurationExtIEs), + offsetof(struct EN_DC_ResourceConfigurationExtIEs, _asn_ctx), + asn_MAP_EN_DC_ResourceConfigurationExtIEs_tag2el_549, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfigurationExtIEs = { + "EN-DC-ResourceConfigurationExtIEs", + "EN-DC-ResourceConfigurationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549, + sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549) + /sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[0]), /* 1 */ + asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549, /* Same as above */ + sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549) + /sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EN_DC_ResourceConfigurationExtIEs_549, + 3, /* Elements count */ + &asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_556 = { + sizeof(struct ERABActivityNotifyItem_ExtIEs__extensionValue), + offsetof(struct ERABActivityNotifyItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ERABActivityNotifyItem_ExtIEs__extensionValue, present), + sizeof(((struct ERABActivityNotifyItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_556 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_556 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_ExtIEs_553[] = { + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_554, memb_id_constraint_553 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_555, memb_criticality_constraint_553 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_556, + 0, + { 0, &asn_PER_memb_extensionValue_constr_556, memb_extensionValue_constraint_553 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ERABActivityNotifyItem_ExtIEs_tag2el_553[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553 = { + sizeof(struct ERABActivityNotifyItem_ExtIEs), + offsetof(struct ERABActivityNotifyItem_ExtIEs, _asn_ctx), + asn_MAP_ERABActivityNotifyItem_ExtIEs_tag2el_553, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem_ExtIEs = { + "ERABActivityNotifyItem-ExtIEs", + "ERABActivityNotifyItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553, + sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553) + /sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553) + /sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ERABActivityNotifyItem_ExtIEs_553, + 3, /* Elements count */ + &asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_560[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, choice.Packet_LossRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Packet_LossRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Packet-LossRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_560[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* Packet-LossRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_560 = { + sizeof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, present), + sizeof(((struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_560, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_560 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_560, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_560 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_558, memb_id_constraint_557 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RAB_Level_QoS_Parameters_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_559, memb_criticality_constraint_557 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_560, + select_E_RAB_Level_QoS_Parameters_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_560, memb_extensionValue_constraint_557 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Level_QoS_Parameters_ExtIEs_tag2el_557[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557 = { + sizeof(struct E_RAB_Level_QoS_Parameters_ExtIEs), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, _asn_ctx), + asn_MAP_E_RAB_Level_QoS_Parameters_ExtIEs_tag2el_557, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs = { + "E-RAB-Level-QoS-Parameters-ExtIEs", + "E-RAB-Level-QoS-Parameters-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557, + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[0]), /* 1 */ + asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557, /* Same as above */ + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557, + 3, /* Elements count */ + &asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_564 = { + sizeof(struct E_RAB_Item_ExtIEs__extensionValue), + offsetof(struct E_RAB_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RAB_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RAB_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_564 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_564 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_Item_ExtIEs_561[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_562, memb_id_constraint_561 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_563, memb_criticality_constraint_561 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_564, + 0, + { 0, &asn_PER_memb_extensionValue_constr_564, memb_extensionValue_constraint_561 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_Item_ExtIEs_tags_561[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Item_ExtIEs_tag2el_561[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_ExtIEs_specs_561 = { + sizeof(struct E_RAB_Item_ExtIEs), + offsetof(struct E_RAB_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RAB_Item_ExtIEs_tag2el_561, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Item_ExtIEs = { + "E-RAB-Item-ExtIEs", + "E-RAB-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Item_ExtIEs_tags_561, + sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561) + /sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561[0]), /* 1 */ + asn_DEF_E_RAB_Item_ExtIEs_tags_561, /* Same as above */ + sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561) + /sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Item_ExtIEs_561, + 3, /* Elements count */ + &asn_SPC_E_RAB_Item_ExtIEs_specs_561 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_568 = { + sizeof(struct E_RABUsageReport_Item_ExtIEs__extensionValue), + offsetof(struct E_RABUsageReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABUsageReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RABUsageReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_568 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_568 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_ExtIEs_565[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_566, memb_id_constraint_565 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_567, memb_criticality_constraint_565 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_568, + 0, + { 0, &asn_PER_memb_extensionValue_constr_568, memb_extensionValue_constraint_565 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_Item_ExtIEs_tag2el_565[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565 = { + sizeof(struct E_RABUsageReport_Item_ExtIEs), + offsetof(struct E_RABUsageReport_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RABUsageReport_Item_ExtIEs_tag2el_565, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item_ExtIEs = { + "E-RABUsageReport-Item-ExtIEs", + "E-RABUsageReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565, + sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565) + /sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[0]), /* 1 */ + asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565) + /sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_Item_ExtIEs_565, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_572 = { + sizeof(struct ExpectedUEBehaviour_ExtIEs__extensionValue), + offsetof(struct ExpectedUEBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExpectedUEBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct ExpectedUEBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_572 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_572 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_ExtIEs_569[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_570, memb_id_constraint_569 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_571, memb_criticality_constraint_569 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_572, + 0, + { 0, &asn_PER_memb_extensionValue_constr_572, memb_extensionValue_constraint_569 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEBehaviour_ExtIEs_tag2el_569[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569 = { + sizeof(struct ExpectedUEBehaviour_ExtIEs), + offsetof(struct ExpectedUEBehaviour_ExtIEs, _asn_ctx), + asn_MAP_ExpectedUEBehaviour_ExtIEs_tag2el_569, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour_ExtIEs = { + "ExpectedUEBehaviour-ExtIEs", + "ExpectedUEBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569, + sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569) + /sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[0]), /* 1 */ + asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569, /* Same as above */ + sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569) + /sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEBehaviour_ExtIEs_569, + 3, /* Elements count */ + &asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_576 = { + sizeof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_576 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_576 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_574, memb_id_constraint_573 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_575, memb_criticality_constraint_573 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_576, + 0, + { 0, &asn_PER_memb_extensionValue_constr_576, memb_extensionValue_constraint_573 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_573[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573 = { + sizeof(struct ExpectedUEActivityBehaviour_ExtIEs), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, _asn_ctx), + asn_MAP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_573, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs = { + "ExpectedUEActivityBehaviour-ExtIEs", + "ExpectedUEActivityBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573, + sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[0]), /* 1 */ + asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573, /* Same as above */ + sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573, + 3, /* Elements count */ + &asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_580 = { + sizeof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue, present), + sizeof(((struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_580 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_580 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_578, memb_id_constraint_577 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_579, memb_criticality_constraint_577 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_580, + 0, + { 0, &asn_PER_memb_extensionValue_constr_580, memb_extensionValue_constraint_577 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExtendedULInterferenceOverloadInfo_ExtIEs_tag2el_577[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577 = { + sizeof(struct ExtendedULInterferenceOverloadInfo_ExtIEs), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, _asn_ctx), + asn_MAP_ExtendedULInterferenceOverloadInfo_ExtIEs_tag2el_577, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs = { + "ExtendedULInterferenceOverloadInfo-ExtIEs", + "ExtendedULInterferenceOverloadInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577, + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[0]), /* 1 */ + asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577, /* Same as above */ + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577, + 3, /* Elements count */ + &asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_584[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.OffsetOfNbiotChannelNumberToEARFCN), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OffsetOfNbiotChannelNumberToEARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.NRS_NSSS_PowerOffset), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRS_NSSS_PowerOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRS-NSSS-PowerOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.NSSS_NumOccasionDifferentPrecoder), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NSSS_NumOccasionDifferentPrecoder, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NSSS-NumOccasionDifferentPrecoder" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_584[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 2 }, /* OffsetOfNbiotChannelNumberToEARFCN */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 1 }, /* NRS-NSSS-PowerOffset */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, -2, 0 } /* NSSS-NumOccasionDifferentPrecoder */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_584 = { + sizeof(struct FDD_Info_ExtIEs__extensionValue), + offsetof(struct FDD_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_Info_ExtIEs__extensionValue, present), + sizeof(((struct FDD_Info_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_584, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_584 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_584, + 4, /* Elements count */ + &asn_SPC_extensionValue_specs_584 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_Info_ExtIEs_581[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_582, memb_id_constraint_581 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_FDD_Info_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_583, memb_criticality_constraint_581 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_584, + select_FDD_Info_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_584, memb_extensionValue_constraint_581 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_Info_ExtIEs_tags_581[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_Info_ExtIEs_tag2el_581[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_ExtIEs_specs_581 = { + sizeof(struct FDD_Info_ExtIEs), + offsetof(struct FDD_Info_ExtIEs, _asn_ctx), + asn_MAP_FDD_Info_ExtIEs_tag2el_581, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_Info_ExtIEs = { + "FDD-Info-ExtIEs", + "FDD-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_Info_ExtIEs_tags_581, + sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581) + /sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581[0]), /* 1 */ + asn_DEF_FDD_Info_ExtIEs_tags_581, /* Same as above */ + sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581) + /sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_Info_ExtIEs_581, + 3, /* Elements count */ + &asn_SPC_FDD_Info_ExtIEs_specs_581 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_588 = { + sizeof(struct ForbiddenTAs_Item_ExtIEs__extensionValue), + offsetof(struct ForbiddenTAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ForbiddenTAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct ForbiddenTAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_588 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_588 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_ExtIEs_585[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_586, memb_id_constraint_585 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_587, memb_criticality_constraint_585 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_588, + 0, + { 0, &asn_PER_memb_extensionValue_constr_588, memb_extensionValue_constraint_585 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenTAs_Item_ExtIEs_tag2el_585[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585 = { + sizeof(struct ForbiddenTAs_Item_ExtIEs), + offsetof(struct ForbiddenTAs_Item_ExtIEs, _asn_ctx), + asn_MAP_ForbiddenTAs_Item_ExtIEs_tag2el_585, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item_ExtIEs = { + "ForbiddenTAs-Item-ExtIEs", + "ForbiddenTAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585, + sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585) + /sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[0]), /* 1 */ + asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585) + /sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenTAs_Item_ExtIEs_585, + 3, /* Elements count */ + &asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_592 = { + sizeof(struct ForbiddenLAs_Item_ExtIEs__extensionValue), + offsetof(struct ForbiddenLAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ForbiddenLAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct ForbiddenLAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_592 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_592 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_ExtIEs_589[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_590, memb_id_constraint_589 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_591, memb_criticality_constraint_589 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_592, + 0, + { 0, &asn_PER_memb_extensionValue_constr_592, memb_extensionValue_constraint_589 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenLAs_Item_ExtIEs_tag2el_589[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589 = { + sizeof(struct ForbiddenLAs_Item_ExtIEs), + offsetof(struct ForbiddenLAs_Item_ExtIEs, _asn_ctx), + asn_MAP_ForbiddenLAs_Item_ExtIEs_tag2el_589, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item_ExtIEs = { + "ForbiddenLAs-Item-ExtIEs", + "ForbiddenLAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589, + sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589) + /sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[0]), /* 1 */ + asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589) + /sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenLAs_Item_ExtIEs_589, + 3, /* Elements count */ + &asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_596 = { + sizeof(struct FreqBandNrItem_ExtIEs__extensionValue), + offsetof(struct FreqBandNrItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FreqBandNrItem_ExtIEs__extensionValue, present), + sizeof(((struct FreqBandNrItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_596 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_596 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FreqBandNrItem_ExtIEs_593[] = { + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_594, memb_id_constraint_593 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_595, memb_criticality_constraint_593 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_596, + 0, + { 0, &asn_PER_memb_extensionValue_constr_596, memb_extensionValue_constraint_593 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_ExtIEs_tags_593[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_ExtIEs_tag2el_593[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_ExtIEs_specs_593 = { + sizeof(struct FreqBandNrItem_ExtIEs), + offsetof(struct FreqBandNrItem_ExtIEs, _asn_ctx), + asn_MAP_FreqBandNrItem_ExtIEs_tag2el_593, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem_ExtIEs = { + "FreqBandNrItem-ExtIEs", + "FreqBandNrItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FreqBandNrItem_ExtIEs_tags_593, + sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593) + /sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593[0]), /* 1 */ + asn_DEF_FreqBandNrItem_ExtIEs_tags_593, /* Same as above */ + sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593) + /sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FreqBandNrItem_ExtIEs_593, + 3, /* Elements count */ + &asn_SPC_FreqBandNrItem_ExtIEs_specs_593 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_600[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, choice.ExtendedBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ExtendedBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_600[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* ExtendedBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_600 = { + sizeof(struct GBR_QosInformation_ExtIEs__extensionValue), + offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, present), + sizeof(((struct GBR_QosInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_600, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_600 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_600, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_600 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GBR_QosInformation_ExtIEs_597[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_598, memb_id_constraint_597 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_GBR_QosInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_599, memb_criticality_constraint_597 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_600, + select_GBR_QosInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_600, memb_extensionValue_constraint_597 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GBR_QosInformation_ExtIEs_tags_597[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GBR_QosInformation_ExtIEs_tag2el_597[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_ExtIEs_specs_597 = { + sizeof(struct GBR_QosInformation_ExtIEs), + offsetof(struct GBR_QosInformation_ExtIEs, _asn_ctx), + asn_MAP_GBR_QosInformation_ExtIEs_tag2el_597, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation_ExtIEs = { + "GBR-QosInformation-ExtIEs", + "GBR-QosInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GBR_QosInformation_ExtIEs_tags_597, + sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597) + /sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597[0]), /* 1 */ + asn_DEF_GBR_QosInformation_ExtIEs_tags_597, /* Same as above */ + sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597) + /sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GBR_QosInformation_ExtIEs_597, + 3, /* Elements count */ + &asn_SPC_GBR_QosInformation_ExtIEs_specs_597 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_604 = { + sizeof(struct GlobalENB_ID_ExtIEs__extensionValue), + offsetof(struct GlobalENB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GlobalENB_ID_ExtIEs__extensionValue, present), + sizeof(((struct GlobalENB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_604 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_604 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_601[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_602, memb_id_constraint_601 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_603, memb_criticality_constraint_601 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_604, + 0, + { 0, &asn_PER_memb_extensionValue_constr_604, memb_extensionValue_constraint_601 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_ExtIEs_tags_601[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_ExtIEs_tag2el_601[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_601 = { + sizeof(struct GlobalENB_ID_ExtIEs), + offsetof(struct GlobalENB_ID_ExtIEs, _asn_ctx), + asn_MAP_GlobalENB_ID_ExtIEs_tag2el_601, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs = { + "GlobalENB-ID-ExtIEs", + "GlobalENB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_ExtIEs_tags_601, + sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601) + /sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601[0]), /* 1 */ + asn_DEF_GlobalENB_ID_ExtIEs_tags_601, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601) + /sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_ExtIEs_601, + 3, /* Elements count */ + &asn_SPC_GlobalENB_ID_ExtIEs_specs_601 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_608 = { + sizeof(struct GlobalGNB_ID_ExtIEs__extensionValue), + offsetof(struct GlobalGNB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GlobalGNB_ID_ExtIEs__extensionValue, present), + sizeof(((struct GlobalGNB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_608 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_608 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GlobalGNB_ID_ExtIEs_605[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_606, memb_id_constraint_605 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_607, memb_criticality_constraint_605 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_608, + 0, + { 0, &asn_PER_memb_extensionValue_constr_608, memb_extensionValue_constraint_605 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_ExtIEs_tag2el_605[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_ExtIEs_specs_605 = { + sizeof(struct GlobalGNB_ID_ExtIEs), + offsetof(struct GlobalGNB_ID_ExtIEs, _asn_ctx), + asn_MAP_GlobalGNB_ID_ExtIEs_tag2el_605, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID_ExtIEs = { + "GlobalGNB-ID-ExtIEs", + "GlobalGNB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GlobalGNB_ID_ExtIEs_tags_605, + sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605) + /sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[0]), /* 1 */ + asn_DEF_GlobalGNB_ID_ExtIEs_tags_605, /* Same as above */ + sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605) + /sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalGNB_ID_ExtIEs_605, + 3, /* Elements count */ + &asn_SPC_GlobalGNB_ID_ExtIEs_specs_605 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_612 = { + sizeof(struct GTPtunnelEndpoint_ExtIEs__extensionValue), + offsetof(struct GTPtunnelEndpoint_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GTPtunnelEndpoint_ExtIEs__extensionValue, present), + sizeof(((struct GTPtunnelEndpoint_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_612 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_612 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_ExtIEs_609[] = { + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_610, memb_id_constraint_609 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_611, memb_criticality_constraint_609 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_612, + 0, + { 0, &asn_PER_memb_extensionValue_constr_612, memb_extensionValue_constraint_609 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GTPtunnelEndpoint_ExtIEs_tag2el_609[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609 = { + sizeof(struct GTPtunnelEndpoint_ExtIEs), + offsetof(struct GTPtunnelEndpoint_ExtIEs, _asn_ctx), + asn_MAP_GTPtunnelEndpoint_ExtIEs_tag2el_609, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint_ExtIEs = { + "GTPtunnelEndpoint-ExtIEs", + "GTPtunnelEndpoint-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609, + sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609) + /sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[0]), /* 1 */ + asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609, /* Same as above */ + sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609) + /sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GTPtunnelEndpoint_ExtIEs_609, + 3, /* Elements count */ + &asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_616 = { + sizeof(struct GU_Group_ID_ExtIEs__extensionValue), + offsetof(struct GU_Group_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GU_Group_ID_ExtIEs__extensionValue, present), + sizeof(((struct GU_Group_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_616 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_616 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GU_Group_ID_ExtIEs_613[] = { + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_614, memb_id_constraint_613 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_615, memb_criticality_constraint_613 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_616, + 0, + { 0, &asn_PER_memb_extensionValue_constr_616, memb_extensionValue_constraint_613 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GU_Group_ID_ExtIEs_tags_613[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GU_Group_ID_ExtIEs_tag2el_613[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_ExtIEs_specs_613 = { + sizeof(struct GU_Group_ID_ExtIEs), + offsetof(struct GU_Group_ID_ExtIEs, _asn_ctx), + asn_MAP_GU_Group_ID_ExtIEs_tag2el_613, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GU_Group_ID_ExtIEs = { + "GU-Group-ID-ExtIEs", + "GU-Group-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GU_Group_ID_ExtIEs_tags_613, + sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613) + /sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613[0]), /* 1 */ + asn_DEF_GU_Group_ID_ExtIEs_tags_613, /* Same as above */ + sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613) + /sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GU_Group_ID_ExtIEs_613, + 3, /* Elements count */ + &asn_SPC_GU_Group_ID_ExtIEs_specs_613 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_620 = { + sizeof(struct GUMMEI_ExtIEs__extensionValue), + offsetof(struct GUMMEI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GUMMEI_ExtIEs__extensionValue, present), + sizeof(((struct GUMMEI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_620 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_620 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GUMMEI_ExtIEs_617[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_618, memb_id_constraint_617 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_619, memb_criticality_constraint_617 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_620, + 0, + { 0, &asn_PER_memb_extensionValue_constr_620, memb_extensionValue_constraint_617 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUMMEI_ExtIEs_tags_617[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_ExtIEs_tag2el_617[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_ExtIEs_specs_617 = { + sizeof(struct GUMMEI_ExtIEs), + offsetof(struct GUMMEI_ExtIEs, _asn_ctx), + asn_MAP_GUMMEI_ExtIEs_tag2el_617, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUMMEI_ExtIEs = { + "GUMMEI-ExtIEs", + "GUMMEI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GUMMEI_ExtIEs_tags_617, + sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617) + /sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617[0]), /* 1 */ + asn_DEF_GUMMEI_ExtIEs_tags_617, /* Same as above */ + sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617) + /sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GUMMEI_ExtIEs_617, + 3, /* Elements count */ + &asn_SPC_GUMMEI_ExtIEs_specs_617 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_624[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.NRrestrictioninEPSasSecondaryRAT), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRrestrictioninEPSasSecondaryRAT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRrestrictioninEPSasSecondaryRAT" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.CNTypeRestrictions), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictions, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CNTypeRestrictions" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.NRrestrictionin5GS), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRrestrictionin5GS, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRrestrictionin5GS" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_624[] = { 0, 2, 1 }; +static const unsigned asn_MAP_extensionValue_from_canonical_624[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_624[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* NRrestrictioninEPSasSecondaryRAT */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 0 }, /* NRrestrictionin5GS */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CNTypeRestrictions */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_624 = { + sizeof(struct HandoverRestrictionList_ExtIEs__extensionValue), + offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, present), + sizeof(((struct HandoverRestrictionList_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_624, + 3, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_624, + asn_MAP_extensionValue_from_canonical_624, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_624 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_624, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_624 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRestrictionList_ExtIEs_621[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_622, memb_id_constraint_621 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_HandoverRestrictionList_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_623, memb_criticality_constraint_621 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_624, + select_HandoverRestrictionList_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_624, memb_extensionValue_constraint_621 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRestrictionList_ExtIEs_tag2el_621[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_ExtIEs_specs_621 = { + sizeof(struct HandoverRestrictionList_ExtIEs), + offsetof(struct HandoverRestrictionList_ExtIEs, _asn_ctx), + asn_MAP_HandoverRestrictionList_ExtIEs_tag2el_621, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList_ExtIEs = { + "HandoverRestrictionList-ExtIEs", + "HandoverRestrictionList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRestrictionList_ExtIEs_tags_621, + sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621) + /sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[0]), /* 1 */ + asn_DEF_HandoverRestrictionList_ExtIEs_tags_621, /* Same as above */ + sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621) + /sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRestrictionList_ExtIEs_621, + 3, /* Elements count */ + &asn_SPC_HandoverRestrictionList_ExtIEs_specs_621 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_628 = { + sizeof(struct HWLoadIndicator_ExtIEs__extensionValue), + offsetof(struct HWLoadIndicator_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct HWLoadIndicator_ExtIEs__extensionValue, present), + sizeof(((struct HWLoadIndicator_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_628 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_628 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HWLoadIndicator_ExtIEs_625[] = { + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_626, memb_id_constraint_625 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_627, memb_criticality_constraint_625 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_628, + 0, + { 0, &asn_PER_memb_extensionValue_constr_628, memb_extensionValue_constraint_625 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_HWLoadIndicator_ExtIEs_tags_625[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HWLoadIndicator_ExtIEs_tag2el_625[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_ExtIEs_specs_625 = { + sizeof(struct HWLoadIndicator_ExtIEs), + offsetof(struct HWLoadIndicator_ExtIEs, _asn_ctx), + asn_MAP_HWLoadIndicator_ExtIEs_tag2el_625, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator_ExtIEs = { + "HWLoadIndicator-ExtIEs", + "HWLoadIndicator-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_HWLoadIndicator_ExtIEs_tags_625, + sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625) + /sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625[0]), /* 1 */ + asn_DEF_HWLoadIndicator_ExtIEs_tags_625, /* Same as above */ + sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625) + /sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HWLoadIndicator_ExtIEs_625, + 3, /* Elements count */ + &asn_SPC_HWLoadIndicator_ExtIEs_specs_625 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_632[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Time_UE_StayedInCell_EnhancedGranularity), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Time_UE_StayedInCell_EnhancedGranularity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Time-UE-StayedInCell-EnhancedGranularity" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_632[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Time-UE-StayedInCell-EnhancedGranularity */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_632 = { + sizeof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, present), + sizeof(((struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_632, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_632 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_632, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_632 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_630, memb_id_constraint_629 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_LastVisitedEUTRANCellInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_631, memb_criticality_constraint_629 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_632, + select_LastVisitedEUTRANCellInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_632, memb_extensionValue_constraint_629 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_629[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629 = { + sizeof(struct LastVisitedEUTRANCellInformation_ExtIEs), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, _asn_ctx), + asn_MAP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_629, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs = { + "LastVisitedEUTRANCellInformation-ExtIEs", + "LastVisitedEUTRANCellInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629, + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[0]), /* 1 */ + asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629, /* Same as above */ + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629, + 3, /* Elements count */ + &asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_636 = { + sizeof(struct LocationReportingInformation_ExtIEs__extensionValue), + offsetof(struct LocationReportingInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct LocationReportingInformation_ExtIEs__extensionValue, present), + sizeof(((struct LocationReportingInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_636 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_636 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LocationReportingInformation_ExtIEs_633[] = { + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_634, memb_id_constraint_633 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_635, memb_criticality_constraint_633 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_636, + 0, + { 0, &asn_PER_memb_extensionValue_constr_636, memb_extensionValue_constraint_633 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_LocationReportingInformation_ExtIEs_tags_633[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LocationReportingInformation_ExtIEs_tag2el_633[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_ExtIEs_specs_633 = { + sizeof(struct LocationReportingInformation_ExtIEs), + offsetof(struct LocationReportingInformation_ExtIEs, _asn_ctx), + asn_MAP_LocationReportingInformation_ExtIEs_tag2el_633, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation_ExtIEs = { + "LocationReportingInformation-ExtIEs", + "LocationReportingInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_LocationReportingInformation_ExtIEs_tags_633, + sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633) + /sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633[0]), /* 1 */ + asn_DEF_LocationReportingInformation_ExtIEs_tags_633, /* Same as above */ + sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633) + /sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LocationReportingInformation_ExtIEs_633, + 3, /* Elements count */ + &asn_SPC_LocationReportingInformation_ExtIEs_specs_633 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_640 = { + sizeof(struct M1PeriodicReporting_ExtIEs__extensionValue), + offsetof(struct M1PeriodicReporting_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M1PeriodicReporting_ExtIEs__extensionValue, present), + sizeof(((struct M1PeriodicReporting_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_640 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_640 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M1PeriodicReporting_ExtIEs_637[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_638, memb_id_constraint_637 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_639, memb_criticality_constraint_637 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_640, + 0, + { 0, &asn_PER_memb_extensionValue_constr_640, memb_extensionValue_constraint_637 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1PeriodicReporting_ExtIEs_tag2el_637[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_ExtIEs_specs_637 = { + sizeof(struct M1PeriodicReporting_ExtIEs), + offsetof(struct M1PeriodicReporting_ExtIEs, _asn_ctx), + asn_MAP_M1PeriodicReporting_ExtIEs_tag2el_637, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting_ExtIEs = { + "M1PeriodicReporting-ExtIEs", + "M1PeriodicReporting-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M1PeriodicReporting_ExtIEs_tags_637, + sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637) + /sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[0]), /* 1 */ + asn_DEF_M1PeriodicReporting_ExtIEs_tags_637, /* Same as above */ + sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637) + /sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1PeriodicReporting_ExtIEs_637, + 3, /* Elements count */ + &asn_SPC_M1PeriodicReporting_ExtIEs_specs_637 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_644 = { + sizeof(struct M1ThresholdEventA2_ExtIEs__extensionValue), + offsetof(struct M1ThresholdEventA2_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M1ThresholdEventA2_ExtIEs__extensionValue, present), + sizeof(((struct M1ThresholdEventA2_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_644 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_644 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_ExtIEs_641[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_642, memb_id_constraint_641 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_643, memb_criticality_constraint_641 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_644, + 0, + { 0, &asn_PER_memb_extensionValue_constr_644, memb_extensionValue_constraint_641 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1ThresholdEventA2_ExtIEs_tag2el_641[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641 = { + sizeof(struct M1ThresholdEventA2_ExtIEs), + offsetof(struct M1ThresholdEventA2_ExtIEs, _asn_ctx), + asn_MAP_M1ThresholdEventA2_ExtIEs_tag2el_641, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2_ExtIEs = { + "M1ThresholdEventA2-ExtIEs", + "M1ThresholdEventA2-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641, + sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641) + /sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[0]), /* 1 */ + asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641, /* Same as above */ + sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641) + /sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1ThresholdEventA2_ExtIEs_641, + 3, /* Elements count */ + &asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_648 = { + sizeof(struct M3Configuration_ExtIEs__extensionValue), + offsetof(struct M3Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M3Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M3Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_648 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_648 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M3Configuration_ExtIEs_645[] = { + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_646, memb_id_constraint_645 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_647, memb_criticality_constraint_645 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_648, + 0, + { 0, &asn_PER_memb_extensionValue_constr_648, memb_extensionValue_constraint_645 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M3Configuration_ExtIEs_tags_645[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M3Configuration_ExtIEs_tag2el_645[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_ExtIEs_specs_645 = { + sizeof(struct M3Configuration_ExtIEs), + offsetof(struct M3Configuration_ExtIEs, _asn_ctx), + asn_MAP_M3Configuration_ExtIEs_tag2el_645, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M3Configuration_ExtIEs = { + "M3Configuration-ExtIEs", + "M3Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M3Configuration_ExtIEs_tags_645, + sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645) + /sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645[0]), /* 1 */ + asn_DEF_M3Configuration_ExtIEs_tags_645, /* Same as above */ + sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645) + /sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M3Configuration_ExtIEs_645, + 3, /* Elements count */ + &asn_SPC_M3Configuration_ExtIEs_specs_645 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_652 = { + sizeof(struct M4Configuration_ExtIEs__extensionValue), + offsetof(struct M4Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M4Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M4Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_652 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_652 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M4Configuration_ExtIEs_649[] = { + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_650, memb_id_constraint_649 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_651, memb_criticality_constraint_649 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_652, + 0, + { 0, &asn_PER_memb_extensionValue_constr_652, memb_extensionValue_constraint_649 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M4Configuration_ExtIEs_tags_649[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M4Configuration_ExtIEs_tag2el_649[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_ExtIEs_specs_649 = { + sizeof(struct M4Configuration_ExtIEs), + offsetof(struct M4Configuration_ExtIEs, _asn_ctx), + asn_MAP_M4Configuration_ExtIEs_tag2el_649, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M4Configuration_ExtIEs = { + "M4Configuration-ExtIEs", + "M4Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M4Configuration_ExtIEs_tags_649, + sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649) + /sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649[0]), /* 1 */ + asn_DEF_M4Configuration_ExtIEs_tags_649, /* Same as above */ + sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649) + /sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M4Configuration_ExtIEs_649, + 3, /* Elements count */ + &asn_SPC_M4Configuration_ExtIEs_specs_649 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_656 = { + sizeof(struct M5Configuration_ExtIEs__extensionValue), + offsetof(struct M5Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M5Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M5Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_656 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_656 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M5Configuration_ExtIEs_653[] = { + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_654, memb_id_constraint_653 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_655, memb_criticality_constraint_653 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_656, + 0, + { 0, &asn_PER_memb_extensionValue_constr_656, memb_extensionValue_constraint_653 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M5Configuration_ExtIEs_tags_653[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M5Configuration_ExtIEs_tag2el_653[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_ExtIEs_specs_653 = { + sizeof(struct M5Configuration_ExtIEs), + offsetof(struct M5Configuration_ExtIEs, _asn_ctx), + asn_MAP_M5Configuration_ExtIEs_tag2el_653, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M5Configuration_ExtIEs = { + "M5Configuration-ExtIEs", + "M5Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M5Configuration_ExtIEs_tags_653, + sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653) + /sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653[0]), /* 1 */ + asn_DEF_M5Configuration_ExtIEs_tags_653, /* Same as above */ + sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653) + /sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M5Configuration_ExtIEs_653, + 3, /* Elements count */ + &asn_SPC_M5Configuration_ExtIEs_specs_653 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_660 = { + sizeof(struct M6Configuration_ExtIEs__extensionValue), + offsetof(struct M6Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M6Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M6Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_660 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_660 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M6Configuration_ExtIEs_657[] = { + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_658, memb_id_constraint_657 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_659, memb_criticality_constraint_657 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_660, + 0, + { 0, &asn_PER_memb_extensionValue_constr_660, memb_extensionValue_constraint_657 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M6Configuration_ExtIEs_tags_657[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M6Configuration_ExtIEs_tag2el_657[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_ExtIEs_specs_657 = { + sizeof(struct M6Configuration_ExtIEs), + offsetof(struct M6Configuration_ExtIEs, _asn_ctx), + asn_MAP_M6Configuration_ExtIEs_tag2el_657, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M6Configuration_ExtIEs = { + "M6Configuration-ExtIEs", + "M6Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M6Configuration_ExtIEs_tags_657, + sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657) + /sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657[0]), /* 1 */ + asn_DEF_M6Configuration_ExtIEs_tags_657, /* Same as above */ + sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657) + /sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M6Configuration_ExtIEs_657, + 3, /* Elements count */ + &asn_SPC_M6Configuration_ExtIEs_specs_657 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_664 = { + sizeof(struct M7Configuration_ExtIEs__extensionValue), + offsetof(struct M7Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M7Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M7Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_664 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_664 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M7Configuration_ExtIEs_661[] = { + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_662, memb_id_constraint_661 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_663, memb_criticality_constraint_661 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_664, + 0, + { 0, &asn_PER_memb_extensionValue_constr_664, memb_extensionValue_constraint_661 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M7Configuration_ExtIEs_tags_661[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M7Configuration_ExtIEs_tag2el_661[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_ExtIEs_specs_661 = { + sizeof(struct M7Configuration_ExtIEs), + offsetof(struct M7Configuration_ExtIEs, _asn_ctx), + asn_MAP_M7Configuration_ExtIEs_tag2el_661, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M7Configuration_ExtIEs = { + "M7Configuration-ExtIEs", + "M7Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M7Configuration_ExtIEs_tags_661, + sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661) + /sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661[0]), /* 1 */ + asn_DEF_M7Configuration_ExtIEs_tags_661, /* Same as above */ + sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661) + /sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M7Configuration_ExtIEs_661, + 3, /* Elements count */ + &asn_SPC_M7Configuration_ExtIEs_specs_661 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_668[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M3Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M3Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M3Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M4Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M4Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M4Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M5Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M5Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M5Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.MDT_Location_Info), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MDT_Location_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Location-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M6Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M6Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M6Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M7Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M7Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M7Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.BluetoothMeasurementConfiguration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BluetoothMeasurementConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BluetoothMeasurementConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.WLANMeasurementConfiguration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WLANMeasurementConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WLANMeasurementConfiguration" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_668[] = { 3, 0, 1, 2, 4, 5, 6, 7, 8 }; +static const unsigned asn_MAP_extensionValue_from_canonical_668[] = { 1, 2, 3, 0, 4, 5, 6, 7, 8 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_668[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 0 }, /* MDT-Location-Info */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 7 }, /* M3Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 6 }, /* M4Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 5 }, /* M5Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 4 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -4, 3 }, /* M6Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -5, 2 }, /* M7Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -6, 1 }, /* BluetoothMeasurementConfiguration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -7, 0 } /* WLANMeasurementConfiguration */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_668 = { + sizeof(struct MDT_Configuration_ExtIEs__extensionValue), + offsetof(struct MDT_Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MDT_Configuration_ExtIEs__extensionValue, present), + sizeof(((struct MDT_Configuration_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_668, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_668, + asn_MAP_extensionValue_from_canonical_668, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_668 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_668, + 9, /* Elements count */ + &asn_SPC_extensionValue_specs_668 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MDT_Configuration_ExtIEs_665[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_666, memb_id_constraint_665 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_MDT_Configuration_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_667, memb_criticality_constraint_665 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_668, + select_MDT_Configuration_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_668, memb_extensionValue_constraint_665 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MDT_Configuration_ExtIEs_tags_665[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MDT_Configuration_ExtIEs_tag2el_665[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_ExtIEs_specs_665 = { + sizeof(struct MDT_Configuration_ExtIEs), + offsetof(struct MDT_Configuration_ExtIEs, _asn_ctx), + asn_MAP_MDT_Configuration_ExtIEs_tag2el_665, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Configuration_ExtIEs = { + "MDT-Configuration-ExtIEs", + "MDT-Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MDT_Configuration_ExtIEs_tags_665, + sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665) + /sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665[0]), /* 1 */ + asn_DEF_MDT_Configuration_ExtIEs_tags_665, /* Same as above */ + sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665) + /sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MDT_Configuration_ExtIEs_665, + 3, /* Elements count */ + &asn_SPC_MDT_Configuration_ExtIEs_specs_665 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_672[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, choice.NRCGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, choice.MeNBCoordinationAssistanceInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_MeNBCoordinationAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBCoordinationAssistanceInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_672[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_672[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_672[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* MeNBCoordinationAssistanceInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* NRCGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_672 = { + sizeof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue), + offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, present), + sizeof(((struct MeNBResourceCoordinationInformationExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_672, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_672, + asn_MAP_extensionValue_from_canonical_672, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_672 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_672, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_672 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformationExtIEs_669[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_670, memb_id_constraint_669 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_MeNBResourceCoordinationInformationExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_671, memb_criticality_constraint_669 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_672, + select_MeNBResourceCoordinationInformationExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_672, memb_extensionValue_constraint_669 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeNBResourceCoordinationInformationExtIEs_tag2el_669[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669 = { + sizeof(struct MeNBResourceCoordinationInformationExtIEs), + offsetof(struct MeNBResourceCoordinationInformationExtIEs, _asn_ctx), + asn_MAP_MeNBResourceCoordinationInformationExtIEs_tag2el_669, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformationExtIEs = { + "MeNBResourceCoordinationInformationExtIEs", + "MeNBResourceCoordinationInformationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669, + sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669) + /sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[0]), /* 1 */ + asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669, /* Same as above */ + sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669) + /sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeNBResourceCoordinationInformationExtIEs_669, + 3, /* Elements count */ + &asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_676 = { + sizeof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue), + offsetof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct MBSFN_Subframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_676 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_676 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_ExtIEs_673[] = { + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_674, memb_id_constraint_673 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_675, memb_criticality_constraint_673 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_676, + 0, + { 0, &asn_PER_memb_extensionValue_constr_676, memb_extensionValue_constraint_673 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MBSFN_Subframe_Info_ExtIEs_tag2el_673[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673 = { + sizeof(struct MBSFN_Subframe_Info_ExtIEs), + offsetof(struct MBSFN_Subframe_Info_ExtIEs, _asn_ctx), + asn_MAP_MBSFN_Subframe_Info_ExtIEs_tag2el_673, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info_ExtIEs = { + "MBSFN-Subframe-Info-ExtIEs", + "MBSFN-Subframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673, + sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673) + /sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673) + /sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MBSFN_Subframe_Info_ExtIEs_673, + 3, /* Elements count */ + &asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_680 = { + sizeof(struct BandInfo_ExtIEs__extensionValue), + offsetof(struct BandInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct BandInfo_ExtIEs__extensionValue, present), + sizeof(((struct BandInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_680 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_680 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BandInfo_ExtIEs_677[] = { + { ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_678, memb_id_constraint_677 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_679, memb_criticality_constraint_677 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_680, + 0, + { 0, &asn_PER_memb_extensionValue_constr_680, memb_extensionValue_constraint_677 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_BandInfo_ExtIEs_tags_677[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BandInfo_ExtIEs_tag2el_677[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BandInfo_ExtIEs_specs_677 = { + sizeof(struct BandInfo_ExtIEs), + offsetof(struct BandInfo_ExtIEs, _asn_ctx), + asn_MAP_BandInfo_ExtIEs_tag2el_677, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BandInfo_ExtIEs = { + "BandInfo-ExtIEs", + "BandInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_BandInfo_ExtIEs_tags_677, + sizeof(asn_DEF_BandInfo_ExtIEs_tags_677) + /sizeof(asn_DEF_BandInfo_ExtIEs_tags_677[0]), /* 1 */ + asn_DEF_BandInfo_ExtIEs_tags_677, /* Same as above */ + sizeof(asn_DEF_BandInfo_ExtIEs_tags_677) + /sizeof(asn_DEF_BandInfo_ExtIEs_tags_677[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BandInfo_ExtIEs_677, + 3, /* Elements count */ + &asn_SPC_BandInfo_ExtIEs_specs_677 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_684 = { + sizeof(struct SplitSRB_ExtIEs__extensionValue), + offsetof(struct SplitSRB_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SplitSRB_ExtIEs__extensionValue, present), + sizeof(((struct SplitSRB_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_684 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_684 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SplitSRB_ExtIEs_681[] = { + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_682, memb_id_constraint_681 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_683, memb_criticality_constraint_681 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_684, + 0, + { 0, &asn_PER_memb_extensionValue_constr_684, memb_extensionValue_constraint_681 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SplitSRB_ExtIEs_tags_681[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SplitSRB_ExtIEs_tag2el_681[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_ExtIEs_specs_681 = { + sizeof(struct SplitSRB_ExtIEs), + offsetof(struct SplitSRB_ExtIEs, _asn_ctx), + asn_MAP_SplitSRB_ExtIEs_tag2el_681, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRB_ExtIEs = { + "SplitSRB-ExtIEs", + "SplitSRB-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SplitSRB_ExtIEs_tags_681, + sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681) + /sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681[0]), /* 1 */ + asn_DEF_SplitSRB_ExtIEs_tags_681, /* Same as above */ + sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681) + /sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SplitSRB_ExtIEs_681, + 3, /* Elements count */ + &asn_SPC_SplitSRB_ExtIEs_specs_681 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_688 = { + sizeof(struct UENRMeasurement_ExtIEs__extensionValue), + offsetof(struct UENRMeasurement_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UENRMeasurement_ExtIEs__extensionValue, present), + sizeof(((struct UENRMeasurement_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_688 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_688 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UENRMeasurement_ExtIEs_685[] = { + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_686, memb_id_constraint_685 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_687, memb_criticality_constraint_685 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_688, + 0, + { 0, &asn_PER_memb_extensionValue_constr_688, memb_extensionValue_constraint_685 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UENRMeasurement_ExtIEs_tags_685[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UENRMeasurement_ExtIEs_tag2el_685[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_ExtIEs_specs_685 = { + sizeof(struct UENRMeasurement_ExtIEs), + offsetof(struct UENRMeasurement_ExtIEs, _asn_ctx), + asn_MAP_UENRMeasurement_ExtIEs_tag2el_685, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UENRMeasurement_ExtIEs = { + "UENRMeasurement-ExtIEs", + "UENRMeasurement-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UENRMeasurement_ExtIEs_tags_685, + sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685) + /sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685[0]), /* 1 */ + asn_DEF_UENRMeasurement_ExtIEs_tags_685, /* Same as above */ + sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685) + /sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UENRMeasurement_ExtIEs_685, + 3, /* Elements count */ + &asn_SPC_UENRMeasurement_ExtIEs_specs_685 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_692[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs__extensionValue, choice.TAC), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_692[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_692[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_692[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* TAC */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_692 = { + sizeof(struct Neighbour_Information_ExtIEs__extensionValue), + offsetof(struct Neighbour_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Neighbour_Information_ExtIEs__extensionValue, present), + sizeof(((struct Neighbour_Information_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_692, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_692, + asn_MAP_extensionValue_from_canonical_692, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_692 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_692, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_692 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Neighbour_Information_ExtIEs_689[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_690, memb_id_constraint_689 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_Neighbour_Information_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_691, memb_criticality_constraint_689 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_692, + select_Neighbour_Information_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_692, memb_extensionValue_constraint_689 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Neighbour_Information_ExtIEs_tags_689[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Neighbour_Information_ExtIEs_tag2el_689[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Neighbour_Information_ExtIEs_specs_689 = { + sizeof(struct Neighbour_Information_ExtIEs), + offsetof(struct Neighbour_Information_ExtIEs, _asn_ctx), + asn_MAP_Neighbour_Information_ExtIEs_tag2el_689, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Neighbour_Information_ExtIEs = { + "Neighbour-Information-ExtIEs", + "Neighbour-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Neighbour_Information_ExtIEs_tags_689, + sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689) + /sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689[0]), /* 1 */ + asn_DEF_Neighbour_Information_ExtIEs_tags_689, /* Same as above */ + sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689) + /sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Neighbour_Information_ExtIEs_689, + 3, /* Elements count */ + &asn_SPC_Neighbour_Information_ExtIEs_specs_689 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_696 = { + sizeof(struct NRFreqInfo_ExtIEs__extensionValue), + offsetof(struct NRFreqInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRFreqInfo_ExtIEs__extensionValue, present), + sizeof(((struct NRFreqInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_696 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_696 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRFreqInfo_ExtIEs_693[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_694, memb_id_constraint_693 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_695, memb_criticality_constraint_693 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_696, + 0, + { 0, &asn_PER_memb_extensionValue_constr_696, memb_extensionValue_constraint_693 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRFreqInfo_ExtIEs_tags_693[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFreqInfo_ExtIEs_tag2el_693[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_ExtIEs_specs_693 = { + sizeof(struct NRFreqInfo_ExtIEs), + offsetof(struct NRFreqInfo_ExtIEs, _asn_ctx), + asn_MAP_NRFreqInfo_ExtIEs_tag2el_693, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFreqInfo_ExtIEs = { + "NRFreqInfo-ExtIEs", + "NRFreqInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRFreqInfo_ExtIEs_tags_693, + sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693) + /sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693[0]), /* 1 */ + asn_DEF_NRFreqInfo_ExtIEs_tags_693, /* Same as above */ + sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693) + /sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRFreqInfo_ExtIEs_693, + 3, /* Elements count */ + &asn_SPC_NRFreqInfo_ExtIEs_specs_693 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_700 = { + sizeof(struct NRCGI_ExtIEs__extensionValue), + offsetof(struct NRCGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRCGI_ExtIEs__extensionValue, present), + sizeof(((struct NRCGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_700 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_700 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRCGI_ExtIEs_697[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_698, memb_id_constraint_697 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_699, memb_criticality_constraint_697 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_700, + 0, + { 0, &asn_PER_memb_extensionValue_constr_700, memb_extensionValue_constraint_697 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRCGI_ExtIEs_tags_697[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRCGI_ExtIEs_tag2el_697[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRCGI_ExtIEs_specs_697 = { + sizeof(struct NRCGI_ExtIEs), + offsetof(struct NRCGI_ExtIEs, _asn_ctx), + asn_MAP_NRCGI_ExtIEs_tag2el_697, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRCGI_ExtIEs = { + "NRCGI-ExtIEs", + "NRCGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRCGI_ExtIEs_tags_697, + sizeof(asn_DEF_NRCGI_ExtIEs_tags_697) + /sizeof(asn_DEF_NRCGI_ExtIEs_tags_697[0]), /* 1 */ + asn_DEF_NRCGI_ExtIEs_tags_697, /* Same as above */ + sizeof(asn_DEF_NRCGI_ExtIEs_tags_697) + /sizeof(asn_DEF_NRCGI_ExtIEs_tags_697[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRCGI_ExtIEs_697, + 3, /* Elements count */ + &asn_SPC_NRCGI_ExtIEs_specs_697 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_704 = { + sizeof(struct NR_TxBW_ExtIEs__extensionValue), + offsetof(struct NR_TxBW_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NR_TxBW_ExtIEs__extensionValue, present), + sizeof(((struct NR_TxBW_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_704 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_704 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NR_TxBW_ExtIEs_701[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_702, memb_id_constraint_701 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_703, memb_criticality_constraint_701 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_704, + 0, + { 0, &asn_PER_memb_extensionValue_constr_704, memb_extensionValue_constraint_701 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NR_TxBW_ExtIEs_tags_701[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_TxBW_ExtIEs_tag2el_701[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_ExtIEs_specs_701 = { + sizeof(struct NR_TxBW_ExtIEs), + offsetof(struct NR_TxBW_ExtIEs, _asn_ctx), + asn_MAP_NR_TxBW_ExtIEs_tag2el_701, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_TxBW_ExtIEs = { + "NR-TxBW-ExtIEs", + "NR-TxBW-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NR_TxBW_ExtIEs_tags_701, + sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701) + /sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701[0]), /* 1 */ + asn_DEF_NR_TxBW_ExtIEs_tags_701, /* Same as above */ + sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701) + /sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NR_TxBW_ExtIEs_701, + 3, /* Elements count */ + &asn_SPC_NR_TxBW_ExtIEs_specs_701 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_708 = { + sizeof(struct NRUESecurityCapabilities_ExtIEs__extensionValue), + offsetof(struct NRUESecurityCapabilities_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRUESecurityCapabilities_ExtIEs__extensionValue, present), + sizeof(((struct NRUESecurityCapabilities_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_708 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_708 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_ExtIEs_705[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_706, memb_id_constraint_705 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_707, memb_criticality_constraint_705 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_708, + 0, + { 0, &asn_PER_memb_extensionValue_constr_708, memb_extensionValue_constraint_705 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRUESecurityCapabilities_ExtIEs_tag2el_705[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705 = { + sizeof(struct NRUESecurityCapabilities_ExtIEs), + offsetof(struct NRUESecurityCapabilities_ExtIEs, _asn_ctx), + asn_MAP_NRUESecurityCapabilities_ExtIEs_tag2el_705, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities_ExtIEs = { + "NRUESecurityCapabilities-ExtIEs", + "NRUESecurityCapabilities-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705, + sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705) + /sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[0]), /* 1 */ + asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705, /* Same as above */ + sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705) + /sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRUESecurityCapabilities_ExtIEs_705, + 3, /* Elements count */ + &asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_712 = { + sizeof(struct PRACH_Configuration_ExtIEs__extensionValue), + offsetof(struct PRACH_Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct PRACH_Configuration_ExtIEs__extensionValue, present), + sizeof(((struct PRACH_Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_712 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_712 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PRACH_Configuration_ExtIEs_709[] = { + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_710, memb_id_constraint_709 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_711, memb_criticality_constraint_709 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_712, + 0, + { 0, &asn_PER_memb_extensionValue_constr_712, memb_extensionValue_constraint_709 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_PRACH_Configuration_ExtIEs_tags_709[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PRACH_Configuration_ExtIEs_tag2el_709[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_ExtIEs_specs_709 = { + sizeof(struct PRACH_Configuration_ExtIEs), + offsetof(struct PRACH_Configuration_ExtIEs, _asn_ctx), + asn_MAP_PRACH_Configuration_ExtIEs_tag2el_709, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration_ExtIEs = { + "PRACH-Configuration-ExtIEs", + "PRACH-Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_PRACH_Configuration_ExtIEs_tags_709, + sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709) + /sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709[0]), /* 1 */ + asn_DEF_PRACH_Configuration_ExtIEs_tags_709, /* Same as above */ + sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709) + /sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PRACH_Configuration_ExtIEs_709, + 3, /* Elements count */ + &asn_SPC_PRACH_Configuration_ExtIEs_specs_709 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_716 = { + sizeof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue), + offsetof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct PLMNAreaBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_716 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_716 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_ExtIEs_713[] = { + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_714, memb_id_constraint_713 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_715, memb_criticality_constraint_713 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_716, + 0, + { 0, &asn_PER_memb_extensionValue_constr_716, memb_extensionValue_constraint_713 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PLMNAreaBasedQMC_ExtIEs_tag2el_713[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713 = { + sizeof(struct PLMNAreaBasedQMC_ExtIEs), + offsetof(struct PLMNAreaBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_PLMNAreaBasedQMC_ExtIEs_tag2el_713, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC_ExtIEs = { + "PLMNAreaBasedQMC-ExtIEs", + "PLMNAreaBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713, + sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713) + /sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[0]), /* 1 */ + asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713, /* Same as above */ + sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713) + /sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PLMNAreaBasedQMC_ExtIEs_713, + 3, /* Elements count */ + &asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_720[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, choice.ProSeUEtoNetworkRelaying), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ProSeUEtoNetworkRelaying, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeUEtoNetworkRelaying" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_720[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* ProSeUEtoNetworkRelaying */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_720 = { + sizeof(struct ProSeAuthorized_ExtIEs__extensionValue), + offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct ProSeAuthorized_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_720, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_720 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_720, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_720 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProSeAuthorized_ExtIEs_717[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_718, memb_id_constraint_717 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ProSeAuthorized_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_719, memb_criticality_constraint_717 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_720, + select_ProSeAuthorized_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_720, memb_extensionValue_constraint_717 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProSeAuthorized_ExtIEs_tags_717[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProSeAuthorized_ExtIEs_tag2el_717[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_ExtIEs_specs_717 = { + sizeof(struct ProSeAuthorized_ExtIEs), + offsetof(struct ProSeAuthorized_ExtIEs, _asn_ctx), + asn_MAP_ProSeAuthorized_ExtIEs_tag2el_717, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized_ExtIEs = { + "ProSeAuthorized-ExtIEs", + "ProSeAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProSeAuthorized_ExtIEs_tags_717, + sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717) + /sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717[0]), /* 1 */ + asn_DEF_ProSeAuthorized_ExtIEs_tags_717, /* Same as above */ + sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717) + /sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProSeAuthorized_ExtIEs_717, + 3, /* Elements count */ + &asn_SPC_ProSeAuthorized_ExtIEs_specs_717 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_724 = { + sizeof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_724 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_724 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_722, memb_id_constraint_721 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_723, memb_criticality_constraint_721 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_724, + 0, + { 0, &asn_PER_memb_extensionValue_constr_724, memb_extensionValue_constraint_721 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedEUTRAResourceIndication_ExtIEs_tag2el_721[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721 = { + sizeof(struct ProtectedEUTRAResourceIndication_ExtIEs), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, _asn_ctx), + asn_MAP_ProtectedEUTRAResourceIndication_ExtIEs_tag2el_721, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs = { + "ProtectedEUTRAResourceIndication-ExtIEs", + "ProtectedEUTRAResourceIndication-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721, + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[0]), /* 1 */ + asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721, /* Same as above */ + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721, + 3, /* Elements count */ + &asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_728 = { + sizeof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedFootprintTimePattern_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_728 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_728 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_726, memb_id_constraint_725 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_727, memb_criticality_constraint_725 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_728, + 0, + { 0, &asn_PER_memb_extensionValue_constr_728, memb_extensionValue_constraint_725 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedFootprintTimePattern_ExtIEs_tag2el_725[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725 = { + sizeof(struct ProtectedFootprintTimePattern_ExtIEs), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs, _asn_ctx), + asn_MAP_ProtectedFootprintTimePattern_ExtIEs_tag2el_725, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs = { + "ProtectedFootprintTimePattern-ExtIEs", + "ProtectedFootprintTimePattern-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725, + sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[0]), /* 1 */ + asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725, /* Same as above */ + sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725, + 3, /* Elements count */ + &asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_732 = { + sizeof(struct ProtectedResourceList_Item_ExtIEs__extensionValue), + offsetof(struct ProtectedResourceList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedResourceList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedResourceList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_732 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_732 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_ExtIEs_729[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_730, memb_id_constraint_729 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_731, memb_criticality_constraint_729 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_732, + 0, + { 0, &asn_PER_memb_extensionValue_constr_732, memb_extensionValue_constraint_729 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedResourceList_Item_ExtIEs_tag2el_729[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729 = { + sizeof(struct ProtectedResourceList_Item_ExtIEs), + offsetof(struct ProtectedResourceList_Item_ExtIEs, _asn_ctx), + asn_MAP_ProtectedResourceList_Item_ExtIEs_tag2el_729, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item_ExtIEs = { + "ProtectedResourceList-Item-ExtIEs", + "ProtectedResourceList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729, + sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729) + /sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[0]), /* 1 */ + asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729) + /sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedResourceList_Item_ExtIEs_729, + 3, /* Elements count */ + &asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_736[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, choice.DL_scheduling_PDCCH_CCE_usage), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_DL_scheduling_PDCCH_CCE_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DL-scheduling-PDCCH-CCE-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, choice.UL_scheduling_PDCCH_CCE_usage), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UL_scheduling_PDCCH_CCE_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UL-scheduling-PDCCH-CCE-usage" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_736[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* DL-scheduling-PDCCH-CCE-usage */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 } /* UL-scheduling-PDCCH-CCE-usage */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_736 = { + sizeof(struct RadioResourceStatus_ExtIEs__extensionValue), + offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, present), + sizeof(((struct RadioResourceStatus_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_736, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_736 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_736, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_736 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RadioResourceStatus_ExtIEs_733[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_734, memb_id_constraint_733 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RadioResourceStatus_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_735, memb_criticality_constraint_733 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_736, + select_RadioResourceStatus_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_736, memb_extensionValue_constraint_733 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RadioResourceStatus_ExtIEs_tags_733[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadioResourceStatus_ExtIEs_tag2el_733[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_ExtIEs_specs_733 = { + sizeof(struct RadioResourceStatus_ExtIEs), + offsetof(struct RadioResourceStatus_ExtIEs, _asn_ctx), + asn_MAP_RadioResourceStatus_ExtIEs_tag2el_733, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus_ExtIEs = { + "RadioResourceStatus-ExtIEs", + "RadioResourceStatus-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RadioResourceStatus_ExtIEs_tags_733, + sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733) + /sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733[0]), /* 1 */ + asn_DEF_RadioResourceStatus_ExtIEs_tags_733, /* Same as above */ + sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733) + /sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RadioResourceStatus_ExtIEs_733, + 3, /* Elements count */ + &asn_SPC_RadioResourceStatus_ExtIEs_specs_733 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_740[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, choice.EnhancedRNTP), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedRNTP" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_740[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* EnhancedRNTP */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_740 = { + sizeof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, present), + sizeof(((struct RelativeNarrowbandTxPower_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_740, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_740 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_740, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_740 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_738, memb_id_constraint_737 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RelativeNarrowbandTxPower_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_739, memb_criticality_constraint_737 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_740, + select_RelativeNarrowbandTxPower_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_740, memb_extensionValue_constraint_737 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RelativeNarrowbandTxPower_ExtIEs_tag2el_737[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737 = { + sizeof(struct RelativeNarrowbandTxPower_ExtIEs), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, _asn_ctx), + asn_MAP_RelativeNarrowbandTxPower_ExtIEs_tag2el_737, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs = { + "RelativeNarrowbandTxPower-ExtIEs", + "RelativeNarrowbandTxPower-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737, + sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[0]), /* 1 */ + asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737, /* Same as above */ + sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737, + 3, /* Elements count */ + &asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_744 = { + sizeof(struct ReservedSubframePattern_ExtIEs__extensionValue), + offsetof(struct ReservedSubframePattern_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ReservedSubframePattern_ExtIEs__extensionValue, present), + sizeof(((struct ReservedSubframePattern_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_744 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_744 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ReservedSubframePattern_ExtIEs_741[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_742, memb_id_constraint_741 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_743, memb_criticality_constraint_741 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_744, + 0, + { 0, &asn_PER_memb_extensionValue_constr_744, memb_extensionValue_constraint_741 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReservedSubframePattern_ExtIEs_tag2el_741[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_ExtIEs_specs_741 = { + sizeof(struct ReservedSubframePattern_ExtIEs), + offsetof(struct ReservedSubframePattern_ExtIEs, _asn_ctx), + asn_MAP_ReservedSubframePattern_ExtIEs_tag2el_741, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern_ExtIEs = { + "ReservedSubframePattern-ExtIEs", + "ReservedSubframePattern-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ReservedSubframePattern_ExtIEs_tags_741, + sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741) + /sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[0]), /* 1 */ + asn_DEF_ReservedSubframePattern_ExtIEs_tags_741, /* Same as above */ + sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741) + /sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReservedSubframePattern_ExtIEs_741, + 3, /* Elements count */ + &asn_SPC_ReservedSubframePattern_ExtIEs_specs_741 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_748 = { + sizeof(struct RLC_Status_ExtIEs__extensionValue), + offsetof(struct RLC_Status_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RLC_Status_ExtIEs__extensionValue, present), + sizeof(((struct RLC_Status_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_748 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_748 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RLC_Status_ExtIEs_745[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_746, memb_id_constraint_745 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_747, memb_criticality_constraint_745 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_748, + 0, + { 0, &asn_PER_memb_extensionValue_constr_748, memb_extensionValue_constraint_745 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLC_Status_ExtIEs_tags_745[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLC_Status_ExtIEs_tag2el_745[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_ExtIEs_specs_745 = { + sizeof(struct RLC_Status_ExtIEs), + offsetof(struct RLC_Status_ExtIEs, _asn_ctx), + asn_MAP_RLC_Status_ExtIEs_tag2el_745, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLC_Status_ExtIEs = { + "RLC-Status-ExtIEs", + "RLC-Status-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RLC_Status_ExtIEs_tags_745, + sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745) + /sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745[0]), /* 1 */ + asn_DEF_RLC_Status_ExtIEs_tags_745, /* Same as above */ + sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745) + /sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLC_Status_ExtIEs_745, + 3, /* Elements count */ + &asn_SPC_RLC_Status_ExtIEs_specs_745 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_752 = { + sizeof(struct RSRPMeasurementResult_ExtIEs__extensionValue), + offsetof(struct RSRPMeasurementResult_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RSRPMeasurementResult_ExtIEs__extensionValue, present), + sizeof(((struct RSRPMeasurementResult_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_752 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_752 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_ExtIEs_749[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_750, memb_id_constraint_749 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_751, memb_criticality_constraint_749 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_752, + 0, + { 0, &asn_PER_memb_extensionValue_constr_752, memb_extensionValue_constraint_749 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RSRPMeasurementResult_ExtIEs_tag2el_749[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749 = { + sizeof(struct RSRPMeasurementResult_ExtIEs), + offsetof(struct RSRPMeasurementResult_ExtIEs, _asn_ctx), + asn_MAP_RSRPMeasurementResult_ExtIEs_tag2el_749, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult_ExtIEs = { + "RSRPMeasurementResult-ExtIEs", + "RSRPMeasurementResult-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749, + sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749) + /sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[0]), /* 1 */ + asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749, /* Same as above */ + sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749) + /sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RSRPMeasurementResult_ExtIEs_749, + 3, /* Elements count */ + &asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_756[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs__extensionValue, choice.UEID), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_UEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_756[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 } /* UEID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_756 = { + sizeof(struct RSRPMRList_ExtIEs__extensionValue), + offsetof(struct RSRPMRList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RSRPMRList_ExtIEs__extensionValue, present), + sizeof(((struct RSRPMRList_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_756, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_756 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_756, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_756 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMRList_ExtIEs_753[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_754, memb_id_constraint_753 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RSRPMRList_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_755, memb_criticality_constraint_753 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_756, + select_RSRPMRList_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_756, memb_extensionValue_constraint_753 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMRList_ExtIEs_tags_753[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RSRPMRList_ExtIEs_tag2el_753[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RSRPMRList_ExtIEs_specs_753 = { + sizeof(struct RSRPMRList_ExtIEs), + offsetof(struct RSRPMRList_ExtIEs, _asn_ctx), + asn_MAP_RSRPMRList_ExtIEs_tag2el_753, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMRList_ExtIEs = { + "RSRPMRList-ExtIEs", + "RSRPMRList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RSRPMRList_ExtIEs_tags_753, + sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753) + /sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753[0]), /* 1 */ + asn_DEF_RSRPMRList_ExtIEs_tags_753, /* Same as above */ + sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753) + /sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RSRPMRList_ExtIEs_753, + 3, /* Elements count */ + &asn_SPC_RSRPMRList_ExtIEs_specs_753 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_760 = { + sizeof(struct S1TNLLoadIndicator_ExtIEs__extensionValue), + offsetof(struct S1TNLLoadIndicator_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1TNLLoadIndicator_ExtIEs__extensionValue, present), + sizeof(((struct S1TNLLoadIndicator_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_760 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_760 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_ExtIEs_757[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_758, memb_id_constraint_757 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_759, memb_criticality_constraint_757 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_760, + 0, + { 0, &asn_PER_memb_extensionValue_constr_760, memb_extensionValue_constraint_757 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1TNLLoadIndicator_ExtIEs_tag2el_757[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757 = { + sizeof(struct S1TNLLoadIndicator_ExtIEs), + offsetof(struct S1TNLLoadIndicator_ExtIEs, _asn_ctx), + asn_MAP_S1TNLLoadIndicator_ExtIEs_tag2el_757, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator_ExtIEs = { + "S1TNLLoadIndicator-ExtIEs", + "S1TNLLoadIndicator-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757, + sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757) + /sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[0]), /* 1 */ + asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757, /* Same as above */ + sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757) + /sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1TNLLoadIndicator_ExtIEs_757, + 3, /* Elements count */ + &asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_764 = { + sizeof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_764 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_764 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_762, memb_id_constraint_761 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_763, memb_criticality_constraint_761 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_764, + 0, + { 0, &asn_PER_memb_extensionValue_constr_764, memb_extensionValue_constraint_761 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_Item_ExtIEs_tag2el_761[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761 = { + sizeof(struct SecondaryRATUsageReport_Item_ExtIEs), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_Item_ExtIEs_tag2el_761, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs = { + "SecondaryRATUsageReport-Item-ExtIEs", + "SecondaryRATUsageReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761, + sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_768 = { + sizeof(struct ServedCell_ExtIEs__extensionValue), + offsetof(struct ServedCell_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCell_ExtIEs__extensionValue, present), + sizeof(((struct ServedCell_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_768 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_768 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCell_ExtIEs_765[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_766, memb_id_constraint_765 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_767, memb_criticality_constraint_765 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_768, + 0, + { 0, &asn_PER_memb_extensionValue_constr_768, memb_extensionValue_constraint_765 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCell_ExtIEs_tags_765[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_ExtIEs_tag2el_765[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_ExtIEs_specs_765 = { + sizeof(struct ServedCell_ExtIEs), + offsetof(struct ServedCell_ExtIEs, _asn_ctx), + asn_MAP_ServedCell_ExtIEs_tag2el_765, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_ExtIEs = { + "ServedCell-ExtIEs", + "ServedCell-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_ExtIEs_tags_765, + sizeof(asn_DEF_ServedCell_ExtIEs_tags_765) + /sizeof(asn_DEF_ServedCell_ExtIEs_tags_765[0]), /* 1 */ + asn_DEF_ServedCell_ExtIEs_tags_765, /* Same as above */ + sizeof(asn_DEF_ServedCell_ExtIEs_tags_765) + /sizeof(asn_DEF_ServedCell_ExtIEs_tags_765[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_ExtIEs_765, + 3, /* Elements count */ + &asn_SPC_ServedCell_ExtIEs_specs_765 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_772[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.Number_of_Antennaports), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Number_of_Antennaports, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Number-of-Antennaports" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.PRACH_Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PRACH_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PRACH-Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MBSFN_Subframe_Infolist), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Infolist, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MBSFN-Subframe-Infolist" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MBMS_Service_Area_Identity_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBMS_Service_Area_Identity_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MBMS-Service-Area-Identity-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MultibandInfoList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MultibandInfoList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MultibandInfoList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.FreqBandIndicatorPriority), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_FreqBandIndicatorPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "FreqBandIndicatorPriority" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.BandwidthReducedSI), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_BandwidthReducedSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BandwidthReducedSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.ProtectedEUTRAResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedEUTRAResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProtectedEUTRAResourceIndication" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_772[] = { 3, 0, 6, 7, 1, 2, 4, 5, 8 }; +static const unsigned asn_MAP_extensionValue_from_canonical_772[] = { 1, 4, 5, 0, 6, 7, 2, 3, 8 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_772[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 0 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 2 }, /* Number-of-Antennaports */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 1 }, /* FreqBandIndicatorPriority */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -2, 0 }, /* BandwidthReducedSI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 4 }, /* PRACH-Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 3 }, /* MBSFN-Subframe-Infolist */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 2 }, /* MBMS-Service-Area-Identity-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 1 }, /* MultibandInfoList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 0 } /* ProtectedEUTRAResourceIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_772 = { + sizeof(struct ServedCell_Information_ExtIEs__extensionValue), + offsetof(struct ServedCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct ServedCell_Information_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_772, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_772, + asn_MAP_extensionValue_from_canonical_772, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_772 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_772, + 9, /* Elements count */ + &asn_SPC_extensionValue_specs_772 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCell_Information_ExtIEs_769[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_770, memb_id_constraint_769 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ServedCell_Information_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_771, memb_criticality_constraint_769 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_772, + select_ServedCell_Information_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_772, memb_extensionValue_constraint_769 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCell_Information_ExtIEs_tags_769[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_Information_ExtIEs_tag2el_769[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_ExtIEs_specs_769 = { + sizeof(struct ServedCell_Information_ExtIEs), + offsetof(struct ServedCell_Information_ExtIEs, _asn_ctx), + asn_MAP_ServedCell_Information_ExtIEs_tag2el_769, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_Information_ExtIEs = { + "ServedCell-Information-ExtIEs", + "ServedCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_Information_ExtIEs_tags_769, + sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769) + /sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769[0]), /* 1 */ + asn_DEF_ServedCell_Information_ExtIEs_tags_769, /* Same as above */ + sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769) + /sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_Information_ExtIEs_769, + 3, /* Elements count */ + &asn_SPC_ServedCell_Information_ExtIEs_specs_769 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_776[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, choice.SgNBCoordinationAssistanceInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SgNBCoordinationAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBCoordinationAssistanceInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_776[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_776[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_776[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* SgNBCoordinationAssistanceInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_776 = { + sizeof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue), + offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, _asn_ctx), + offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, present), + sizeof(((struct SgNBResourceCoordinationInformationExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_776, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_776, + asn_MAP_extensionValue_from_canonical_776, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_776 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_776, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_776 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformationExtIEs_773[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_774, memb_id_constraint_773 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_SgNBResourceCoordinationInformationExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_775, memb_criticality_constraint_773 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_776, + select_SgNBResourceCoordinationInformationExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_776, memb_extensionValue_constraint_773 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBResourceCoordinationInformationExtIEs_tag2el_773[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773 = { + sizeof(struct SgNBResourceCoordinationInformationExtIEs), + offsetof(struct SgNBResourceCoordinationInformationExtIEs, _asn_ctx), + asn_MAP_SgNBResourceCoordinationInformationExtIEs_tag2el_773, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformationExtIEs = { + "SgNBResourceCoordinationInformationExtIEs", + "SgNBResourceCoordinationInformationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773, + sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773) + /sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[0]), /* 1 */ + asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773, /* Same as above */ + sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773) + /sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBResourceCoordinationInformationExtIEs_773, + 3, /* Elements count */ + &asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_780 = { + sizeof(struct SpecialSubframe_Info_ExtIEs__extensionValue), + offsetof(struct SpecialSubframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SpecialSubframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct SpecialSubframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_780 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_780 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_ExtIEs_777[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_778, memb_id_constraint_777 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_779, memb_criticality_constraint_777 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_780, + 0, + { 0, &asn_PER_memb_extensionValue_constr_780, memb_extensionValue_constraint_777 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpecialSubframe_Info_ExtIEs_tag2el_777[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777 = { + sizeof(struct SpecialSubframe_Info_ExtIEs), + offsetof(struct SpecialSubframe_Info_ExtIEs, _asn_ctx), + asn_MAP_SpecialSubframe_Info_ExtIEs_tag2el_777, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info_ExtIEs = { + "SpecialSubframe-Info-ExtIEs", + "SpecialSubframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777, + sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777) + /sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[0]), /* 1 */ + asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777, /* Same as above */ + sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777) + /sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SpecialSubframe_Info_ExtIEs_777, + 3, /* Elements count */ + &asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_784 = { + sizeof(struct SubbandCQI_ExtIEs__extensionValue), + offsetof(struct SubbandCQI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SubbandCQI_ExtIEs__extensionValue, present), + sizeof(((struct SubbandCQI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_784 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_784 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SubbandCQI_ExtIEs_781[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_782, memb_id_constraint_781 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_783, memb_criticality_constraint_781 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_784, + 0, + { 0, &asn_PER_memb_extensionValue_constr_784, memb_extensionValue_constraint_781 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQI_ExtIEs_tags_781[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQI_ExtIEs_tag2el_781[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_ExtIEs_specs_781 = { + sizeof(struct SubbandCQI_ExtIEs), + offsetof(struct SubbandCQI_ExtIEs, _asn_ctx), + asn_MAP_SubbandCQI_ExtIEs_tag2el_781, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQI_ExtIEs = { + "SubbandCQI-ExtIEs", + "SubbandCQI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQI_ExtIEs_tags_781, + sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781) + /sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781[0]), /* 1 */ + asn_DEF_SubbandCQI_ExtIEs_tags_781, /* Same as above */ + sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781) + /sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQI_ExtIEs_781, + 3, /* Elements count */ + &asn_SPC_SubbandCQI_ExtIEs_specs_781 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_788 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue, present), + sizeof(((struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_788 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_788 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785[] = { + { ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_786, memb_id_constraint_785 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_787, memb_criticality_constraint_785 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_788, + 0, + { 0, &asn_PER_memb_extensionValue_constr_788, memb_extensionValue_constraint_785 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tag2el_785[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, _asn_ctx), + asn_MAP_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tag2el_785, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs = { + "Subscription-Based-UE-DifferentiationInfo-ExtIEs", + "Subscription-Based-UE-DifferentiationInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785, + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[0]), /* 1 */ + asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785, /* Same as above */ + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785, + 3, /* Elements count */ + &asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_792 = { + sizeof(struct ScheduledCommunicationTime_ExtIEs__extensionValue), + offsetof(struct ScheduledCommunicationTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ScheduledCommunicationTime_ExtIEs__extensionValue, present), + sizeof(((struct ScheduledCommunicationTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_792 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_792 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_ExtIEs_789[] = { + { ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_790, memb_id_constraint_789 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_791, memb_criticality_constraint_789 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_792, + 0, + { 0, &asn_PER_memb_extensionValue_constr_792, memb_extensionValue_constraint_789 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ScheduledCommunicationTime_ExtIEs_tag2el_789[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789 = { + sizeof(struct ScheduledCommunicationTime_ExtIEs), + offsetof(struct ScheduledCommunicationTime_ExtIEs, _asn_ctx), + asn_MAP_ScheduledCommunicationTime_ExtIEs_tag2el_789, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime_ExtIEs = { + "ScheduledCommunicationTime-ExtIEs", + "ScheduledCommunicationTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789, + sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789) + /sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[0]), /* 1 */ + asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789, /* Same as above */ + sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789) + /sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ScheduledCommunicationTime_ExtIEs_789, + 3, /* Elements count */ + &asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_796 = { + sizeof(struct SubbandCQIItem_ExtIEs__extensionValue), + offsetof(struct SubbandCQIItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SubbandCQIItem_ExtIEs__extensionValue, present), + sizeof(((struct SubbandCQIItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_796 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_796 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SubbandCQIItem_ExtIEs_793[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_794, memb_id_constraint_793 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_795, memb_criticality_constraint_793 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_796, + 0, + { 0, &asn_PER_memb_extensionValue_constr_796, memb_extensionValue_constraint_793 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQIItem_ExtIEs_tags_793[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQIItem_ExtIEs_tag2el_793[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_ExtIEs_specs_793 = { + sizeof(struct SubbandCQIItem_ExtIEs), + offsetof(struct SubbandCQIItem_ExtIEs, _asn_ctx), + asn_MAP_SubbandCQIItem_ExtIEs_tag2el_793, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem_ExtIEs = { + "SubbandCQIItem-ExtIEs", + "SubbandCQIItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQIItem_ExtIEs_tags_793, + sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793) + /sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793[0]), /* 1 */ + asn_DEF_SubbandCQIItem_ExtIEs_tags_793, /* Same as above */ + sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793) + /sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQIItem_ExtIEs_793, + 3, /* Elements count */ + &asn_SPC_SubbandCQIItem_ExtIEs_specs_793 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_800 = { + sizeof(struct SULInformation_ExtIEs__extensionValue), + offsetof(struct SULInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SULInformation_ExtIEs__extensionValue, present), + sizeof(((struct SULInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_800 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_800 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SULInformation_ExtIEs_797[] = { + { ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_798, memb_id_constraint_797 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_799, memb_criticality_constraint_797 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_800, + 0, + { 0, &asn_PER_memb_extensionValue_constr_800, memb_extensionValue_constraint_797 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SULInformation_ExtIEs_tags_797[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SULInformation_ExtIEs_tag2el_797[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SULInformation_ExtIEs_specs_797 = { + sizeof(struct SULInformation_ExtIEs), + offsetof(struct SULInformation_ExtIEs, _asn_ctx), + asn_MAP_SULInformation_ExtIEs_tag2el_797, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SULInformation_ExtIEs = { + "SULInformation-ExtIEs", + "SULInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SULInformation_ExtIEs_tags_797, + sizeof(asn_DEF_SULInformation_ExtIEs_tags_797) + /sizeof(asn_DEF_SULInformation_ExtIEs_tags_797[0]), /* 1 */ + asn_DEF_SULInformation_ExtIEs_tags_797, /* Same as above */ + sizeof(asn_DEF_SULInformation_ExtIEs_tags_797) + /sizeof(asn_DEF_SULInformation_ExtIEs_tags_797[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SULInformation_ExtIEs_797, + 3, /* Elements count */ + &asn_SPC_SULInformation_ExtIEs_specs_797 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_804 = { + sizeof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue), + offsetof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue, present), + sizeof(((struct SupportedSULFreqBandItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_804 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_804 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_ExtIEs_801[] = { + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_802, memb_id_constraint_801 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_803, memb_criticality_constraint_801 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_804, + 0, + { 0, &asn_PER_memb_extensionValue_constr_804, memb_extensionValue_constraint_801 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_ExtIEs_tag2el_801[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801 = { + sizeof(struct SupportedSULFreqBandItem_ExtIEs), + offsetof(struct SupportedSULFreqBandItem_ExtIEs, _asn_ctx), + asn_MAP_SupportedSULFreqBandItem_ExtIEs_tag2el_801, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem_ExtIEs = { + "SupportedSULFreqBandItem-ExtIEs", + "SupportedSULFreqBandItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801, + sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801) + /sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[0]), /* 1 */ + asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801, /* Same as above */ + sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801) + /sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SupportedSULFreqBandItem_ExtIEs_801, + 3, /* Elements count */ + &asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_808 = { + sizeof(struct TABasedMDT_ExtIEs__extensionValue), + offsetof(struct TABasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TABasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct TABasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_808 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_808 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TABasedMDT_ExtIEs_805[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_806, memb_id_constraint_805 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_807, memb_criticality_constraint_805 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_808, + 0, + { 0, &asn_PER_memb_extensionValue_constr_808, memb_extensionValue_constraint_805 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TABasedMDT_ExtIEs_tags_805[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedMDT_ExtIEs_tag2el_805[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_ExtIEs_specs_805 = { + sizeof(struct TABasedMDT_ExtIEs), + offsetof(struct TABasedMDT_ExtIEs, _asn_ctx), + asn_MAP_TABasedMDT_ExtIEs_tag2el_805, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedMDT_ExtIEs = { + "TABasedMDT-ExtIEs", + "TABasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TABasedMDT_ExtIEs_tags_805, + sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805) + /sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805[0]), /* 1 */ + asn_DEF_TABasedMDT_ExtIEs_tags_805, /* Same as above */ + sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805) + /sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedMDT_ExtIEs_805, + 3, /* Elements count */ + &asn_SPC_TABasedMDT_ExtIEs_specs_805 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_812 = { + sizeof(struct TAIBasedMDT_ExtIEs__extensionValue), + offsetof(struct TAIBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAIBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct TAIBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_812 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_812 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAIBasedMDT_ExtIEs_809[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_810, memb_id_constraint_809 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_811, memb_criticality_constraint_809 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_812, + 0, + { 0, &asn_PER_memb_extensionValue_constr_812, memb_extensionValue_constraint_809 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIBasedMDT_ExtIEs_tags_809[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedMDT_ExtIEs_tag2el_809[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_ExtIEs_specs_809 = { + sizeof(struct TAIBasedMDT_ExtIEs), + offsetof(struct TAIBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_TAIBasedMDT_ExtIEs_tag2el_809, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT_ExtIEs = { + "TAIBasedMDT-ExtIEs", + "TAIBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedMDT_ExtIEs_tags_809, + sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809) + /sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809[0]), /* 1 */ + asn_DEF_TAIBasedMDT_ExtIEs_tags_809, /* Same as above */ + sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809) + /sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedMDT_ExtIEs_809, + 3, /* Elements count */ + &asn_SPC_TAIBasedMDT_ExtIEs_specs_809 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_816 = { + sizeof(struct TAI_Item_ExtIEs__extensionValue), + offsetof(struct TAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct TAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_816 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_816 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAI_Item_ExtIEs_813[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_814, memb_id_constraint_813 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_815, memb_criticality_constraint_813 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_816, + 0, + { 0, &asn_PER_memb_extensionValue_constr_816, memb_extensionValue_constraint_813 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAI_Item_ExtIEs_tags_813[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAI_Item_ExtIEs_tag2el_813[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_ExtIEs_specs_813 = { + sizeof(struct TAI_Item_ExtIEs), + offsetof(struct TAI_Item_ExtIEs, _asn_ctx), + asn_MAP_TAI_Item_ExtIEs_tag2el_813, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAI_Item_ExtIEs = { + "TAI-Item-ExtIEs", + "TAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAI_Item_ExtIEs_tags_813, + sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813) + /sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813[0]), /* 1 */ + asn_DEF_TAI_Item_ExtIEs_tags_813, /* Same as above */ + sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813) + /sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAI_Item_ExtIEs_813, + 3, /* Elements count */ + &asn_SPC_TAI_Item_ExtIEs_specs_813 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_820 = { + sizeof(struct TABasedQMC_ExtIEs__extensionValue), + offsetof(struct TABasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TABasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct TABasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_820 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_820 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TABasedQMC_ExtIEs_817[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_818, memb_id_constraint_817 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_819, memb_criticality_constraint_817 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_820, + 0, + { 0, &asn_PER_memb_extensionValue_constr_820, memb_extensionValue_constraint_817 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TABasedQMC_ExtIEs_tags_817[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedQMC_ExtIEs_tag2el_817[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_ExtIEs_specs_817 = { + sizeof(struct TABasedQMC_ExtIEs), + offsetof(struct TABasedQMC_ExtIEs, _asn_ctx), + asn_MAP_TABasedQMC_ExtIEs_tag2el_817, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedQMC_ExtIEs = { + "TABasedQMC-ExtIEs", + "TABasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TABasedQMC_ExtIEs_tags_817, + sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817) + /sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817[0]), /* 1 */ + asn_DEF_TABasedQMC_ExtIEs_tags_817, /* Same as above */ + sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817) + /sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedQMC_ExtIEs_817, + 3, /* Elements count */ + &asn_SPC_TABasedQMC_ExtIEs_specs_817 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_824 = { + sizeof(struct TAIBasedQMC_ExtIEs__extensionValue), + offsetof(struct TAIBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAIBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct TAIBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_824 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_824 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAIBasedQMC_ExtIEs_821[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_822, memb_id_constraint_821 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_823, memb_criticality_constraint_821 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_824, + 0, + { 0, &asn_PER_memb_extensionValue_constr_824, memb_extensionValue_constraint_821 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIBasedQMC_ExtIEs_tags_821[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedQMC_ExtIEs_tag2el_821[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_ExtIEs_specs_821 = { + sizeof(struct TAIBasedQMC_ExtIEs), + offsetof(struct TAIBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_TAIBasedQMC_ExtIEs_tag2el_821, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC_ExtIEs = { + "TAIBasedQMC-ExtIEs", + "TAIBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedQMC_ExtIEs_tags_821, + sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821) + /sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821[0]), /* 1 */ + asn_DEF_TAIBasedQMC_ExtIEs_tags_821, /* Same as above */ + sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821) + /sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedQMC_ExtIEs_821, + 3, /* Elements count */ + &asn_SPC_TAIBasedQMC_ExtIEs_specs_821 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_828[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.AdditionalSpecialSubframe_Info), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalSpecialSubframe-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.AdditionalSpecialSubframeExtension_Info), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframeExtension_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalSpecialSubframeExtension-Info" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_828[] = { 1, 0, 2 }; +static const unsigned asn_MAP_extensionValue_from_canonical_828[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_828[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* AdditionalSpecialSubframe-Info */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* AdditionalSpecialSubframeExtension-Info */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_828 = { + sizeof(struct TDD_Info_ExtIEs__extensionValue), + offsetof(struct TDD_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_Info_ExtIEs__extensionValue, present), + sizeof(((struct TDD_Info_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_828, + 3, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_828, + asn_MAP_extensionValue_from_canonical_828, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_828 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_828, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_828 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_Info_ExtIEs_825[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_826, memb_id_constraint_825 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_TDD_Info_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_827, memb_criticality_constraint_825 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_828, + select_TDD_Info_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_828, memb_extensionValue_constraint_825 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_Info_ExtIEs_tags_825[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_Info_ExtIEs_tag2el_825[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_ExtIEs_specs_825 = { + sizeof(struct TDD_Info_ExtIEs), + offsetof(struct TDD_Info_ExtIEs, _asn_ctx), + asn_MAP_TDD_Info_ExtIEs_tag2el_825, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_Info_ExtIEs = { + "TDD-Info-ExtIEs", + "TDD-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_Info_ExtIEs_tags_825, + sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825) + /sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825[0]), /* 1 */ + asn_DEF_TDD_Info_ExtIEs_tags_825, /* Same as above */ + sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825) + /sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_Info_ExtIEs_825, + 3, /* Elements count */ + &asn_SPC_TDD_Info_ExtIEs_specs_825 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_832[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs__extensionValue, choice.MDT_Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDT_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs__extensionValue, choice.UEAppLayerMeasConfig), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAppLayerMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAppLayerMeasConfig" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_832[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* MDT-Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* UEAppLayerMeasConfig */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_832 = { + sizeof(struct TraceActivation_ExtIEs__extensionValue), + offsetof(struct TraceActivation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TraceActivation_ExtIEs__extensionValue, present), + sizeof(((struct TraceActivation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_832, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_832 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_832, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_832 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TraceActivation_ExtIEs_829[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_830, memb_id_constraint_829 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_TraceActivation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_831, memb_criticality_constraint_829 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_832, + select_TraceActivation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_832, memb_extensionValue_constraint_829 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TraceActivation_ExtIEs_tags_829[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TraceActivation_ExtIEs_tag2el_829[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_ExtIEs_specs_829 = { + sizeof(struct TraceActivation_ExtIEs), + offsetof(struct TraceActivation_ExtIEs, _asn_ctx), + asn_MAP_TraceActivation_ExtIEs_tag2el_829, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TraceActivation_ExtIEs = { + "TraceActivation-ExtIEs", + "TraceActivation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TraceActivation_ExtIEs_tags_829, + sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829) + /sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829[0]), /* 1 */ + asn_DEF_TraceActivation_ExtIEs_tags_829, /* Same as above */ + sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829) + /sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TraceActivation_ExtIEs_829, + 3, /* Elements count */ + &asn_SPC_TraceActivation_ExtIEs_specs_829 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_836 = { + sizeof(struct Tunnel_Information_ExtIEs__extensionValue), + offsetof(struct Tunnel_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Tunnel_Information_ExtIEs__extensionValue, present), + sizeof(((struct Tunnel_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_836 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_836 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Tunnel_Information_ExtIEs_833[] = { + { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_834, memb_id_constraint_833 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_835, memb_criticality_constraint_833 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_836, + 0, + { 0, &asn_PER_memb_extensionValue_constr_836, memb_extensionValue_constraint_833 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Tunnel_Information_ExtIEs_tags_833[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Tunnel_Information_ExtIEs_tag2el_833[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_ExtIEs_specs_833 = { + sizeof(struct Tunnel_Information_ExtIEs), + offsetof(struct Tunnel_Information_ExtIEs, _asn_ctx), + asn_MAP_Tunnel_Information_ExtIEs_tag2el_833, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Tunnel_Information_ExtIEs = { + "Tunnel-Information-ExtIEs", + "Tunnel-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Tunnel_Information_ExtIEs_tags_833, + sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833) + /sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833[0]), /* 1 */ + asn_DEF_Tunnel_Information_ExtIEs_tags_833, /* Same as above */ + sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833) + /sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Tunnel_Information_ExtIEs_833, + 3, /* Elements count */ + &asn_SPC_Tunnel_Information_ExtIEs_specs_833 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_840[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, choice.ExtendedBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ExtendedBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_840[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* ExtendedBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_840 = { + sizeof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, present), + sizeof(((struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_840, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_840 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_840, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_840 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_838, memb_id_constraint_837 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_UEAggregate_MaximumBitrate_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_839, memb_criticality_constraint_837 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_840, + select_UEAggregate_MaximumBitrate_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_840, memb_extensionValue_constraint_837 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAggregate_MaximumBitrate_ExtIEs_tag2el_837[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837 = { + sizeof(struct UEAggregate_MaximumBitrate_ExtIEs), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, _asn_ctx), + asn_MAP_UEAggregate_MaximumBitrate_ExtIEs_tag2el_837, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs = { + "UEAggregate-MaximumBitrate-ExtIEs", + "UEAggregate-MaximumBitrate-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837, + sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837) + /sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[0]), /* 1 */ + asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837, /* Same as above */ + sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837) + /sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837, + 3, /* Elements count */ + &asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_844[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, choice.ServiceType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ServiceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServiceType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_844[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* ServiceType */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_844 = { + sizeof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue), + offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, present), + sizeof(((struct UEAppLayerMeasConfig_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_844, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_844 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_844, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_844 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_ExtIEs_841[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_842, memb_id_constraint_841 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_UEAppLayerMeasConfig_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_843, memb_criticality_constraint_841 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_844, + select_UEAppLayerMeasConfig_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_844, memb_extensionValue_constraint_841 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAppLayerMeasConfig_ExtIEs_tag2el_841[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841 = { + sizeof(struct UEAppLayerMeasConfig_ExtIEs), + offsetof(struct UEAppLayerMeasConfig_ExtIEs, _asn_ctx), + asn_MAP_UEAppLayerMeasConfig_ExtIEs_tag2el_841, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig_ExtIEs = { + "UEAppLayerMeasConfig-ExtIEs", + "UEAppLayerMeasConfig-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841, + sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841) + /sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[0]), /* 1 */ + asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841, /* Same as above */ + sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841) + /sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAppLayerMeasConfig_ExtIEs_841, + 3, /* Elements count */ + &asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_848 = { + sizeof(struct UESecurityCapabilities_ExtIEs__extensionValue), + offsetof(struct UESecurityCapabilities_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UESecurityCapabilities_ExtIEs__extensionValue, present), + sizeof(((struct UESecurityCapabilities_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_848 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_848 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UESecurityCapabilities_ExtIEs_845[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_846, memb_id_constraint_845 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_847, memb_criticality_constraint_845 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_848, + 0, + { 0, &asn_PER_memb_extensionValue_constr_848, memb_extensionValue_constraint_845 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UESecurityCapabilities_ExtIEs_tag2el_845[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_ExtIEs_specs_845 = { + sizeof(struct UESecurityCapabilities_ExtIEs), + offsetof(struct UESecurityCapabilities_ExtIEs, _asn_ctx), + asn_MAP_UESecurityCapabilities_ExtIEs_tag2el_845, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities_ExtIEs = { + "UESecurityCapabilities-ExtIEs", + "UESecurityCapabilities-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UESecurityCapabilities_ExtIEs_tags_845, + sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845) + /sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[0]), /* 1 */ + asn_DEF_UESecurityCapabilities_ExtIEs_tags_845, /* Same as above */ + sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845) + /sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESecurityCapabilities_ExtIEs_845, + 3, /* Elements count */ + &asn_SPC_UESecurityCapabilities_ExtIEs_specs_845 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_852 = { + sizeof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue, present), + sizeof(((struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_852 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_852 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_850, memb_id_constraint_849 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_851, memb_criticality_constraint_849 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_852, + 0, + { 0, &asn_PER_memb_extensionValue_constr_852, memb_extensionValue_constraint_849 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tag2el_849[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849 = { + sizeof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, _asn_ctx), + asn_MAP_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tag2el_849, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs = { + "UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs", + "UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849, + sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849) + /sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[0]), /* 1 */ + asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849, /* Same as above */ + sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849) + /sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849, + 3, /* Elements count */ + &asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_856 = { + sizeof(struct UEsToBeResetList_Item_ExtIEs__extensionValue), + offsetof(struct UEsToBeResetList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEsToBeResetList_Item_ExtIEs__extensionValue, present), + sizeof(((struct UEsToBeResetList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_856 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_856 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_ExtIEs_853[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_854, memb_id_constraint_853 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_855, memb_criticality_constraint_853 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_856, + 0, + { 0, &asn_PER_memb_extensionValue_constr_856, memb_extensionValue_constraint_853 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEsToBeResetList_Item_ExtIEs_tag2el_853[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853 = { + sizeof(struct UEsToBeResetList_Item_ExtIEs), + offsetof(struct UEsToBeResetList_Item_ExtIEs, _asn_ctx), + asn_MAP_UEsToBeResetList_Item_ExtIEs_tag2el_853, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item_ExtIEs = { + "UEsToBeResetList-Item-ExtIEs", + "UEsToBeResetList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853, + sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853) + /sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[0]), /* 1 */ + asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853) + /sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEsToBeResetList_Item_ExtIEs_853, + 3, /* Elements count */ + &asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_860 = { + sizeof(struct ULandDLSharing_ExtIEs__extensionValue), + offsetof(struct ULandDLSharing_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULandDLSharing_ExtIEs__extensionValue, present), + sizeof(((struct ULandDLSharing_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_860 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_860 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULandDLSharing_ExtIEs_857[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_858, memb_id_constraint_857 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_859, memb_criticality_constraint_857 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_860, + 0, + { 0, &asn_PER_memb_extensionValue_constr_860, memb_extensionValue_constraint_857 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULandDLSharing_ExtIEs_tags_857[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULandDLSharing_ExtIEs_tag2el_857[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_ExtIEs_specs_857 = { + sizeof(struct ULandDLSharing_ExtIEs), + offsetof(struct ULandDLSharing_ExtIEs, _asn_ctx), + asn_MAP_ULandDLSharing_ExtIEs_tag2el_857, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULandDLSharing_ExtIEs = { + "ULandDLSharing-ExtIEs", + "ULandDLSharing-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULandDLSharing_ExtIEs_tags_857, + sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857) + /sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857[0]), /* 1 */ + asn_DEF_ULandDLSharing_ExtIEs_tags_857, /* Same as above */ + sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857) + /sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULandDLSharing_ExtIEs_857, + 3, /* Elements count */ + &asn_SPC_ULandDLSharing_ExtIEs_specs_857 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_864 = { + sizeof(struct ULConfiguration_ExtIEs__extensionValue), + offsetof(struct ULConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct ULConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_864 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_864 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULConfiguration_ExtIEs_861[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_862, memb_id_constraint_861 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_863, memb_criticality_constraint_861 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_864, + 0, + { 0, &asn_PER_memb_extensionValue_constr_864, memb_extensionValue_constraint_861 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULConfiguration_ExtIEs_tags_861[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULConfiguration_ExtIEs_tag2el_861[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_ExtIEs_specs_861 = { + sizeof(struct ULConfiguration_ExtIEs), + offsetof(struct ULConfiguration_ExtIEs, _asn_ctx), + asn_MAP_ULConfiguration_ExtIEs_tag2el_861, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULConfiguration_ExtIEs = { + "ULConfiguration-ExtIEs", + "ULConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULConfiguration_ExtIEs_tags_861, + sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861) + /sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861[0]), /* 1 */ + asn_DEF_ULConfiguration_ExtIEs_tags_861, /* Same as above */ + sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861) + /sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULConfiguration_ExtIEs_861, + 3, /* Elements count */ + &asn_SPC_ULConfiguration_ExtIEs_specs_861 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_868 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue, present), + sizeof(((struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_868 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_868 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865[] = { + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_866, memb_id_constraint_865 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_867, memb_criticality_constraint_865 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_868, + 0, + { 0, &asn_PER_memb_extensionValue_constr_868, memb_extensionValue_constraint_865 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tag2el_865[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, _asn_ctx), + asn_MAP_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tag2el_865, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs = { + "UL-HighInterferenceIndicationInfo-Item-ExtIEs", + "UL-HighInterferenceIndicationInfo-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865, + 3, /* Elements count */ + &asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_872 = { + sizeof(struct ULOnlySharing_ExtIEs__extensionValue), + offsetof(struct ULOnlySharing_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULOnlySharing_ExtIEs__extensionValue, present), + sizeof(((struct ULOnlySharing_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_872 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_872 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULOnlySharing_ExtIEs_869[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_870, memb_id_constraint_869 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_871, memb_criticality_constraint_869 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_872, + 0, + { 0, &asn_PER_memb_extensionValue_constr_872, memb_extensionValue_constraint_869 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULOnlySharing_ExtIEs_tags_869[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULOnlySharing_ExtIEs_tag2el_869[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_ExtIEs_specs_869 = { + sizeof(struct ULOnlySharing_ExtIEs), + offsetof(struct ULOnlySharing_ExtIEs, _asn_ctx), + asn_MAP_ULOnlySharing_ExtIEs_tag2el_869, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULOnlySharing_ExtIEs = { + "ULOnlySharing-ExtIEs", + "ULOnlySharing-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULOnlySharing_ExtIEs_tags_869, + sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869) + /sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869[0]), /* 1 */ + asn_DEF_ULOnlySharing_ExtIEs_tags_869, /* Same as above */ + sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869) + /sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULOnlySharing_ExtIEs_869, + 3, /* Elements count */ + &asn_SPC_ULOnlySharing_ExtIEs_specs_869 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_876 = { + sizeof(struct UsableABSInformationFDD_ExtIEs__extensionValue), + offsetof(struct UsableABSInformationFDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UsableABSInformationFDD_ExtIEs__extensionValue, present), + sizeof(((struct UsableABSInformationFDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_876 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_876 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_ExtIEs_873[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_874, memb_id_constraint_873 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_875, memb_criticality_constraint_873 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_876, + 0, + { 0, &asn_PER_memb_extensionValue_constr_876, memb_extensionValue_constraint_873 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationFDD_ExtIEs_tag2el_873[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873 = { + sizeof(struct UsableABSInformationFDD_ExtIEs), + offsetof(struct UsableABSInformationFDD_ExtIEs, _asn_ctx), + asn_MAP_UsableABSInformationFDD_ExtIEs_tag2el_873, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD_ExtIEs = { + "UsableABSInformationFDD-ExtIEs", + "UsableABSInformationFDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873, + sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873) + /sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[0]), /* 1 */ + asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873) + /sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationFDD_ExtIEs_873, + 3, /* Elements count */ + &asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_880 = { + sizeof(struct UsableABSInformationTDD_ExtIEs__extensionValue), + offsetof(struct UsableABSInformationTDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UsableABSInformationTDD_ExtIEs__extensionValue, present), + sizeof(((struct UsableABSInformationTDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_880 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_880 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_ExtIEs_877[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_878, memb_id_constraint_877 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_879, memb_criticality_constraint_877 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_880, + 0, + { 0, &asn_PER_memb_extensionValue_constr_880, memb_extensionValue_constraint_877 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationTDD_ExtIEs_tag2el_877[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877 = { + sizeof(struct UsableABSInformationTDD_ExtIEs), + offsetof(struct UsableABSInformationTDD_ExtIEs, _asn_ctx), + asn_MAP_UsableABSInformationTDD_ExtIEs_tag2el_877, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD_ExtIEs = { + "UsableABSInformationTDD-ExtIEs", + "UsableABSInformationTDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877, + sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877) + /sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[0]), /* 1 */ + asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877) + /sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationTDD_ExtIEs_877, + 3, /* Elements count */ + &asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_884 = { + sizeof(struct V2XServicesAuthorized_ExtIEs__extensionValue), + offsetof(struct V2XServicesAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct V2XServicesAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct V2XServicesAuthorized_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_884 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_884 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_ExtIEs_881[] = { + { ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_882, memb_id_constraint_881 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_883, memb_criticality_constraint_881 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_884, + 0, + { 0, &asn_PER_memb_extensionValue_constr_884, memb_extensionValue_constraint_881 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_V2XServicesAuthorized_ExtIEs_tag2el_881[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881 = { + sizeof(struct V2XServicesAuthorized_ExtIEs), + offsetof(struct V2XServicesAuthorized_ExtIEs, _asn_ctx), + asn_MAP_V2XServicesAuthorized_ExtIEs_tag2el_881, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized_ExtIEs = { + "V2XServicesAuthorized-ExtIEs", + "V2XServicesAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881, + sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881) + /sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[0]), /* 1 */ + asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881, /* Same as above */ + sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881) + /sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_V2XServicesAuthorized_ExtIEs_881, + 3, /* Elements count */ + &asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_888 = { + sizeof(struct WidebandCQI_ExtIEs__extensionValue), + offsetof(struct WidebandCQI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct WidebandCQI_ExtIEs__extensionValue, present), + sizeof(((struct WidebandCQI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_888 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_888 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WidebandCQI_ExtIEs_885[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_886, memb_id_constraint_885 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_887, memb_criticality_constraint_885 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_888, + 0, + { 0, &asn_PER_memb_extensionValue_constr_888, memb_extensionValue_constraint_885 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_WidebandCQI_ExtIEs_tags_885[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQI_ExtIEs_tag2el_885[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_ExtIEs_specs_885 = { + sizeof(struct WidebandCQI_ExtIEs), + offsetof(struct WidebandCQI_ExtIEs, _asn_ctx), + asn_MAP_WidebandCQI_ExtIEs_tag2el_885, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQI_ExtIEs = { + "WidebandCQI-ExtIEs", + "WidebandCQI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_WidebandCQI_ExtIEs_tags_885, + sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885) + /sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885[0]), /* 1 */ + asn_DEF_WidebandCQI_ExtIEs_tags_885, /* Same as above */ + sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885) + /sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WidebandCQI_ExtIEs_885, + 3, /* Elements count */ + &asn_SPC_WidebandCQI_ExtIEs_specs_885 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_892 = { + sizeof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue), + offsetof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct WLANMeasurementConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_892 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_892 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_ExtIEs_889[] = { + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_890, memb_id_constraint_889 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_891, memb_criticality_constraint_889 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_892, + 0, + { 0, &asn_PER_memb_extensionValue_constr_892, memb_extensionValue_constraint_889 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WLANMeasurementConfiguration_ExtIEs_tag2el_889[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889 = { + sizeof(struct WLANMeasurementConfiguration_ExtIEs), + offsetof(struct WLANMeasurementConfiguration_ExtIEs, _asn_ctx), + asn_MAP_WLANMeasurementConfiguration_ExtIEs_tag2el_889, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration_ExtIEs = { + "WLANMeasurementConfiguration-ExtIEs", + "WLANMeasurementConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889, + sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889) + /sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[0]), /* 1 */ + asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889, /* Same as above */ + sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889) + /sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WLANMeasurementConfiguration_ExtIEs_889, + 3, /* Elements count */ + &asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.h b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.h new file mode 100644 index 0000000..d7f3a5a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolExtensionField.h @@ -0,0 +1,5182 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolExtensionField_H_ +#define _ProtocolExtensionField_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "ManagementBasedMDTallowed.h" +#include "Presence.h" +#include "MDTPLMNList.h" +#include "UESidelinkAggregateMaximumBitRate.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "BearerType.h" +#include "ReceiveStatusOfULPDCPSDUsExtended.h" +#include "COUNTValueExtended.h" +#include "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" +#include "COUNTvaluePDCP-SNlength18.h" +#include "ABSInformation.h" +#include "InvokeIndication.h" +#include "SubframeAssignment.h" +#include "ExtendedULInterferenceOverloadInfo.h" +#include "CoMPInformation.h" +#include "DynamicDLTransmissionInformation.h" +#include "DeactivationIndication.h" +#include "CompositeAvailableCapacityGroup.h" +#include "ABS-Status.h" +#include "RSRPMRList.h" +#include "CSIReportList.h" +#include "CellReportingIndicator.h" +#include "Correlation-ID.h" +#include "GTPtunnelEndpoint.h" +#include "DL-Forwarding.h" +#include "RLCMode.h" +#include "PDCPSnLength.h" +#include "DuplicationActivation.h" +#include "LCID.h" +#include "SubscriberProfileIDforRFP.h" +#include "RLC-Status.h" +#include "NewDRBIDrequest.h" +#include "Packet-LossRate.h" +#include "EARFCNExtension.h" +#include "OffsetOfNbiotChannelNumberToEARFCN.h" +#include "NRS-NSSS-PowerOffset.h" +#include "NSSS-NumOccasionDifferentPrecoder.h" +#include "ExtendedBitRate.h" +#include "NRrestrictioninEPSasSecondaryRAT.h" +#include "CNTypeRestrictions.h" +#include "NRrestrictionin5GS.h" +#include "Time-UE-StayedInCell-EnhancedGranularity.h" +#include "Cause.h" +#include "M3Configuration.h" +#include "M4Configuration.h" +#include "M5Configuration.h" +#include "MDT-Location-Info.h" +#include "M6Configuration.h" +#include "M7Configuration.h" +#include "BluetoothMeasurementConfiguration.h" +#include "WLANMeasurementConfiguration.h" +#include "NRCGI.h" +#include "MeNBCoordinationAssistanceInformation.h" +#include "TAC.h" +#include "ProSeUEtoNetworkRelaying.h" +#include "DL-scheduling-PDCCH-CCE-usage.h" +#include "UL-scheduling-PDCCH-CCE-usage.h" +#include "EnhancedRNTP.h" +#include "UEID.h" +#include "Number-of-Antennaports.h" +#include "PRACH-Configuration.h" +#include "MBSFN-Subframe-Infolist.h" +#include "CSG-Id.h" +#include "MBMS-Service-Area-Identity-List.h" +#include "MultibandInfoList.h" +#include "FreqBandIndicatorPriority.h" +#include "BandwidthReducedSI.h" +#include "ProtectedEUTRAResourceIndication.h" +#include "ECGI.h" +#include "SgNBCoordinationAssistanceInformation.h" +#include "AdditionalSpecialSubframe-Info.h" +#include "AdditionalSpecialSubframeExtension-Info.h" +#include "MDT-Configuration.h" +#include "UEAppLayerMeasConfig.h" +#include "ServiceType.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UE_ContextInformation_ExtIEs__extensionValue_PR { + UE_ContextInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformation_ExtIEs__extensionValue_PR_ManagementBasedMDTallowed, + UE_ContextInformation_ExtIEs__extensionValue_PR_MDTPLMNList, + UE_ContextInformation_ExtIEs__extensionValue_PR_UESidelinkAggregateMaximumBitRate +} UE_ContextInformation_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR_BearerType +} E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_Item_ExtIEs__extensionValue_PR { + E_RABs_Admitted_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR { + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsExtended, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTValueExtended, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTvaluePDCP_SNlength18 +} E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR; +typedef enum CellInformation_Item_ExtIEs__extensionValue_PR { + CellInformation_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + CellInformation_Item_ExtIEs__extensionValue_PR_ABSInformation, + CellInformation_Item_ExtIEs__extensionValue_PR_InvokeIndication, + CellInformation_Item_ExtIEs__extensionValue_PR_SubframeAssignment, + CellInformation_Item_ExtIEs__extensionValue_PR_ExtendedULInterferenceOverloadInfo, + CellInformation_Item_ExtIEs__extensionValue_PR_CoMPInformation, + CellInformation_Item_ExtIEs__extensionValue_PR_DynamicDLTransmissionInformation +} CellInformation_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCellsToModify_Item_ExtIEs__extensionValue_PR { + ServedCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ServedCellsToModify_Item_ExtIEs__extensionValue_PR_DeactivationIndication +} ServedCellsToModify_Item_ExtIEs__extensionValue_PR; +typedef enum CellToReport_Item_ExtIEs__extensionValue_PR { + CellToReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellToReport_Item_ExtIEs__extensionValue_PR; +typedef enum MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR { + MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR; +typedef enum MeasurementFailureCause_Item_ExtIEs__extensionValue_PR { + MeasurementFailureCause_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MeasurementFailureCause_Item_ExtIEs__extensionValue_PR; +typedef enum CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR { + CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR; +typedef enum CellMeasurementResult_Item_ExtIEs__extensionValue_PR { + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CompositeAvailableCapacityGroup, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_ABS_Status, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_RSRPMRList, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CSIReportList, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CellReportingIndicator +} CellMeasurementResult_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCellsToActivate_Item_ExtIEs__extensionValue_PR { + ServedCellsToActivate_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedCellsToActivate_Item_ExtIEs__extensionValue_PR; +typedef enum ActivatedCellList_Item_ExtIEs__extensionValue_PR { + ActivatedCellList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ActivatedCellList_Item_ExtIEs__extensionValue_PR; +typedef enum RNL_Header_Item_ExtIEs__extensionValue_PR { + RNL_Header_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RNL_Header_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_Correlation_ID +} E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR; +typedef enum ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR { + ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR; +typedef enum ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR { + ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR { + UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_Correlation_ID +} E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR { + E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR { + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR_UESidelinkAggregateMaximumBitRate +} UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_GTPtunnelEndpoint, + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_DL_Forwarding +} E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_DuplicationActivation +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR { + ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR; +typedef enum ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR { + ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR { + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR_SubscriberProfileIDforRFP +} UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_DuplicationActivation +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLC_Status +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_GTPtunnelEndpoint +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_GTPtunnelEndpoint, + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_RLC_Status +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NewDRBIDrequest +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_RLC_Status, + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR { + E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR { + ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR; +typedef enum En_gNBServedCells_ExtIEs__extensionValue_PR { + En_gNBServedCells_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} En_gNBServedCells_ExtIEs__extensionValue_PR; +typedef enum ServedNRCell_Information_ExtIEs__extensionValue_PR { + ServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR { + FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR { + FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR { + TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR { + TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum NRNeighbour_Information_ExtIEs__extensionValue_PR { + NRNeighbour_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRNeighbour_Information_ExtIEs__extensionValue_PR; +typedef enum Limited_list_ExtIEs__extensionValue_PR { + Limited_list_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Limited_list_ExtIEs__extensionValue_PR; +typedef enum ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR { + ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR; +typedef enum ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR { + ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR; +typedef enum ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR { + ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR; +typedef enum ActivatedNRCellList_Item_ExtIEs__extensionValue_PR { + ActivatedNRCellList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ActivatedNRCellList_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR { + E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR; +typedef enum ABSInformationFDD_ExtIEs__extensionValue_PR { + ABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABSInformationFDD_ExtIEs__extensionValue_PR; +typedef enum ABSInformationTDD_ExtIEs__extensionValue_PR { + ABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABSInformationTDD_ExtIEs__extensionValue_PR; +typedef enum ABS_Status_ExtIEs__extensionValue_PR { + ABS_Status_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABS_Status_ExtIEs__extensionValue_PR; +typedef enum AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR { + AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR; +typedef enum AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR { + AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR; +typedef enum AllocationAndRetentionPriority_ExtIEs__extensionValue_PR { + AllocationAndRetentionPriority_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AllocationAndRetentionPriority_ExtIEs__extensionValue_PR; +typedef enum AS_SecurityInformation_ExtIEs__extensionValue_PR { + AS_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AS_SecurityInformation_ExtIEs__extensionValue_PR; +typedef enum BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR { + BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR; +typedef enum CellBasedMDT_ExtIEs__extensionValue_PR { + CellBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellBasedMDT_ExtIEs__extensionValue_PR; +typedef enum CellBasedQMC_ExtIEs__extensionValue_PR { + CellBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellBasedQMC_ExtIEs__extensionValue_PR; +typedef enum CellReplacingInfo_ExtIEs__extensionValue_PR { + CellReplacingInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellReplacingInfo_ExtIEs__extensionValue_PR; +typedef enum CellType_ExtIEs__extensionValue_PR { + CellType_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellType_ExtIEs__extensionValue_PR; +typedef enum CNTypeRestrictionsItem_ExtIEs__extensionValue_PR { + CNTypeRestrictionsItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CNTypeRestrictionsItem_ExtIEs__extensionValue_PR; +typedef enum CoMPHypothesisSetItem_ExtIEs__extensionValue_PR { + CoMPHypothesisSetItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPHypothesisSetItem_ExtIEs__extensionValue_PR; +typedef enum CoMPInformation_ExtIEs__extensionValue_PR { + CoMPInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformation_ExtIEs__extensionValue_PR; +typedef enum CoMPInformationItem_ExtIEs__extensionValue_PR { + CoMPInformationItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformationItem_ExtIEs__extensionValue_PR; +typedef enum CoMPInformationStartTime_ExtIEs__extensionValue_PR { + CoMPInformationStartTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformationStartTime_ExtIEs__extensionValue_PR; +typedef enum CompositeAvailableCapacity_ExtIEs__extensionValue_PR { + CompositeAvailableCapacity_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompositeAvailableCapacity_ExtIEs__extensionValue_PR; +typedef enum CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR { + CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR; +typedef enum COUNTvalue_ExtIEs__extensionValue_PR { + COUNTvalue_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTvalue_ExtIEs__extensionValue_PR; +typedef enum COUNTValueExtended_ExtIEs__extensionValue_PR { + COUNTValueExtended_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTValueExtended_ExtIEs__extensionValue_PR; +typedef enum COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR { + COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR; +typedef enum CriticalityDiagnostics_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CriticalityDiagnostics_ExtIEs__extensionValue_PR; +typedef enum CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR; +typedef enum CSIReportList_ExtIEs__extensionValue_PR { + CSIReportList_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportList_ExtIEs__extensionValue_PR; +typedef enum CSIReportPerCSIProcess_ExtIEs__extensionValue_PR { + CSIReportPerCSIProcess_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportPerCSIProcess_ExtIEs__extensionValue_PR; +typedef enum CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR { + CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR; +typedef enum DataTrafficResourceIndication_ExtIEs__extensionValue_PR { + DataTrafficResourceIndication_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DataTrafficResourceIndication_ExtIEs__extensionValue_PR; +typedef enum DeliveryStatus_ExtIEs__extensionValue_PR { + DeliveryStatus_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DeliveryStatus_ExtIEs__extensionValue_PR; +typedef enum DynamicNAICSInformation_ExtIEs__extensionValue_PR { + DynamicNAICSInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DynamicNAICSInformation_ExtIEs__extensionValue_PR; +typedef enum ECGI_ExtIEs__extensionValue_PR { + ECGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ECGI_ExtIEs__extensionValue_PR; +typedef enum EnhancedRNTP_ExtIEs__extensionValue_PR { + EnhancedRNTP_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EnhancedRNTP_ExtIEs__extensionValue_PR; +typedef enum EnhancedRNTPStartTime_ExtIEs__extensionValue_PR { + EnhancedRNTPStartTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EnhancedRNTPStartTime_ExtIEs__extensionValue_PR; +typedef enum EN_DC_ResourceConfigurationExtIEs__extensionValue_PR { + EN_DC_ResourceConfigurationExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EN_DC_ResourceConfigurationExtIEs__extensionValue_PR; +typedef enum ERABActivityNotifyItem_ExtIEs__extensionValue_PR { + ERABActivityNotifyItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ERABActivityNotifyItem_ExtIEs__extensionValue_PR; +typedef enum E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR { + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR_Packet_LossRate +} E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR; +typedef enum E_RAB_Item_ExtIEs__extensionValue_PR { + E_RAB_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RAB_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABUsageReport_Item_ExtIEs__extensionValue_PR { + E_RABUsageReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABUsageReport_Item_ExtIEs__extensionValue_PR; +typedef enum ExpectedUEBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExpectedUEBehaviour_ExtIEs__extensionValue_PR; +typedef enum ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR; +typedef enum ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR { + ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR; +typedef enum FDD_Info_ExtIEs__extensionValue_PR { + FDD_Info_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + FDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension, + FDD_Info_ExtIEs__extensionValue_PR_OffsetOfNbiotChannelNumberToEARFCN, + FDD_Info_ExtIEs__extensionValue_PR_NRS_NSSS_PowerOffset, + FDD_Info_ExtIEs__extensionValue_PR_NSSS_NumOccasionDifferentPrecoder +} FDD_Info_ExtIEs__extensionValue_PR; +typedef enum ForbiddenTAs_Item_ExtIEs__extensionValue_PR { + ForbiddenTAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ForbiddenTAs_Item_ExtIEs__extensionValue_PR; +typedef enum ForbiddenLAs_Item_ExtIEs__extensionValue_PR { + ForbiddenLAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ForbiddenLAs_Item_ExtIEs__extensionValue_PR; +typedef enum FreqBandNrItem_ExtIEs__extensionValue_PR { + FreqBandNrItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FreqBandNrItem_ExtIEs__extensionValue_PR; +typedef enum GBR_QosInformation_ExtIEs__extensionValue_PR { + GBR_QosInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate +} GBR_QosInformation_ExtIEs__extensionValue_PR; +typedef enum GlobalENB_ID_ExtIEs__extensionValue_PR { + GlobalENB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GlobalENB_ID_ExtIEs__extensionValue_PR; +typedef enum GlobalGNB_ID_ExtIEs__extensionValue_PR { + GlobalGNB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GlobalGNB_ID_ExtIEs__extensionValue_PR; +typedef enum GTPtunnelEndpoint_ExtIEs__extensionValue_PR { + GTPtunnelEndpoint_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GTPtunnelEndpoint_ExtIEs__extensionValue_PR; +typedef enum GU_Group_ID_ExtIEs__extensionValue_PR { + GU_Group_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GU_Group_ID_ExtIEs__extensionValue_PR; +typedef enum GUMMEI_ExtIEs__extensionValue_PR { + GUMMEI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GUMMEI_ExtIEs__extensionValue_PR; +typedef enum HandoverRestrictionList_ExtIEs__extensionValue_PR { + HandoverRestrictionList_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictioninEPSasSecondaryRAT, + HandoverRestrictionList_ExtIEs__extensionValue_PR_CNTypeRestrictions, + HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictionin5GS +} HandoverRestrictionList_ExtIEs__extensionValue_PR; +typedef enum HWLoadIndicator_ExtIEs__extensionValue_PR { + HWLoadIndicator_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} HWLoadIndicator_ExtIEs__extensionValue_PR; +typedef enum LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR { + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Time_UE_StayedInCell_EnhancedGranularity, + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Cause +} LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR; +typedef enum LocationReportingInformation_ExtIEs__extensionValue_PR { + LocationReportingInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} LocationReportingInformation_ExtIEs__extensionValue_PR; +typedef enum M1PeriodicReporting_ExtIEs__extensionValue_PR { + M1PeriodicReporting_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M1PeriodicReporting_ExtIEs__extensionValue_PR; +typedef enum M1ThresholdEventA2_ExtIEs__extensionValue_PR { + M1ThresholdEventA2_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M1ThresholdEventA2_ExtIEs__extensionValue_PR; +typedef enum M3Configuration_ExtIEs__extensionValue_PR { + M3Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M3Configuration_ExtIEs__extensionValue_PR; +typedef enum M4Configuration_ExtIEs__extensionValue_PR { + M4Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M4Configuration_ExtIEs__extensionValue_PR; +typedef enum M5Configuration_ExtIEs__extensionValue_PR { + M5Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M5Configuration_ExtIEs__extensionValue_PR; +typedef enum M6Configuration_ExtIEs__extensionValue_PR { + M6Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M6Configuration_ExtIEs__extensionValue_PR; +typedef enum M7Configuration_ExtIEs__extensionValue_PR { + M7Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M7Configuration_ExtIEs__extensionValue_PR; +typedef enum MDT_Configuration_ExtIEs__extensionValue_PR { + MDT_Configuration_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + MDT_Configuration_ExtIEs__extensionValue_PR_M3Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M4Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M5Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_MDT_Location_Info, + MDT_Configuration_ExtIEs__extensionValue_PR_MDTPLMNList, + MDT_Configuration_ExtIEs__extensionValue_PR_M6Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M7Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_BluetoothMeasurementConfiguration, + MDT_Configuration_ExtIEs__extensionValue_PR_WLANMeasurementConfiguration +} MDT_Configuration_ExtIEs__extensionValue_PR; +typedef enum MeNBResourceCoordinationInformationExtIEs__extensionValue_PR { + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_NOTHING, /* No components present */ + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_NRCGI, + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_MeNBCoordinationAssistanceInformation +} MeNBResourceCoordinationInformationExtIEs__extensionValue_PR; +typedef enum MBSFN_Subframe_Info_ExtIEs__extensionValue_PR { + MBSFN_Subframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MBSFN_Subframe_Info_ExtIEs__extensionValue_PR; +typedef enum BandInfo_ExtIEs__extensionValue_PR { + BandInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} BandInfo_ExtIEs__extensionValue_PR; +typedef enum SplitSRB_ExtIEs__extensionValue_PR { + SplitSRB_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SplitSRB_ExtIEs__extensionValue_PR; +typedef enum UENRMeasurement_ExtIEs__extensionValue_PR { + UENRMeasurement_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UENRMeasurement_ExtIEs__extensionValue_PR; +typedef enum Neighbour_Information_ExtIEs__extensionValue_PR { + Neighbour_Information_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + Neighbour_Information_ExtIEs__extensionValue_PR_TAC, + Neighbour_Information_ExtIEs__extensionValue_PR_EARFCNExtension +} Neighbour_Information_ExtIEs__extensionValue_PR; +typedef enum NRFreqInfo_ExtIEs__extensionValue_PR { + NRFreqInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRFreqInfo_ExtIEs__extensionValue_PR; +typedef enum NRCGI_ExtIEs__extensionValue_PR { + NRCGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRCGI_ExtIEs__extensionValue_PR; +typedef enum NR_TxBW_ExtIEs__extensionValue_PR { + NR_TxBW_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NR_TxBW_ExtIEs__extensionValue_PR; +typedef enum NRUESecurityCapabilities_ExtIEs__extensionValue_PR { + NRUESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRUESecurityCapabilities_ExtIEs__extensionValue_PR; +typedef enum PRACH_Configuration_ExtIEs__extensionValue_PR { + PRACH_Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} PRACH_Configuration_ExtIEs__extensionValue_PR; +typedef enum PLMNAreaBasedQMC_ExtIEs__extensionValue_PR { + PLMNAreaBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} PLMNAreaBasedQMC_ExtIEs__extensionValue_PR; +typedef enum ProSeAuthorized_ExtIEs__extensionValue_PR { + ProSeAuthorized_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ProSeAuthorized_ExtIEs__extensionValue_PR_ProSeUEtoNetworkRelaying +} ProSeAuthorized_ExtIEs__extensionValue_PR; +typedef enum ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR { + ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR; +typedef enum ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR { + ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR; +typedef enum ProtectedResourceList_Item_ExtIEs__extensionValue_PR { + ProtectedResourceList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedResourceList_Item_ExtIEs__extensionValue_PR; +typedef enum RadioResourceStatus_ExtIEs__extensionValue_PR { + RadioResourceStatus_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RadioResourceStatus_ExtIEs__extensionValue_PR_DL_scheduling_PDCCH_CCE_usage, + RadioResourceStatus_ExtIEs__extensionValue_PR_UL_scheduling_PDCCH_CCE_usage +} RadioResourceStatus_ExtIEs__extensionValue_PR; +typedef enum RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR { + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_EnhancedRNTP +} RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR; +typedef enum ReservedSubframePattern_ExtIEs__extensionValue_PR { + ReservedSubframePattern_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ReservedSubframePattern_ExtIEs__extensionValue_PR; +typedef enum RLC_Status_ExtIEs__extensionValue_PR { + RLC_Status_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RLC_Status_ExtIEs__extensionValue_PR; +typedef enum RSRPMeasurementResult_ExtIEs__extensionValue_PR { + RSRPMeasurementResult_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RSRPMeasurementResult_ExtIEs__extensionValue_PR; +typedef enum RSRPMRList_ExtIEs__extensionValue_PR { + RSRPMRList_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RSRPMRList_ExtIEs__extensionValue_PR_UEID +} RSRPMRList_ExtIEs__extensionValue_PR; +typedef enum S1TNLLoadIndicator_ExtIEs__extensionValue_PR { + S1TNLLoadIndicator_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1TNLLoadIndicator_ExtIEs__extensionValue_PR; +typedef enum SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR { + SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCell_ExtIEs__extensionValue_PR { + ServedCell_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedCell_ExtIEs__extensionValue_PR; +typedef enum ServedCell_Information_ExtIEs__extensionValue_PR { + ServedCell_Information_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ServedCell_Information_ExtIEs__extensionValue_PR_Number_of_Antennaports, + ServedCell_Information_ExtIEs__extensionValue_PR_PRACH_Configuration, + ServedCell_Information_ExtIEs__extensionValue_PR_MBSFN_Subframe_Infolist, + ServedCell_Information_ExtIEs__extensionValue_PR_CSG_Id, + ServedCell_Information_ExtIEs__extensionValue_PR_MBMS_Service_Area_Identity_List, + ServedCell_Information_ExtIEs__extensionValue_PR_MultibandInfoList, + ServedCell_Information_ExtIEs__extensionValue_PR_FreqBandIndicatorPriority, + ServedCell_Information_ExtIEs__extensionValue_PR_BandwidthReducedSI, + ServedCell_Information_ExtIEs__extensionValue_PR_ProtectedEUTRAResourceIndication +} ServedCell_Information_ExtIEs__extensionValue_PR; +typedef enum SgNBResourceCoordinationInformationExtIEs__extensionValue_PR { + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_ECGI, + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_SgNBCoordinationAssistanceInformation +} SgNBResourceCoordinationInformationExtIEs__extensionValue_PR; +typedef enum SpecialSubframe_Info_ExtIEs__extensionValue_PR { + SpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SpecialSubframe_Info_ExtIEs__extensionValue_PR; +typedef enum SubbandCQI_ExtIEs__extensionValue_PR { + SubbandCQI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SubbandCQI_ExtIEs__extensionValue_PR; +typedef enum Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR { + Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR; +typedef enum ScheduledCommunicationTime_ExtIEs__extensionValue_PR { + ScheduledCommunicationTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ScheduledCommunicationTime_ExtIEs__extensionValue_PR; +typedef enum SubbandCQIItem_ExtIEs__extensionValue_PR { + SubbandCQIItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SubbandCQIItem_ExtIEs__extensionValue_PR; +typedef enum SULInformation_ExtIEs__extensionValue_PR { + SULInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SULInformation_ExtIEs__extensionValue_PR; +typedef enum SupportedSULFreqBandItem_ExtIEs__extensionValue_PR { + SupportedSULFreqBandItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SupportedSULFreqBandItem_ExtIEs__extensionValue_PR; +typedef enum TABasedMDT_ExtIEs__extensionValue_PR { + TABasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TABasedMDT_ExtIEs__extensionValue_PR; +typedef enum TAIBasedMDT_ExtIEs__extensionValue_PR { + TAIBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAIBasedMDT_ExtIEs__extensionValue_PR; +typedef enum TAI_Item_ExtIEs__extensionValue_PR { + TAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAI_Item_ExtIEs__extensionValue_PR; +typedef enum TABasedQMC_ExtIEs__extensionValue_PR { + TABasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TABasedQMC_ExtIEs__extensionValue_PR; +typedef enum TAIBasedQMC_ExtIEs__extensionValue_PR { + TAIBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAIBasedQMC_ExtIEs__extensionValue_PR; +typedef enum TDD_Info_ExtIEs__extensionValue_PR { + TDD_Info_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframe_Info, + TDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension, + TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframeExtension_Info +} TDD_Info_ExtIEs__extensionValue_PR; +typedef enum TraceActivation_ExtIEs__extensionValue_PR { + TraceActivation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TraceActivation_ExtIEs__extensionValue_PR_MDT_Configuration, + TraceActivation_ExtIEs__extensionValue_PR_UEAppLayerMeasConfig +} TraceActivation_ExtIEs__extensionValue_PR; +typedef enum Tunnel_Information_ExtIEs__extensionValue_PR { + Tunnel_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Tunnel_Information_ExtIEs__extensionValue_PR; +typedef enum UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR { + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR_ExtendedBitRate +} UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR; +typedef enum UEAppLayerMeasConfig_ExtIEs__extensionValue_PR { + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_ServiceType +} UEAppLayerMeasConfig_ExtIEs__extensionValue_PR; +typedef enum UESecurityCapabilities_ExtIEs__extensionValue_PR { + UESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UESecurityCapabilities_ExtIEs__extensionValue_PR; +typedef enum UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR { + UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR; +typedef enum UEsToBeResetList_Item_ExtIEs__extensionValue_PR { + UEsToBeResetList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UEsToBeResetList_Item_ExtIEs__extensionValue_PR; +typedef enum ULandDLSharing_ExtIEs__extensionValue_PR { + ULandDLSharing_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULandDLSharing_ExtIEs__extensionValue_PR; +typedef enum ULConfiguration_ExtIEs__extensionValue_PR { + ULConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULConfiguration_ExtIEs__extensionValue_PR; +typedef enum UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR { + UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR; +typedef enum ULOnlySharing_ExtIEs__extensionValue_PR { + ULOnlySharing_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULOnlySharing_ExtIEs__extensionValue_PR; +typedef enum UsableABSInformationFDD_ExtIEs__extensionValue_PR { + UsableABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UsableABSInformationFDD_ExtIEs__extensionValue_PR; +typedef enum UsableABSInformationTDD_ExtIEs__extensionValue_PR { + UsableABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UsableABSInformationTDD_ExtIEs__extensionValue_PR; +typedef enum V2XServicesAuthorized_ExtIEs__extensionValue_PR { + V2XServicesAuthorized_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} V2XServicesAuthorized_ExtIEs__extensionValue_PR; +typedef enum WidebandCQI_ExtIEs__extensionValue_PR { + WidebandCQI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} WidebandCQI_ExtIEs__extensionValue_PR; +typedef enum WLANMeasurementConfiguration_ExtIEs__extensionValue_PR { + WLANMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} WLANMeasurementConfiguration_ExtIEs__extensionValue_PR; + +/* ProtocolExtensionField */ +typedef struct UE_ContextInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformation_ExtIEs__extensionValue { + UE_ContextInformation_ExtIEs__extensionValue_PR present; + union UE_ContextInformation_ExtIEs__extensionValue_u { + ManagementBasedMDTallowed_t ManagementBasedMDTallowed; + MDTPLMNList_t MDTPLMNList; + UESidelinkAggregateMaximumBitRate_t UESidelinkAggregateMaximumBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformation_ExtIEs_t; +typedef struct E_RABs_ToBeSetup_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue { + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeSetup_ItemExtIEs__extensionValue_u { + BearerType_t BearerType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtSeNB_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue { + UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSeNB_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtWT_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue { + UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtWT_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtSgNB_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue { + UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSgNB_ItemExtIEs_t; +typedef struct E_RABs_Admitted_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_Item_ExtIEs__extensionValue { + E_RABs_Admitted_Item_ExtIEs__extensionValue_PR present; + union E_RABs_Admitted_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_Item_ExtIEs_t; +typedef struct E_RABs_SubjectToStatusTransfer_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue { + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_u { + ReceiveStatusOfULPDCPSDUsExtended_t ReceiveStatusOfULPDCPSDUsExtended; + COUNTValueExtended_t COUNTValueExtended; + ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; + COUNTvaluePDCP_SNlength18_t COUNTvaluePDCP_SNlength18; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_ItemExtIEs_t; +typedef struct CellInformation_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellInformation_Item_ExtIEs__extensionValue { + CellInformation_Item_ExtIEs__extensionValue_PR present; + union CellInformation_Item_ExtIEs__extensionValue_u { + ABSInformation_t ABSInformation; + InvokeIndication_t InvokeIndication; + SubframeAssignment_t SubframeAssignment; + ExtendedULInterferenceOverloadInfo_t ExtendedULInterferenceOverloadInfo; + CoMPInformation_t CoMPInformation; + DynamicDLTransmissionInformation_t DynamicDLTransmissionInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_Item_ExtIEs_t; +typedef struct ServedCellsToModify_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCellsToModify_Item_ExtIEs__extensionValue { + ServedCellsToModify_Item_ExtIEs__extensionValue_PR present; + union ServedCellsToModify_Item_ExtIEs__extensionValue_u { + DeactivationIndication_t DeactivationIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToModify_Item_ExtIEs_t; +typedef struct CellToReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellToReport_Item_ExtIEs__extensionValue { + CellToReport_Item_ExtIEs__extensionValue_PR present; + union CellToReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_Item_ExtIEs_t; +typedef struct MeasurementInitiationResult_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementInitiationResult_Item_ExtIEs__extensionValue { + MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR present; + union MeasurementInitiationResult_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_Item_ExtIEs_t; +typedef struct MeasurementFailureCause_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementFailureCause_Item_ExtIEs__extensionValue { + MeasurementFailureCause_Item_ExtIEs__extensionValue_PR present; + union MeasurementFailureCause_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_Item_ExtIEs_t; +typedef struct CompleteFailureCauseInformation_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue { + CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR present; + union CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_Item_ExtIEs_t; +typedef struct CellMeasurementResult_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellMeasurementResult_Item_ExtIEs__extensionValue { + CellMeasurementResult_Item_ExtIEs__extensionValue_PR present; + union CellMeasurementResult_Item_ExtIEs__extensionValue_u { + CompositeAvailableCapacityGroup_t CompositeAvailableCapacityGroup; + ABS_Status_t ABS_Status; + RSRPMRList_t RSRPMRList; + CSIReportList_t CSIReportList; + CellReportingIndicator_t CellReportingIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_Item_ExtIEs_t; +typedef struct ServedCellsToActivate_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCellsToActivate_Item_ExtIEs__extensionValue { + ServedCellsToActivate_Item_ExtIEs__extensionValue_PR present; + union ServedCellsToActivate_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToActivate_Item_ExtIEs_t; +typedef struct ActivatedCellList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ActivatedCellList_Item_ExtIEs__extensionValue { + ActivatedCellList_Item_ExtIEs__extensionValue_PR present; + union ActivatedCellList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedCellList_Item_ExtIEs_t; +typedef struct RNL_Header_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RNL_Header_Item_ExtIEs__extensionValue { + RNL_Header_Item_ExtIEs__extensionValue_PR present; + union RNL_Header_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RNL_Header_Item_ExtIEs_t; +typedef struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_u { + Correlation_ID_t Correlation_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_t; +typedef struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue { + ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR present; + union ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_SuccessItemExtIEs_t; +typedef struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue { + ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR present; + union ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_t; +typedef struct UE_ContextInformationSeNBModReqExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationSeNBModReqExtIEs__extensionValue { + UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR present; + union UE_ContextInformationSeNBModReqExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationSeNBModReqExtIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + Correlation_ID_t Correlation_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqdItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqdItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_t; +typedef struct E_RABs_SubjectToCounterCheckItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue { + E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheckItemExtIEs_t; +typedef struct UE_ContextInformationRetrieve_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationRetrieve_ExtIEs__extensionValue { + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR present; + union UE_ContextInformationRetrieve_ExtIEs__extensionValue_u { + UESidelinkAggregateMaximumBitRate_t UESidelinkAggregateMaximumBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationRetrieve_ExtIEs_t; +typedef struct E_RABs_ToBeSetupRetrieve_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue { + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_u { + GTPtunnelEndpoint_t GTPtunnelEndpoint; + DL_Forwarding_t DL_Forwarding; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetupRetrieve_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + DuplicationActivation_t DuplicationActivation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue { + ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR present; + union ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_SuccessItemExtIEs_t; +typedef struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue { + ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR present; + union ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_t; +typedef struct UE_ContextInformationSgNBModReqExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationSgNBModReqExtIEs__extensionValue { + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR present; + union UE_ContextInformationSgNBModReqExtIEs__extensionValue_u { + SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationSgNBModReqExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + DuplicationActivation_t DuplicationActivation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLC_Status_t RLC_Status; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + GTPtunnelEndpoint_t GTPtunnelEndpoint; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + GTPtunnelEndpoint_t GTPtunnelEndpoint; + RLC_Status_t RLC_Status; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + NewDRBIDrequest_t NewDRBIDrequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + RLC_Status_t RLC_Status; + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue { + E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct ServedEUTRAcellsENDCX2Management_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue { + ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR present; + union ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsENDCX2Management_ExtIEs_t; +typedef struct En_gNBServedCells_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNBServedCells_ExtIEs__extensionValue { + En_gNBServedCells_ExtIEs__extensionValue_PR present; + union En_gNBServedCells_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNBServedCells_ExtIEs_t; +typedef struct ServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCell_Information_ExtIEs__extensionValue { + ServedNRCell_Information_ExtIEs__extensionValue_PR present; + union ServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCell_Information_ExtIEs_t; +typedef struct FDD_InfoServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue { + FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present; + union FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoServedNRCell_Information_ExtIEs_t; +typedef struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue { + FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present; + union FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoNeighbourServedNRCell_Information_ExtIEs_t; +typedef struct TDD_InfoServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue { + TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present; + union TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoServedNRCell_Information_ExtIEs_t; +typedef struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue { + TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present; + union TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoNeighbourServedNRCell_Information_ExtIEs_t; +typedef struct NRNeighbour_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRNeighbour_Information_ExtIEs__extensionValue { + NRNeighbour_Information_ExtIEs__extensionValue_PR present; + union NRNeighbour_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRNeighbour_Information_ExtIEs_t; +typedef struct Limited_list_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Limited_list_ExtIEs__extensionValue { + Limited_list_ExtIEs__extensionValue_PR present; + union Limited_list_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Limited_list_ExtIEs_t; +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue { + ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR present; + union ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_t; +typedef struct ServedNRCellsToModify_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCellsToModify_Item_ExtIEs__extensionValue { + ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR present; + union ServedNRCellsToModify_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToModify_Item_ExtIEs_t; +typedef struct ServedNRCellsToActivate_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue { + ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR present; + union ServedNRCellsToActivate_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToActivate_Item_ExtIEs_t; +typedef struct ActivatedNRCellList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ActivatedNRCellList_Item_ExtIEs__extensionValue { + ActivatedNRCellList_Item_ExtIEs__extensionValue_PR present; + union ActivatedNRCellList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedNRCellList_Item_ExtIEs_t; +typedef struct E_RABs_DataForwardingAddress_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue { + E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR present; + union E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_ItemExtIEs_t; +typedef struct ABSInformationFDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABSInformationFDD_ExtIEs__extensionValue { + ABSInformationFDD_ExtIEs__extensionValue_PR present; + union ABSInformationFDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationFDD_ExtIEs_t; +typedef struct ABSInformationTDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABSInformationTDD_ExtIEs__extensionValue { + ABSInformationTDD_ExtIEs__extensionValue_PR present; + union ABSInformationTDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationTDD_ExtIEs_t; +typedef struct ABS_Status_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABS_Status_ExtIEs__extensionValue { + ABS_Status_ExtIEs__extensionValue_PR present; + union ABS_Status_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABS_Status_ExtIEs_t; +typedef struct AdditionalSpecialSubframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue { + AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR present; + union AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframe_Info_ExtIEs_t; +typedef struct AdditionalSpecialSubframeExtension_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue { + AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR present; + union AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframeExtension_Info_ExtIEs_t; +typedef struct AllocationAndRetentionPriority_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AllocationAndRetentionPriority_ExtIEs__extensionValue { + AllocationAndRetentionPriority_ExtIEs__extensionValue_PR present; + union AllocationAndRetentionPriority_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AllocationAndRetentionPriority_ExtIEs_t; +typedef struct AS_SecurityInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AS_SecurityInformation_ExtIEs__extensionValue { + AS_SecurityInformation_ExtIEs__extensionValue_PR present; + union AS_SecurityInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AS_SecurityInformation_ExtIEs_t; +typedef struct BluetoothMeasurementConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue { + BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR present; + union BluetoothMeasurementConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BluetoothMeasurementConfiguration_ExtIEs_t; +typedef struct CellBasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellBasedMDT_ExtIEs__extensionValue { + CellBasedMDT_ExtIEs__extensionValue_PR present; + union CellBasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedMDT_ExtIEs_t; +typedef struct CellBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellBasedQMC_ExtIEs__extensionValue { + CellBasedQMC_ExtIEs__extensionValue_PR present; + union CellBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedQMC_ExtIEs_t; +typedef struct CellReplacingInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellReplacingInfo_ExtIEs__extensionValue { + CellReplacingInfo_ExtIEs__extensionValue_PR present; + union CellReplacingInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellReplacingInfo_ExtIEs_t; +typedef struct CellType_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellType_ExtIEs__extensionValue { + CellType_ExtIEs__extensionValue_PR present; + union CellType_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellType_ExtIEs_t; +typedef struct CNTypeRestrictionsItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CNTypeRestrictionsItem_ExtIEs__extensionValue { + CNTypeRestrictionsItem_ExtIEs__extensionValue_PR present; + union CNTypeRestrictionsItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CNTypeRestrictionsItem_ExtIEs_t; +typedef struct CoMPHypothesisSetItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPHypothesisSetItem_ExtIEs__extensionValue { + CoMPHypothesisSetItem_ExtIEs__extensionValue_PR present; + union CoMPHypothesisSetItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPHypothesisSetItem_ExtIEs_t; +typedef struct CoMPInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformation_ExtIEs__extensionValue { + CoMPInformation_ExtIEs__extensionValue_PR present; + union CoMPInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformation_ExtIEs_t; +typedef struct CoMPInformationItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformationItem_ExtIEs__extensionValue { + CoMPInformationItem_ExtIEs__extensionValue_PR present; + union CoMPInformationItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationItem_ExtIEs_t; +typedef struct CoMPInformationStartTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformationStartTime_ExtIEs__extensionValue { + CoMPInformationStartTime_ExtIEs__extensionValue_PR present; + union CoMPInformationStartTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationStartTime_ExtIEs_t; +typedef struct CompositeAvailableCapacity_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompositeAvailableCapacity_ExtIEs__extensionValue { + CompositeAvailableCapacity_ExtIEs__extensionValue_PR present; + union CompositeAvailableCapacity_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacity_ExtIEs_t; +typedef struct CompositeAvailableCapacityGroup_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue { + CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR present; + union CompositeAvailableCapacityGroup_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacityGroup_ExtIEs_t; +typedef struct COUNTvalue_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTvalue_ExtIEs__extensionValue { + COUNTvalue_ExtIEs__extensionValue_PR present; + union COUNTvalue_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvalue_ExtIEs_t; +typedef struct COUNTValueExtended_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTValueExtended_ExtIEs__extensionValue { + COUNTValueExtended_ExtIEs__extensionValue_PR present; + union COUNTValueExtended_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTValueExtended_ExtIEs_t; +typedef struct COUNTvaluePDCP_SNlength18_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue { + COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR present; + union COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvaluePDCP_SNlength18_ExtIEs_t; +typedef struct CriticalityDiagnostics_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CriticalityDiagnostics_ExtIEs__extensionValue { + CriticalityDiagnostics_ExtIEs__extensionValue_PR present; + union CriticalityDiagnostics_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_ExtIEs_t; +typedef struct CriticalityDiagnostics_IE_List_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue { + CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR present; + union CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_ExtIEs_t; +typedef struct CSIReportList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportList_ExtIEs__extensionValue { + CSIReportList_ExtIEs__extensionValue_PR present; + union CSIReportList_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportList_ExtIEs_t; +typedef struct CSIReportPerCSIProcess_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportPerCSIProcess_ExtIEs__extensionValue { + CSIReportPerCSIProcess_ExtIEs__extensionValue_PR present; + union CSIReportPerCSIProcess_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcess_ExtIEs_t; +typedef struct CSIReportPerCSIProcessItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue { + CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR present; + union CSIReportPerCSIProcessItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcessItem_ExtIEs_t; +typedef struct DataTrafficResourceIndication_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DataTrafficResourceIndication_ExtIEs__extensionValue { + DataTrafficResourceIndication_ExtIEs__extensionValue_PR present; + union DataTrafficResourceIndication_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataTrafficResourceIndication_ExtIEs_t; +typedef struct DeliveryStatus_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DeliveryStatus_ExtIEs__extensionValue { + DeliveryStatus_ExtIEs__extensionValue_PR present; + union DeliveryStatus_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DeliveryStatus_ExtIEs_t; +typedef struct DynamicNAICSInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DynamicNAICSInformation_ExtIEs__extensionValue { + DynamicNAICSInformation_ExtIEs__extensionValue_PR present; + union DynamicNAICSInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DynamicNAICSInformation_ExtIEs_t; +typedef struct ECGI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ECGI_ExtIEs__extensionValue { + ECGI_ExtIEs__extensionValue_PR present; + union ECGI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ECGI_ExtIEs_t; +typedef struct EnhancedRNTP_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EnhancedRNTP_ExtIEs__extensionValue { + EnhancedRNTP_ExtIEs__extensionValue_PR present; + union EnhancedRNTP_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTP_ExtIEs_t; +typedef struct EnhancedRNTPStartTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EnhancedRNTPStartTime_ExtIEs__extensionValue { + EnhancedRNTPStartTime_ExtIEs__extensionValue_PR present; + union EnhancedRNTPStartTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTPStartTime_ExtIEs_t; +typedef struct EN_DC_ResourceConfigurationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EN_DC_ResourceConfigurationExtIEs__extensionValue { + EN_DC_ResourceConfigurationExtIEs__extensionValue_PR present; + union EN_DC_ResourceConfigurationExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EN_DC_ResourceConfigurationExtIEs_t; +typedef struct ERABActivityNotifyItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ERABActivityNotifyItem_ExtIEs__extensionValue { + ERABActivityNotifyItem_ExtIEs__extensionValue_PR present; + union ERABActivityNotifyItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ERABActivityNotifyItem_ExtIEs_t; +typedef struct E_RAB_Level_QoS_Parameters_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue { + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR present; + union E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_u { + Packet_LossRate_t Packet_LossRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Level_QoS_Parameters_ExtIEs_t; +typedef struct E_RAB_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_Item_ExtIEs__extensionValue { + E_RAB_Item_ExtIEs__extensionValue_PR present; + union E_RAB_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Item_ExtIEs_t; +typedef struct E_RABUsageReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABUsageReport_Item_ExtIEs__extensionValue { + E_RABUsageReport_Item_ExtIEs__extensionValue_PR present; + union E_RABUsageReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReport_Item_ExtIEs_t; +typedef struct ExpectedUEBehaviour_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExpectedUEBehaviour_ExtIEs__extensionValue { + ExpectedUEBehaviour_ExtIEs__extensionValue_PR present; + union ExpectedUEBehaviour_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEBehaviour_ExtIEs_t; +typedef struct ExpectedUEActivityBehaviour_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue { + ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR present; + union ExpectedUEActivityBehaviour_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEActivityBehaviour_ExtIEs_t; +typedef struct ExtendedULInterferenceOverloadInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue { + ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR present; + union ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExtendedULInterferenceOverloadInfo_ExtIEs_t; +typedef struct FDD_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_Info_ExtIEs__extensionValue { + FDD_Info_ExtIEs__extensionValue_PR present; + union FDD_Info_ExtIEs__extensionValue_u { + EARFCNExtension_t EARFCNExtension; + OffsetOfNbiotChannelNumberToEARFCN_t OffsetOfNbiotChannelNumberToEARFCN; + NRS_NSSS_PowerOffset_t NRS_NSSS_PowerOffset; + NSSS_NumOccasionDifferentPrecoder_t NSSS_NumOccasionDifferentPrecoder; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_Info_ExtIEs_t; +typedef struct ForbiddenTAs_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ForbiddenTAs_Item_ExtIEs__extensionValue { + ForbiddenTAs_Item_ExtIEs__extensionValue_PR present; + union ForbiddenTAs_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTAs_Item_ExtIEs_t; +typedef struct ForbiddenLAs_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ForbiddenLAs_Item_ExtIEs__extensionValue { + ForbiddenLAs_Item_ExtIEs__extensionValue_PR present; + union ForbiddenLAs_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLAs_Item_ExtIEs_t; +typedef struct FreqBandNrItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FreqBandNrItem_ExtIEs__extensionValue { + FreqBandNrItem_ExtIEs__extensionValue_PR present; + union FreqBandNrItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FreqBandNrItem_ExtIEs_t; +typedef struct GBR_QosInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GBR_QosInformation_ExtIEs__extensionValue { + GBR_QosInformation_ExtIEs__extensionValue_PR present; + union GBR_QosInformation_ExtIEs__extensionValue_u { + ExtendedBitRate_t ExtendedBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GBR_QosInformation_ExtIEs_t; +typedef struct GlobalENB_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GlobalENB_ID_ExtIEs__extensionValue { + GlobalENB_ID_ExtIEs__extensionValue_PR present; + union GlobalENB_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalENB_ID_ExtIEs_t; +typedef struct GlobalGNB_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GlobalGNB_ID_ExtIEs__extensionValue { + GlobalGNB_ID_ExtIEs__extensionValue_PR present; + union GlobalGNB_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalGNB_ID_ExtIEs_t; +typedef struct GTPtunnelEndpoint_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GTPtunnelEndpoint_ExtIEs__extensionValue { + GTPtunnelEndpoint_ExtIEs__extensionValue_PR present; + union GTPtunnelEndpoint_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GTPtunnelEndpoint_ExtIEs_t; +typedef struct GU_Group_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GU_Group_ID_ExtIEs__extensionValue { + GU_Group_ID_ExtIEs__extensionValue_PR present; + union GU_Group_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GU_Group_ID_ExtIEs_t; +typedef struct GUMMEI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GUMMEI_ExtIEs__extensionValue { + GUMMEI_ExtIEs__extensionValue_PR present; + union GUMMEI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUMMEI_ExtIEs_t; +typedef struct HandoverRestrictionList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRestrictionList_ExtIEs__extensionValue { + HandoverRestrictionList_ExtIEs__extensionValue_PR present; + union HandoverRestrictionList_ExtIEs__extensionValue_u { + NRrestrictioninEPSasSecondaryRAT_t NRrestrictioninEPSasSecondaryRAT; + CNTypeRestrictions_t CNTypeRestrictions; + NRrestrictionin5GS_t NRrestrictionin5GS; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRestrictionList_ExtIEs_t; +typedef struct HWLoadIndicator_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HWLoadIndicator_ExtIEs__extensionValue { + HWLoadIndicator_ExtIEs__extensionValue_PR present; + union HWLoadIndicator_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HWLoadIndicator_ExtIEs_t; +typedef struct LastVisitedEUTRANCellInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue { + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR present; + union LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_u { + Time_UE_StayedInCell_EnhancedGranularity_t Time_UE_StayedInCell_EnhancedGranularity; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedEUTRANCellInformation_ExtIEs_t; +typedef struct LocationReportingInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LocationReportingInformation_ExtIEs__extensionValue { + LocationReportingInformation_ExtIEs__extensionValue_PR present; + union LocationReportingInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LocationReportingInformation_ExtIEs_t; +typedef struct M1PeriodicReporting_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M1PeriodicReporting_ExtIEs__extensionValue { + M1PeriodicReporting_ExtIEs__extensionValue_PR present; + union M1PeriodicReporting_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1PeriodicReporting_ExtIEs_t; +typedef struct M1ThresholdEventA2_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M1ThresholdEventA2_ExtIEs__extensionValue { + M1ThresholdEventA2_ExtIEs__extensionValue_PR present; + union M1ThresholdEventA2_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1ThresholdEventA2_ExtIEs_t; +typedef struct M3Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M3Configuration_ExtIEs__extensionValue { + M3Configuration_ExtIEs__extensionValue_PR present; + union M3Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M3Configuration_ExtIEs_t; +typedef struct M4Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M4Configuration_ExtIEs__extensionValue { + M4Configuration_ExtIEs__extensionValue_PR present; + union M4Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M4Configuration_ExtIEs_t; +typedef struct M5Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M5Configuration_ExtIEs__extensionValue { + M5Configuration_ExtIEs__extensionValue_PR present; + union M5Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M5Configuration_ExtIEs_t; +typedef struct M6Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M6Configuration_ExtIEs__extensionValue { + M6Configuration_ExtIEs__extensionValue_PR present; + union M6Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M6Configuration_ExtIEs_t; +typedef struct M7Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M7Configuration_ExtIEs__extensionValue { + M7Configuration_ExtIEs__extensionValue_PR present; + union M7Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M7Configuration_ExtIEs_t; +typedef struct MDT_Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MDT_Configuration_ExtIEs__extensionValue { + MDT_Configuration_ExtIEs__extensionValue_PR present; + union MDT_Configuration_ExtIEs__extensionValue_u { + M3Configuration_t M3Configuration; + M4Configuration_t M4Configuration; + M5Configuration_t M5Configuration; + MDT_Location_Info_t MDT_Location_Info; + MDTPLMNList_t MDTPLMNList; + M6Configuration_t M6Configuration; + M7Configuration_t M7Configuration; + BluetoothMeasurementConfiguration_t BluetoothMeasurementConfiguration; + WLANMeasurementConfiguration_t WLANMeasurementConfiguration; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MDT_Configuration_ExtIEs_t; +typedef struct MeNBResourceCoordinationInformationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeNBResourceCoordinationInformationExtIEs__extensionValue { + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR present; + union MeNBResourceCoordinationInformationExtIEs__extensionValue_u { + NRCGI_t NRCGI; + MeNBCoordinationAssistanceInformation_t MeNBCoordinationAssistanceInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeNBResourceCoordinationInformationExtIEs_t; +typedef struct MBSFN_Subframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MBSFN_Subframe_Info_ExtIEs__extensionValue { + MBSFN_Subframe_Info_ExtIEs__extensionValue_PR present; + union MBSFN_Subframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBSFN_Subframe_Info_ExtIEs_t; +typedef struct BandInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct BandInfo_ExtIEs__extensionValue { + BandInfo_ExtIEs__extensionValue_PR present; + union BandInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BandInfo_ExtIEs_t; +typedef struct SplitSRB_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SplitSRB_ExtIEs__extensionValue { + SplitSRB_ExtIEs__extensionValue_PR present; + union SplitSRB_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SplitSRB_ExtIEs_t; +typedef struct UENRMeasurement_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UENRMeasurement_ExtIEs__extensionValue { + UENRMeasurement_ExtIEs__extensionValue_PR present; + union UENRMeasurement_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UENRMeasurement_ExtIEs_t; +typedef struct Neighbour_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Neighbour_Information_ExtIEs__extensionValue { + Neighbour_Information_ExtIEs__extensionValue_PR present; + union Neighbour_Information_ExtIEs__extensionValue_u { + TAC_t TAC; + EARFCNExtension_t EARFCNExtension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Neighbour_Information_ExtIEs_t; +typedef struct NRFreqInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRFreqInfo_ExtIEs__extensionValue { + NRFreqInfo_ExtIEs__extensionValue_PR present; + union NRFreqInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFreqInfo_ExtIEs_t; +typedef struct NRCGI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRCGI_ExtIEs__extensionValue { + NRCGI_ExtIEs__extensionValue_PR present; + union NRCGI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRCGI_ExtIEs_t; +typedef struct NR_TxBW_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NR_TxBW_ExtIEs__extensionValue { + NR_TxBW_ExtIEs__extensionValue_PR present; + union NR_TxBW_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NR_TxBW_ExtIEs_t; +typedef struct NRUESecurityCapabilities_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRUESecurityCapabilities_ExtIEs__extensionValue { + NRUESecurityCapabilities_ExtIEs__extensionValue_PR present; + union NRUESecurityCapabilities_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRUESecurityCapabilities_ExtIEs_t; +typedef struct PRACH_Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct PRACH_Configuration_ExtIEs__extensionValue { + PRACH_Configuration_ExtIEs__extensionValue_PR present; + union PRACH_Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PRACH_Configuration_ExtIEs_t; +typedef struct PLMNAreaBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct PLMNAreaBasedQMC_ExtIEs__extensionValue { + PLMNAreaBasedQMC_ExtIEs__extensionValue_PR present; + union PLMNAreaBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PLMNAreaBasedQMC_ExtIEs_t; +typedef struct ProSeAuthorized_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProSeAuthorized_ExtIEs__extensionValue { + ProSeAuthorized_ExtIEs__extensionValue_PR present; + union ProSeAuthorized_ExtIEs__extensionValue_u { + ProSeUEtoNetworkRelaying_t ProSeUEtoNetworkRelaying; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProSeAuthorized_ExtIEs_t; +typedef struct ProtectedEUTRAResourceIndication_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue { + ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR present; + union ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedEUTRAResourceIndication_ExtIEs_t; +typedef struct ProtectedFootprintTimePattern_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedFootprintTimePattern_ExtIEs__extensionValue { + ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR present; + union ProtectedFootprintTimePattern_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedFootprintTimePattern_ExtIEs_t; +typedef struct ProtectedResourceList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedResourceList_Item_ExtIEs__extensionValue { + ProtectedResourceList_Item_ExtIEs__extensionValue_PR present; + union ProtectedResourceList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedResourceList_Item_ExtIEs_t; +typedef struct RadioResourceStatus_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RadioResourceStatus_ExtIEs__extensionValue { + RadioResourceStatus_ExtIEs__extensionValue_PR present; + union RadioResourceStatus_ExtIEs__extensionValue_u { + DL_scheduling_PDCCH_CCE_usage_t DL_scheduling_PDCCH_CCE_usage; + UL_scheduling_PDCCH_CCE_usage_t UL_scheduling_PDCCH_CCE_usage; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadioResourceStatus_ExtIEs_t; +typedef struct RelativeNarrowbandTxPower_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RelativeNarrowbandTxPower_ExtIEs__extensionValue { + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR present; + union RelativeNarrowbandTxPower_ExtIEs__extensionValue_u { + EnhancedRNTP_t EnhancedRNTP; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RelativeNarrowbandTxPower_ExtIEs_t; +typedef struct ReservedSubframePattern_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ReservedSubframePattern_ExtIEs__extensionValue { + ReservedSubframePattern_ExtIEs__extensionValue_PR present; + union ReservedSubframePattern_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReservedSubframePattern_ExtIEs_t; +typedef struct RLC_Status_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RLC_Status_ExtIEs__extensionValue { + RLC_Status_ExtIEs__extensionValue_PR present; + union RLC_Status_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLC_Status_ExtIEs_t; +typedef struct RSRPMeasurementResult_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RSRPMeasurementResult_ExtIEs__extensionValue { + RSRPMeasurementResult_ExtIEs__extensionValue_PR present; + union RSRPMeasurementResult_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMeasurementResult_ExtIEs_t; +typedef struct RSRPMRList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RSRPMRList_ExtIEs__extensionValue { + RSRPMRList_ExtIEs__extensionValue_PR present; + union RSRPMRList_ExtIEs__extensionValue_u { + UEID_t UEID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMRList_ExtIEs_t; +typedef struct S1TNLLoadIndicator_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct S1TNLLoadIndicator_ExtIEs__extensionValue { + S1TNLLoadIndicator_ExtIEs__extensionValue_PR present; + union S1TNLLoadIndicator_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1TNLLoadIndicator_ExtIEs_t; +typedef struct SecondaryRATUsageReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue { + SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR present; + union SecondaryRATUsageReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReport_Item_ExtIEs_t; +typedef struct ServedCell_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCell_ExtIEs__extensionValue { + ServedCell_ExtIEs__extensionValue_PR present; + union ServedCell_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCell_ExtIEs_t; +typedef struct ServedCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCell_Information_ExtIEs__extensionValue { + ServedCell_Information_ExtIEs__extensionValue_PR present; + union ServedCell_Information_ExtIEs__extensionValue_u { + Number_of_Antennaports_t Number_of_Antennaports; + PRACH_Configuration_t PRACH_Configuration; + MBSFN_Subframe_Infolist_t MBSFN_Subframe_Infolist; + CSG_Id_t CSG_Id; + MBMS_Service_Area_Identity_List_t MBMS_Service_Area_Identity_List; + MultibandInfoList_t MultibandInfoList; + FreqBandIndicatorPriority_t FreqBandIndicatorPriority; + BandwidthReducedSI_t BandwidthReducedSI; + ProtectedEUTRAResourceIndication_t ProtectedEUTRAResourceIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCell_Information_ExtIEs_t; +typedef struct SgNBResourceCoordinationInformationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBResourceCoordinationInformationExtIEs__extensionValue { + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR present; + union SgNBResourceCoordinationInformationExtIEs__extensionValue_u { + ECGI_t ECGI; + SgNBCoordinationAssistanceInformation_t SgNBCoordinationAssistanceInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBResourceCoordinationInformationExtIEs_t; +typedef struct SpecialSubframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SpecialSubframe_Info_ExtIEs__extensionValue { + SpecialSubframe_Info_ExtIEs__extensionValue_PR present; + union SpecialSubframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpecialSubframe_Info_ExtIEs_t; +typedef struct SubbandCQI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SubbandCQI_ExtIEs__extensionValue { + SubbandCQI_ExtIEs__extensionValue_PR present; + union SubbandCQI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQI_ExtIEs_t; +typedef struct Subscription_Based_UE_DifferentiationInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue { + Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR present; + union Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Subscription_Based_UE_DifferentiationInfo_ExtIEs_t; +typedef struct ScheduledCommunicationTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ScheduledCommunicationTime_ExtIEs__extensionValue { + ScheduledCommunicationTime_ExtIEs__extensionValue_PR present; + union ScheduledCommunicationTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ScheduledCommunicationTime_ExtIEs_t; +typedef struct SubbandCQIItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SubbandCQIItem_ExtIEs__extensionValue { + SubbandCQIItem_ExtIEs__extensionValue_PR present; + union SubbandCQIItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQIItem_ExtIEs_t; +typedef struct SULInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SULInformation_ExtIEs__extensionValue { + SULInformation_ExtIEs__extensionValue_PR present; + union SULInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SULInformation_ExtIEs_t; +typedef struct SupportedSULFreqBandItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SupportedSULFreqBandItem_ExtIEs__extensionValue { + SupportedSULFreqBandItem_ExtIEs__extensionValue_PR present; + union SupportedSULFreqBandItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupportedSULFreqBandItem_ExtIEs_t; +typedef struct TABasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TABasedMDT_ExtIEs__extensionValue { + TABasedMDT_ExtIEs__extensionValue_PR present; + union TABasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedMDT_ExtIEs_t; +typedef struct TAIBasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAIBasedMDT_ExtIEs__extensionValue { + TAIBasedMDT_ExtIEs__extensionValue_PR present; + union TAIBasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedMDT_ExtIEs_t; +typedef struct TAI_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAI_Item_ExtIEs__extensionValue { + TAI_Item_ExtIEs__extensionValue_PR present; + union TAI_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAI_Item_ExtIEs_t; +typedef struct TABasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TABasedQMC_ExtIEs__extensionValue { + TABasedQMC_ExtIEs__extensionValue_PR present; + union TABasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedQMC_ExtIEs_t; +typedef struct TAIBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAIBasedQMC_ExtIEs__extensionValue { + TAIBasedQMC_ExtIEs__extensionValue_PR present; + union TAIBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedQMC_ExtIEs_t; +typedef struct TDD_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_Info_ExtIEs__extensionValue { + TDD_Info_ExtIEs__extensionValue_PR present; + union TDD_Info_ExtIEs__extensionValue_u { + AdditionalSpecialSubframe_Info_t AdditionalSpecialSubframe_Info; + EARFCNExtension_t EARFCNExtension; + AdditionalSpecialSubframeExtension_Info_t AdditionalSpecialSubframeExtension_Info; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_Info_ExtIEs_t; +typedef struct TraceActivation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TraceActivation_ExtIEs__extensionValue { + TraceActivation_ExtIEs__extensionValue_PR present; + union TraceActivation_ExtIEs__extensionValue_u { + MDT_Configuration_t MDT_Configuration; + UEAppLayerMeasConfig_t UEAppLayerMeasConfig; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TraceActivation_ExtIEs_t; +typedef struct Tunnel_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Tunnel_Information_ExtIEs__extensionValue { + Tunnel_Information_ExtIEs__extensionValue_PR present; + union Tunnel_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Tunnel_Information_ExtIEs_t; +typedef struct UEAggregate_MaximumBitrate_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue { + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR present; + union UEAggregate_MaximumBitrate_ExtIEs__extensionValue_u { + ExtendedBitRate_t ExtendedBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAggregate_MaximumBitrate_ExtIEs_t; +typedef struct UEAppLayerMeasConfig_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEAppLayerMeasConfig_ExtIEs__extensionValue { + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR present; + union UEAppLayerMeasConfig_ExtIEs__extensionValue_u { + ServiceType_t ServiceType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAppLayerMeasConfig_ExtIEs_t; +typedef struct UESecurityCapabilities_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UESecurityCapabilities_ExtIEs__extensionValue { + UESecurityCapabilities_ExtIEs__extensionValue_PR present; + union UESecurityCapabilities_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UESecurityCapabilities_ExtIEs_t; +typedef struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue { + UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR present; + union UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_t; +typedef struct UEsToBeResetList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEsToBeResetList_Item_ExtIEs__extensionValue { + UEsToBeResetList_Item_ExtIEs__extensionValue_PR present; + union UEsToBeResetList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEsToBeResetList_Item_ExtIEs_t; +typedef struct ULandDLSharing_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULandDLSharing_ExtIEs__extensionValue { + ULandDLSharing_ExtIEs__extensionValue_PR present; + union ULandDLSharing_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULandDLSharing_ExtIEs_t; +typedef struct ULConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULConfiguration_ExtIEs__extensionValue { + ULConfiguration_ExtIEs__extensionValue_PR present; + union ULConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULConfiguration_ExtIEs_t; +typedef struct UL_HighInterferenceIndicationInfo_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue { + UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR present; + union UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_HighInterferenceIndicationInfo_Item_ExtIEs_t; +typedef struct ULOnlySharing_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULOnlySharing_ExtIEs__extensionValue { + ULOnlySharing_ExtIEs__extensionValue_PR present; + union ULOnlySharing_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULOnlySharing_ExtIEs_t; +typedef struct UsableABSInformationFDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UsableABSInformationFDD_ExtIEs__extensionValue { + UsableABSInformationFDD_ExtIEs__extensionValue_PR present; + union UsableABSInformationFDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationFDD_ExtIEs_t; +typedef struct UsableABSInformationTDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UsableABSInformationTDD_ExtIEs__extensionValue { + UsableABSInformationTDD_ExtIEs__extensionValue_PR present; + union UsableABSInformationTDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationTDD_ExtIEs_t; +typedef struct V2XServicesAuthorized_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct V2XServicesAuthorized_ExtIEs__extensionValue { + V2XServicesAuthorized_ExtIEs__extensionValue_PR present; + union V2XServicesAuthorized_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} V2XServicesAuthorized_ExtIEs_t; +typedef struct WidebandCQI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct WidebandCQI_ExtIEs__extensionValue { + WidebandCQI_ExtIEs__extensionValue_PR present; + union WidebandCQI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WidebandCQI_ExtIEs_t; +typedef struct WLANMeasurementConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct WLANMeasurementConfiguration_ExtIEs__extensionValue { + WLANMeasurementConfiguration_ExtIEs__extensionValue_PR present; + union WLANMeasurementConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WLANMeasurementConfiguration_ExtIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_ExtIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformation_ExtIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_ExtIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_ExtIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_CellInformation_Item_ExtIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_ExtIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_ExtIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_CellToReport_Item_ExtIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_ExtIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_ExtIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_ExtIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_ExtIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_RNL_Header_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_Item_ExtIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_RNL_Header_Item_ExtIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361; +extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNBServedCells_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNBServedCells_ExtIEs_specs_365; +extern asn_TYPE_member_t asn_MBR_En_gNBServedCells_ExtIEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_ExtIEs_specs_369; +extern asn_TYPE_member_t asn_MBR_ServedNRCell_Information_ExtIEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373; +extern asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377; +extern asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381; +extern asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385; +extern asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRNeighbour_Information_ExtIEs_specs_389; +extern asn_TYPE_member_t asn_MBR_NRNeighbour_Information_ExtIEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_Limited_list_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Limited_list_ExtIEs_specs_393; +extern asn_TYPE_member_t asn_MBR_Limited_list_ExtIEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397; +extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409; +extern asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_ExtIEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413; +extern asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_ExtIEs_specs_417; +extern asn_TYPE_member_t asn_MBR_ABSInformationFDD_ExtIEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_ExtIEs_specs_421; +extern asn_TYPE_member_t asn_MBR_ABSInformationTDD_ExtIEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABS_Status_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_ExtIEs_specs_425; +extern asn_TYPE_member_t asn_MBR_ABS_Status_ExtIEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437; +extern asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_ExtIEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_ExtIEs_specs_441; +extern asn_TYPE_member_t asn_MBR_AS_SecurityInformation_ExtIEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_ExtIEs_specs_449; +extern asn_TYPE_member_t asn_MBR_CellBasedMDT_ExtIEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_453; +extern asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_ExtIEs_specs_457; +extern asn_TYPE_member_t asn_MBR_CellReplacingInfo_ExtIEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellType_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellType_ExtIEs_specs_461; +extern asn_TYPE_member_t asn_MBR_CellType_ExtIEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_ExtIEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_ExtIEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_ExtIEs_specs_473; +extern asn_TYPE_member_t asn_MBR_CoMPInformation_ExtIEs_473[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationItem_ExtIEs_specs_477; +extern asn_TYPE_member_t asn_MBR_CoMPInformationItem_ExtIEs_477[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481; +extern asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_ExtIEs_481[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_ExtIEs_485[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTvalue_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_ExtIEs_specs_493; +extern asn_TYPE_member_t asn_MBR_COUNTvalue_ExtIEs_493[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_ExtIEs_specs_497; +extern asn_TYPE_member_t asn_MBR_COUNTValueExtended_ExtIEs_497[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501; +extern asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501[3]; +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_505[3]; +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportList_ExtIEs_specs_513; +extern asn_TYPE_member_t asn_MBR_CSIReportList_ExtIEs_513[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_ExtIEs_517[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521[3]; +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525; +extern asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_ExtIEs_525[3]; +extern asn_TYPE_descriptor_t asn_DEF_DeliveryStatus_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_ExtIEs_specs_529; +extern asn_TYPE_member_t asn_MBR_DeliveryStatus_ExtIEs_529[3]; +extern asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533; +extern asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_ExtIEs_533[3]; +extern asn_TYPE_descriptor_t asn_DEF_ECGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_ExtIEs_specs_537; +extern asn_TYPE_member_t asn_MBR_ECGI_ExtIEs_537[3]; +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_ExtIEs_specs_541; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTP_ExtIEs_541[3]; +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_ExtIEs_545[3]; +extern asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfigurationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549; +extern asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfigurationExtIEs_549[3]; +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_ExtIEs_553[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557; +extern asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_ExtIEs_specs_561; +extern asn_TYPE_member_t asn_MBR_E_RAB_Item_ExtIEs_561[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_ExtIEs_565[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569; +extern asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_ExtIEs_569[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573; +extern asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577; +extern asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_ExtIEs_specs_581; +extern asn_TYPE_member_t asn_MBR_FDD_Info_ExtIEs_581[3]; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_ExtIEs_585[3]; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_ExtIEs_589[3]; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_ExtIEs_specs_593; +extern asn_TYPE_member_t asn_MBR_FreqBandNrItem_ExtIEs_593[3]; +extern asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_ExtIEs_specs_597; +extern asn_TYPE_member_t asn_MBR_GBR_QosInformation_ExtIEs_597[3]; +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_601; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_601[3]; +extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_ExtIEs_specs_605; +extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_ExtIEs_605[3]; +extern asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609; +extern asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_ExtIEs_609[3]; +extern asn_TYPE_descriptor_t asn_DEF_GU_Group_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_ExtIEs_specs_613; +extern asn_TYPE_member_t asn_MBR_GU_Group_ID_ExtIEs_613[3]; +extern asn_TYPE_descriptor_t asn_DEF_GUMMEI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_ExtIEs_specs_617; +extern asn_TYPE_member_t asn_MBR_GUMMEI_ExtIEs_617[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_ExtIEs_specs_621; +extern asn_TYPE_member_t asn_MBR_HandoverRestrictionList_ExtIEs_621[3]; +extern asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_ExtIEs_specs_625; +extern asn_TYPE_member_t asn_MBR_HWLoadIndicator_ExtIEs_625[3]; +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629; +extern asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629[3]; +extern asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_ExtIEs_specs_633; +extern asn_TYPE_member_t asn_MBR_LocationReportingInformation_ExtIEs_633[3]; +extern asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_ExtIEs_specs_637; +extern asn_TYPE_member_t asn_MBR_M1PeriodicReporting_ExtIEs_637[3]; +extern asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641; +extern asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_ExtIEs_641[3]; +extern asn_TYPE_descriptor_t asn_DEF_M3Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_ExtIEs_specs_645; +extern asn_TYPE_member_t asn_MBR_M3Configuration_ExtIEs_645[3]; +extern asn_TYPE_descriptor_t asn_DEF_M4Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_ExtIEs_specs_649; +extern asn_TYPE_member_t asn_MBR_M4Configuration_ExtIEs_649[3]; +extern asn_TYPE_descriptor_t asn_DEF_M5Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_ExtIEs_specs_653; +extern asn_TYPE_member_t asn_MBR_M5Configuration_ExtIEs_653[3]; +extern asn_TYPE_descriptor_t asn_DEF_M6Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_ExtIEs_specs_657; +extern asn_TYPE_member_t asn_MBR_M6Configuration_ExtIEs_657[3]; +extern asn_TYPE_descriptor_t asn_DEF_M7Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_ExtIEs_specs_661; +extern asn_TYPE_member_t asn_MBR_M7Configuration_ExtIEs_661[3]; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_ExtIEs_specs_665; +extern asn_TYPE_member_t asn_MBR_MDT_Configuration_ExtIEs_665[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669; +extern asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformationExtIEs_669[3]; +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_ExtIEs_673[3]; +extern asn_TYPE_descriptor_t asn_DEF_BandInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_BandInfo_ExtIEs_specs_677; +extern asn_TYPE_member_t asn_MBR_BandInfo_ExtIEs_677[3]; +extern asn_TYPE_descriptor_t asn_DEF_SplitSRB_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_ExtIEs_specs_681; +extern asn_TYPE_member_t asn_MBR_SplitSRB_ExtIEs_681[3]; +extern asn_TYPE_descriptor_t asn_DEF_UENRMeasurement_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_ExtIEs_specs_685; +extern asn_TYPE_member_t asn_MBR_UENRMeasurement_ExtIEs_685[3]; +extern asn_TYPE_descriptor_t asn_DEF_Neighbour_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Neighbour_Information_ExtIEs_specs_689; +extern asn_TYPE_member_t asn_MBR_Neighbour_Information_ExtIEs_689[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRFreqInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_ExtIEs_specs_693; +extern asn_TYPE_member_t asn_MBR_NRFreqInfo_ExtIEs_693[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRCGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_ExtIEs_specs_697; +extern asn_TYPE_member_t asn_MBR_NRCGI_ExtIEs_697[3]; +extern asn_TYPE_descriptor_t asn_DEF_NR_TxBW_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_ExtIEs_specs_701; +extern asn_TYPE_member_t asn_MBR_NR_TxBW_ExtIEs_701[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705; +extern asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_ExtIEs_705[3]; +extern asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_ExtIEs_specs_709; +extern asn_TYPE_member_t asn_MBR_PRACH_Configuration_ExtIEs_709[3]; +extern asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713; +extern asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_ExtIEs_713[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_ExtIEs_specs_717; +extern asn_TYPE_member_t asn_MBR_ProSeAuthorized_ExtIEs_717[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721; +extern asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725; +extern asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_ExtIEs_729[3]; +extern asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_ExtIEs_specs_733; +extern asn_TYPE_member_t asn_MBR_RadioResourceStatus_ExtIEs_733[3]; +extern asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737; +extern asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737[3]; +extern asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_ExtIEs_specs_741; +extern asn_TYPE_member_t asn_MBR_ReservedSubframePattern_ExtIEs_741[3]; +extern asn_TYPE_descriptor_t asn_DEF_RLC_Status_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_ExtIEs_specs_745; +extern asn_TYPE_member_t asn_MBR_RLC_Status_ExtIEs_745[3]; +extern asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749; +extern asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_ExtIEs_749[3]; +extern asn_TYPE_descriptor_t asn_DEF_RSRPMRList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMRList_ExtIEs_specs_753; +extern asn_TYPE_member_t asn_MBR_RSRPMRList_ExtIEs_753[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757; +extern asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_ExtIEs_757[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_ExtIEs_specs_765; +extern asn_TYPE_member_t asn_MBR_ServedCell_ExtIEs_765[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_ExtIEs_specs_769; +extern asn_TYPE_member_t asn_MBR_ServedCell_Information_ExtIEs_769[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773; +extern asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformationExtIEs_773[3]; +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777; +extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_ExtIEs_777[3]; +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_ExtIEs_specs_781; +extern asn_TYPE_member_t asn_MBR_SubbandCQI_ExtIEs_781[3]; +extern asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785; +extern asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785[3]; +extern asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789; +extern asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_ExtIEs_789[3]; +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_ExtIEs_specs_793; +extern asn_TYPE_member_t asn_MBR_SubbandCQIItem_ExtIEs_793[3]; +extern asn_TYPE_descriptor_t asn_DEF_SULInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SULInformation_ExtIEs_specs_797; +extern asn_TYPE_member_t asn_MBR_SULInformation_ExtIEs_797[3]; +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801; +extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_ExtIEs_801[3]; +extern asn_TYPE_descriptor_t asn_DEF_TABasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_ExtIEs_specs_805; +extern asn_TYPE_member_t asn_MBR_TABasedMDT_ExtIEs_805[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_ExtIEs_specs_809; +extern asn_TYPE_member_t asn_MBR_TAIBasedMDT_ExtIEs_809[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_ExtIEs_specs_813; +extern asn_TYPE_member_t asn_MBR_TAI_Item_ExtIEs_813[3]; +extern asn_TYPE_descriptor_t asn_DEF_TABasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_ExtIEs_specs_817; +extern asn_TYPE_member_t asn_MBR_TABasedQMC_ExtIEs_817[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_ExtIEs_specs_821; +extern asn_TYPE_member_t asn_MBR_TAIBasedQMC_ExtIEs_821[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_ExtIEs_specs_825; +extern asn_TYPE_member_t asn_MBR_TDD_Info_ExtIEs_825[3]; +extern asn_TYPE_descriptor_t asn_DEF_TraceActivation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_ExtIEs_specs_829; +extern asn_TYPE_member_t asn_MBR_TraceActivation_ExtIEs_829[3]; +extern asn_TYPE_descriptor_t asn_DEF_Tunnel_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_ExtIEs_specs_833; +extern asn_TYPE_member_t asn_MBR_Tunnel_Information_ExtIEs_833[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837; +extern asn_TYPE_member_t asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841; +extern asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_ExtIEs_841[3]; +extern asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_ExtIEs_specs_845; +extern asn_TYPE_member_t asn_MBR_UESecurityCapabilities_ExtIEs_845[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849; +extern asn_TYPE_member_t asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_ExtIEs_853[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULandDLSharing_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_ExtIEs_specs_857; +extern asn_TYPE_member_t asn_MBR_ULandDLSharing_ExtIEs_857[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_ExtIEs_specs_861; +extern asn_TYPE_member_t asn_MBR_ULConfiguration_ExtIEs_861[3]; +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULOnlySharing_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_ExtIEs_specs_869; +extern asn_TYPE_member_t asn_MBR_ULOnlySharing_ExtIEs_869[3]; +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_ExtIEs_873[3]; +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_ExtIEs_877[3]; +extern asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881; +extern asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_ExtIEs_881[3]; +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_ExtIEs_specs_885; +extern asn_TYPE_member_t asn_MBR_WidebandCQI_ExtIEs_885[3]; +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889; +extern asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_ExtIEs_889[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolExtensionField_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.c new file mode 100644 index 0000000..b5e20dd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.c @@ -0,0 +1,4829 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Container.h" + +#include "ProtocolIE-Field.h" +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P91_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P92_constr_185 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P93_constr_187 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P94_constr_189 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P95_constr_191 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P96_constr_193 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P97_constr_195 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P98_constr_197 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P99_constr_199 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P100_constr_201 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P101_constr_203 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P102_constr_205 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P103_constr_207 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P104_constr_209 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P105_constr_211 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P106_constr_213 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P107_constr_215 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P108_constr_217 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P109_constr_219 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P110_constr_221 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P111_constr_223 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P112_constr_225 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P113_constr_227 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P114_constr_229 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P115_constr_231 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P116_constr_233 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P117_constr_235 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P118_constr_237 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P119_constr_239 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P0_specs_1 = { + sizeof(struct ProtocolIE_Container_119P0), + offsetof(struct ProtocolIE_Container_119P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P1_specs_3 = { + sizeof(struct ProtocolIE_Container_119P1), + offsetof(struct ProtocolIE_Container_119P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P1_tags_3, + sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P2_specs_5 = { + sizeof(struct ProtocolIE_Container_119P2), + offsetof(struct ProtocolIE_Container_119P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P2_tags_5, + sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P3_specs_7 = { + sizeof(struct ProtocolIE_Container_119P3), + offsetof(struct ProtocolIE_Container_119P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P3_tags_7, + sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P4_specs_9 = { + sizeof(struct ProtocolIE_Container_119P4), + offsetof(struct ProtocolIE_Container_119P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P4_tags_9, + sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P5_specs_11 = { + sizeof(struct ProtocolIE_Container_119P5), + offsetof(struct ProtocolIE_Container_119P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P5_tags_11, + sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P6_specs_13 = { + sizeof(struct ProtocolIE_Container_119P6), + offsetof(struct ProtocolIE_Container_119P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P6_tags_13, + sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P7_specs_15 = { + sizeof(struct ProtocolIE_Container_119P7), + offsetof(struct ProtocolIE_Container_119P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P7_tags_15, + sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P8_specs_17 = { + sizeof(struct ProtocolIE_Container_119P8), + offsetof(struct ProtocolIE_Container_119P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P8_tags_17, + sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P9_specs_19 = { + sizeof(struct ProtocolIE_Container_119P9), + offsetof(struct ProtocolIE_Container_119P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P9_tags_19, + sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P10_specs_21 = { + sizeof(struct ProtocolIE_Container_119P10), + offsetof(struct ProtocolIE_Container_119P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P10_tags_21, + sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P11_specs_23 = { + sizeof(struct ProtocolIE_Container_119P11), + offsetof(struct ProtocolIE_Container_119P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P11_tags_23, + sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P12_specs_25 = { + sizeof(struct ProtocolIE_Container_119P12), + offsetof(struct ProtocolIE_Container_119P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P12_tags_25, + sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P13_specs_27 = { + sizeof(struct ProtocolIE_Container_119P13), + offsetof(struct ProtocolIE_Container_119P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P13_tags_27, + sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P14_specs_29 = { + sizeof(struct ProtocolIE_Container_119P14), + offsetof(struct ProtocolIE_Container_119P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P14_tags_29, + sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P15_specs_31 = { + sizeof(struct ProtocolIE_Container_119P15), + offsetof(struct ProtocolIE_Container_119P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P15_tags_31, + sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverPreparationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P16_specs_33 = { + sizeof(struct ProtocolIE_Container_119P16), + offsetof(struct ProtocolIE_Container_119P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P16_tags_33, + sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverReport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P17_specs_35 = { + sizeof(struct ProtocolIE_Container_119P17), + offsetof(struct ProtocolIE_Container_119P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P17_tags_35, + sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SNStatusTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P18_specs_37 = { + sizeof(struct ProtocolIE_Container_119P18), + offsetof(struct ProtocolIE_Container_119P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P18_tags_37, + sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEContextRelease_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P19_specs_39 = { + sizeof(struct ProtocolIE_Container_119P19), + offsetof(struct ProtocolIE_Container_119P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P19_tags_39, + sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverCancel_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P20_specs_41 = { + sizeof(struct ProtocolIE_Container_119P20), + offsetof(struct ProtocolIE_Container_119P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P20 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P20_tags_41, + sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P21_specs_43 = { + sizeof(struct ProtocolIE_Container_119P21), + offsetof(struct ProtocolIE_Container_119P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P21 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P21_tags_43, + sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P22_specs_45 = { + sizeof(struct ProtocolIE_Container_119P22), + offsetof(struct ProtocolIE_Container_119P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P22 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P22_tags_45, + sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P23_specs_47 = { + sizeof(struct ProtocolIE_Container_119P23), + offsetof(struct ProtocolIE_Container_119P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P23 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P23_tags_47, + sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P24_specs_49 = { + sizeof(struct ProtocolIE_Container_119P24), + offsetof(struct ProtocolIE_Container_119P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P24 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P24_tags_49, + sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P25_specs_51 = { + sizeof(struct ProtocolIE_Container_119P25), + offsetof(struct ProtocolIE_Container_119P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P25 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P25_tags_51, + sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P26_specs_53 = { + sizeof(struct ProtocolIE_Container_119P26), + offsetof(struct ProtocolIE_Container_119P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P26 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P26_tags_53, + sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LoadInformation_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P27_specs_55 = { + sizeof(struct ProtocolIE_Container_119P27), + offsetof(struct ProtocolIE_Container_119P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P27 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P27_tags_55, + sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P28_specs_57 = { + sizeof(struct ProtocolIE_Container_119P28), + offsetof(struct ProtocolIE_Container_119P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P28 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P28_tags_57, + sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P29_specs_59 = { + sizeof(struct ProtocolIE_Container_119P29), + offsetof(struct ProtocolIE_Container_119P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P29 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P29_tags_59, + sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P30_specs_61 = { + sizeof(struct ProtocolIE_Container_119P30), + offsetof(struct ProtocolIE_Container_119P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P30 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P30_tags_61, + sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P31_specs_63 = { + sizeof(struct ProtocolIE_Container_119P31), + offsetof(struct ProtocolIE_Container_119P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P31 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P31_tags_63, + sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P32_specs_65 = { + sizeof(struct ProtocolIE_Container_119P32), + offsetof(struct ProtocolIE_Container_119P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P32 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P32_tags_65, + sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P33_specs_67 = { + sizeof(struct ProtocolIE_Container_119P33), + offsetof(struct ProtocolIE_Container_119P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P33 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P33_tags_67, + sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P34_specs_69 = { + sizeof(struct ProtocolIE_Container_119P34), + offsetof(struct ProtocolIE_Container_119P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P34 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P34_tags_69, + sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P35_specs_71 = { + sizeof(struct ProtocolIE_Container_119P35), + offsetof(struct ProtocolIE_Container_119P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P35 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P35_tags_71, + sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P36_specs_73 = { + sizeof(struct ProtocolIE_Container_119P36), + offsetof(struct ProtocolIE_Container_119P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P36 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P36_tags_73, + sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P37_specs_75 = { + sizeof(struct ProtocolIE_Container_119P37), + offsetof(struct ProtocolIE_Container_119P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P37 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P37_tags_75, + sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLFIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P38_specs_77 = { + sizeof(struct ProtocolIE_Container_119P38), + offsetof(struct ProtocolIE_Container_119P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P38 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P38_tags_77, + sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P39_specs_79 = { + sizeof(struct ProtocolIE_Container_119P39), + offsetof(struct ProtocolIE_Container_119P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P39 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P39_tags_79, + sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79) + /sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P39_tags_79, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79) + /sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P39_79, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P40_specs_81 = { + sizeof(struct ProtocolIE_Container_119P40), + offsetof(struct ProtocolIE_Container_119P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P40 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P40_tags_81, + sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81) + /sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P40_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81) + /sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P40_81, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P41_specs_83 = { + sizeof(struct ProtocolIE_Container_119P41), + offsetof(struct ProtocolIE_Container_119P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P41 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P41_tags_83, + sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83) + /sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P41_tags_83, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83) + /sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P41_83, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2Release_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P42_specs_85 = { + sizeof(struct ProtocolIE_Container_119P42), + offsetof(struct ProtocolIE_Container_119P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P42 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P42_tags_85, + sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85) + /sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P42_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85) + /sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P42_85, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2APMessageTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P43_specs_87 = { + sizeof(struct ProtocolIE_Container_119P43), + offsetof(struct ProtocolIE_Container_119P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P43 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P43_tags_87, + sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87) + /sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P43_tags_87, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87) + /sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P43_87, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P44_specs_89 = { + sizeof(struct ProtocolIE_Container_119P44), + offsetof(struct ProtocolIE_Container_119P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P44 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P44_tags_89, + sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89) + /sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P44_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89) + /sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P44_89, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P45_specs_91 = { + sizeof(struct ProtocolIE_Container_119P45), + offsetof(struct ProtocolIE_Container_119P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P45 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P45_tags_91, + sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91) + /sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P45_tags_91, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91) + /sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P45_91, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P46_specs_93 = { + sizeof(struct ProtocolIE_Container_119P46), + offsetof(struct ProtocolIE_Container_119P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P46 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P46_tags_93, + sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93) + /sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P46_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93) + /sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P46_93, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReconfigurationComplete_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P47_specs_95 = { + sizeof(struct ProtocolIE_Container_119P47), + offsetof(struct ProtocolIE_Container_119P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P47 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P47_tags_95, + sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95) + /sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P47_tags_95, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95) + /sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P47_95, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P48_specs_97 = { + sizeof(struct ProtocolIE_Container_119P48), + offsetof(struct ProtocolIE_Container_119P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P48 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P48_tags_97, + sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97) + /sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P48_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97) + /sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P48_97, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P49_specs_99 = { + sizeof(struct ProtocolIE_Container_119P49), + offsetof(struct ProtocolIE_Container_119P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P49 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P49_tags_99, + sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99) + /sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P49_tags_99, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99) + /sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P49_99, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P50_specs_101 = { + sizeof(struct ProtocolIE_Container_119P50), + offsetof(struct ProtocolIE_Container_119P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P50 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P50_tags_101, + sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101) + /sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P50_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101) + /sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P50_101, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P51_specs_103 = { + sizeof(struct ProtocolIE_Container_119P51), + offsetof(struct ProtocolIE_Container_119P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P51 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P51_tags_103, + sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103) + /sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P51_tags_103, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103) + /sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P51_103, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P52_specs_105 = { + sizeof(struct ProtocolIE_Container_119P52), + offsetof(struct ProtocolIE_Container_119P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P52 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P52_tags_105, + sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105) + /sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P52_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105) + /sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P52_105, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P53_specs_107 = { + sizeof(struct ProtocolIE_Container_119P53), + offsetof(struct ProtocolIE_Container_119P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P53 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P53_tags_107, + sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107) + /sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P53_tags_107, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107) + /sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P53_107, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P54_specs_109 = { + sizeof(struct ProtocolIE_Container_119P54), + offsetof(struct ProtocolIE_Container_119P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P54 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P54_tags_109, + sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109) + /sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P54_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109) + /sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P54_109, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P55_specs_111 = { + sizeof(struct ProtocolIE_Container_119P55), + offsetof(struct ProtocolIE_Container_119P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P55 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P55_tags_111, + sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111) + /sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P55_tags_111, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111) + /sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P55_111, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P56_specs_113 = { + sizeof(struct ProtocolIE_Container_119P56), + offsetof(struct ProtocolIE_Container_119P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P56 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P56_tags_113, + sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113) + /sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P56_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113) + /sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P56_113, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBCounterCheckRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P57_specs_115 = { + sizeof(struct ProtocolIE_Container_119P57), + offsetof(struct ProtocolIE_Container_119P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P57 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P57_tags_115, + sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115) + /sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P57_tags_115, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115) + /sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P57_115, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P58_specs_117 = { + sizeof(struct ProtocolIE_Container_119P58), + offsetof(struct ProtocolIE_Container_119P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P58 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P58_tags_117, + sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117) + /sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P58_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117) + /sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P58_117, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P59_specs_119 = { + sizeof(struct ProtocolIE_Container_119P59), + offsetof(struct ProtocolIE_Container_119P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P59 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P59_tags_119, + sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119) + /sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P59_tags_119, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119) + /sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P59_119, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P60_specs_121 = { + sizeof(struct ProtocolIE_Container_119P60), + offsetof(struct ProtocolIE_Container_119P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P60 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P60_tags_121, + sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121) + /sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P60_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121) + /sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P60_121, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P61_specs_123 = { + sizeof(struct ProtocolIE_Container_119P61), + offsetof(struct ProtocolIE_Container_119P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P61 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P61_tags_123, + sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123) + /sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P61_tags_123, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123) + /sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P61_123, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P62_specs_125 = { + sizeof(struct ProtocolIE_Container_119P62), + offsetof(struct ProtocolIE_Container_119P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P62 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P62_tags_125, + sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125) + /sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P62_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125) + /sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P62_125, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P63_specs_127 = { + sizeof(struct ProtocolIE_Container_119P63), + offsetof(struct ProtocolIE_Container_119P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P63 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P63_tags_127, + sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127) + /sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P63_tags_127, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127) + /sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P63_127, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P64_specs_129 = { + sizeof(struct ProtocolIE_Container_119P64), + offsetof(struct ProtocolIE_Container_119P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P64 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P64_tags_129, + sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129) + /sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P64_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129) + /sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P64_129, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P65_specs_131 = { + sizeof(struct ProtocolIE_Container_119P65), + offsetof(struct ProtocolIE_Container_119P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P65 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P65_tags_131, + sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131) + /sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P65_tags_131, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131) + /sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P65_131, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P66_specs_133 = { + sizeof(struct ProtocolIE_Container_119P66), + offsetof(struct ProtocolIE_Container_119P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P66 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P66_tags_133, + sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133) + /sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P66_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133) + /sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P66_133, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReconfigurationComplete_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P67_specs_135 = { + sizeof(struct ProtocolIE_Container_119P67), + offsetof(struct ProtocolIE_Container_119P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P67 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P67_tags_135, + sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135) + /sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P67_tags_135, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135) + /sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P67_135, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P68_specs_137 = { + sizeof(struct ProtocolIE_Container_119P68), + offsetof(struct ProtocolIE_Container_119P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P68 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P68_tags_137, + sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137) + /sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P68_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137) + /sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P68_137, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P69_specs_139 = { + sizeof(struct ProtocolIE_Container_119P69), + offsetof(struct ProtocolIE_Container_119P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P69 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P69_tags_139, + sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139) + /sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P69_tags_139, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139) + /sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P69_139, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P70_specs_141 = { + sizeof(struct ProtocolIE_Container_119P70), + offsetof(struct ProtocolIE_Container_119P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P70 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P70_tags_141, + sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141) + /sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P70_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141) + /sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P70_141, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P71_specs_143 = { + sizeof(struct ProtocolIE_Container_119P71), + offsetof(struct ProtocolIE_Container_119P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P71 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P71_tags_143, + sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143) + /sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P71_tags_143, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143) + /sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P71_143, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P72_specs_145 = { + sizeof(struct ProtocolIE_Container_119P72), + offsetof(struct ProtocolIE_Container_119P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P72 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P72_tags_145, + sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145) + /sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P72_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145) + /sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P72_145, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P73_specs_147 = { + sizeof(struct ProtocolIE_Container_119P73), + offsetof(struct ProtocolIE_Container_119P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P73 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P73_tags_147, + sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147) + /sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P73_tags_147, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147) + /sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P73_147, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P74_specs_149 = { + sizeof(struct ProtocolIE_Container_119P74), + offsetof(struct ProtocolIE_Container_119P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P74 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P74_tags_149, + sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149) + /sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P74_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149) + /sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P74_149, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P75_specs_151 = { + sizeof(struct ProtocolIE_Container_119P75), + offsetof(struct ProtocolIE_Container_119P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P75 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P75_tags_151, + sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151) + /sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P75_tags_151, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151) + /sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P75_151, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P76_specs_153 = { + sizeof(struct ProtocolIE_Container_119P76), + offsetof(struct ProtocolIE_Container_119P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P76 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P76_tags_153, + sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153) + /sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P76_tags_153, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153) + /sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P76_153, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P77_specs_155 = { + sizeof(struct ProtocolIE_Container_119P77), + offsetof(struct ProtocolIE_Container_119P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P77 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P77_tags_155, + sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155) + /sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P77_tags_155, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155) + /sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P77_155, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P78_specs_157 = { + sizeof(struct ProtocolIE_Container_119P78), + offsetof(struct ProtocolIE_Container_119P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P78 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P78_tags_157, + sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157) + /sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P78_tags_157, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157) + /sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P78_157, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBCounterCheckRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P79_specs_159 = { + sizeof(struct ProtocolIE_Container_119P79), + offsetof(struct ProtocolIE_Container_119P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P79 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P79_tags_159, + sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159) + /sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P79_tags_159, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159) + /sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P79_159, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P80_specs_161 = { + sizeof(struct ProtocolIE_Container_119P80), + offsetof(struct ProtocolIE_Container_119P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P80 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P80_tags_161, + sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161) + /sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P80_tags_161, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161) + /sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P80_161, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P81_specs_163 = { + sizeof(struct ProtocolIE_Container_119P81), + offsetof(struct ProtocolIE_Container_119P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P81 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P81_tags_163, + sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163) + /sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P81_tags_163, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163) + /sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P81_163, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RRCTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P82_specs_165 = { + sizeof(struct ProtocolIE_Container_119P82), + offsetof(struct ProtocolIE_Container_119P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P82 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P82_tags_165, + sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165) + /sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P82_tags_165, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165) + /sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P82_165, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P83_specs_167 = { + sizeof(struct ProtocolIE_Container_119P83), + offsetof(struct ProtocolIE_Container_119P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P83 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P83_tags_167, + sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167) + /sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P83_tags_167, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167) + /sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P83_167, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P84_specs_169 = { + sizeof(struct ProtocolIE_Container_119P84), + offsetof(struct ProtocolIE_Container_119P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P84 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P84_tags_169, + sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169) + /sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P84_tags_169, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169) + /sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P84_169, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2SetupReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P85_specs_171 = { + sizeof(struct ProtocolIE_Container_119P85), + offsetof(struct ProtocolIE_Container_119P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P85 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P85_tags_171, + sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171) + /sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P85_tags_171, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171) + /sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P85_171, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2SetupReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P86_specs_173 = { + sizeof(struct ProtocolIE_Container_119P86), + offsetof(struct ProtocolIE_Container_119P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P86 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P86_tags_173, + sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173) + /sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P86_tags_173, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173) + /sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P86_173, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P87_specs_175 = { + sizeof(struct ProtocolIE_Container_119P87), + offsetof(struct ProtocolIE_Container_119P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P87 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P87_tags_175, + sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175) + /sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P87_tags_175, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175) + /sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P87_175, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2SetupReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P88_specs_177 = { + sizeof(struct ProtocolIE_Container_119P88), + offsetof(struct ProtocolIE_Container_119P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P88 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P88_tags_177, + sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177) + /sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P88_tags_177, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177) + /sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P88_177, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2SetupReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P89_specs_179 = { + sizeof(struct ProtocolIE_Container_119P89), + offsetof(struct ProtocolIE_Container_119P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P89 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P89_tags_179, + sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179) + /sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P89_tags_179, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179) + /sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P89_179, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P90_specs_181 = { + sizeof(struct ProtocolIE_Container_119P90), + offsetof(struct ProtocolIE_Container_119P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P90 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P90_tags_181, + sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181) + /sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P90_tags_181, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181) + /sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P90_181, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P90_specs_181 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P91_183[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P91_tags_183[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P91_specs_183 = { + sizeof(struct ProtocolIE_Container_119P91), + offsetof(struct ProtocolIE_Container_119P91, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P91 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P91_tags_183, + sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183) + /sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P91_tags_183, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183) + /sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P91_constr_183, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P91_183, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P91_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P92_185[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCConfigUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P92_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P92_specs_185 = { + sizeof(struct ProtocolIE_Container_119P92), + offsetof(struct ProtocolIE_Container_119P92, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P92 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P92_tags_185, + sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185) + /sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P92_tags_185, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185) + /sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P92_constr_185, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P92_185, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P92_specs_185 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P93_187[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCConfigUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P93_tags_187[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P93_specs_187 = { + sizeof(struct ProtocolIE_Container_119P93), + offsetof(struct ProtocolIE_Container_119P93, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P93 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P93_tags_187, + sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187) + /sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P93_tags_187, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187) + /sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P93_constr_187, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P93_187, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P93_specs_187 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P94_189[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P94_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P94_specs_189 = { + sizeof(struct ProtocolIE_Container_119P94), + offsetof(struct ProtocolIE_Container_119P94, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P94 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P94_tags_189, + sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189) + /sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P94_tags_189, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189) + /sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P94_constr_189, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P94_189, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P94_specs_189 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P95_191[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCConfigUpdateAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P95_tags_191[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P95_specs_191 = { + sizeof(struct ProtocolIE_Container_119P95), + offsetof(struct ProtocolIE_Container_119P95, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P95 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P95_tags_191, + sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191) + /sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P95_tags_191, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191) + /sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P95_constr_191, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P95_191, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P95_specs_191 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P96_193[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCConfigUpdateAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P96_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P96_specs_193 = { + sizeof(struct ProtocolIE_Container_119P96), + offsetof(struct ProtocolIE_Container_119P96, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P96 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P96_tags_193, + sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193) + /sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P96_tags_193, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193) + /sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P96_constr_193, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P96_193, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P96_specs_193 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P97_195[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P97_tags_195[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P97_specs_195 = { + sizeof(struct ProtocolIE_Container_119P97), + offsetof(struct ProtocolIE_Container_119P97, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P97 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P97_tags_195, + sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195) + /sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P97_tags_195, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195) + /sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P97_constr_195, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P97_195, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P97_specs_195 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P98_197[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P98_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P98_specs_197 = { + sizeof(struct ProtocolIE_Container_119P98), + offsetof(struct ProtocolIE_Container_119P98, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P98 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P98_tags_197, + sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197) + /sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P98_tags_197, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197) + /sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P98_constr_197, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P98_197, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P98_specs_197 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P99_199[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P99_tags_199[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P99_specs_199 = { + sizeof(struct ProtocolIE_Container_119P99), + offsetof(struct ProtocolIE_Container_119P99, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P99 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P99_tags_199, + sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199) + /sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P99_tags_199, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199) + /sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P99_constr_199, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P99_199, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P99_specs_199 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P100_201[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P100_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P100_specs_201 = { + sizeof(struct ProtocolIE_Container_119P100), + offsetof(struct ProtocolIE_Container_119P100, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P100 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P100_tags_201, + sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201) + /sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P100_tags_201, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201) + /sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P100_constr_201, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P100_201, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P100_specs_201 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P101_203[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATDataUsageReport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P101_tags_203[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P101_specs_203 = { + sizeof(struct ProtocolIE_Container_119P101), + offsetof(struct ProtocolIE_Container_119P101, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P101 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P101_tags_203, + sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203) + /sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P101_tags_203, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203) + /sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P101_constr_203, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P101_203, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P101_specs_203 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P102_205[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBActivityNotification_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P102_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P102_specs_205 = { + sizeof(struct ProtocolIE_Container_119P102), + offsetof(struct ProtocolIE_Container_119P102, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P102 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P102_tags_205, + sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205) + /sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P102_tags_205, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205) + /sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P102_constr_205, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P102_205, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P102_specs_205 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P103_207[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCPartialResetRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P103_tags_207[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P103_specs_207 = { + sizeof(struct ProtocolIE_Container_119P103), + offsetof(struct ProtocolIE_Container_119P103, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P103 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P103_tags_207, + sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207) + /sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P103_tags_207, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207) + /sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P103_constr_207, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P103_207, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P103_specs_207 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P104_209[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCPartialResetConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P104_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P104_specs_209 = { + sizeof(struct ProtocolIE_Container_119P104), + offsetof(struct ProtocolIE_Container_119P104, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P104 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P104_tags_209, + sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209) + /sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P104_tags_209, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209) + /sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P104_constr_209, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P104_209, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P104_specs_209 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P105_211[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P105_tags_211[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P105_specs_211 = { + sizeof(struct ProtocolIE_Container_119P105), + offsetof(struct ProtocolIE_Container_119P105, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P105 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P105_tags_211, + sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211) + /sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P105_tags_211, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211) + /sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P105_constr_211, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P105_211, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P105_specs_211 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P106_213[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P106_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P106_specs_213 = { + sizeof(struct ProtocolIE_Container_119P106), + offsetof(struct ProtocolIE_Container_119P106, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P106 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P106_tags_213, + sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213) + /sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P106_tags_213, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213) + /sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P106_constr_213, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P106_213, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P106_specs_213 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P107_215[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P107_tags_215[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P107_specs_215 = { + sizeof(struct ProtocolIE_Container_119P107), + offsetof(struct ProtocolIE_Container_119P107, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P107 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P107_tags_215, + sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215) + /sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P107_tags_215, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215) + /sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P107_constr_215, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P107_215, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P107_specs_215 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P108_217[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P108_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P108_specs_217 = { + sizeof(struct ProtocolIE_Container_119P108), + offsetof(struct ProtocolIE_Container_119P108, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P108 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P108_tags_217, + sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217) + /sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P108_tags_217, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217) + /sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P108_constr_217, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P108_217, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P108_specs_217 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P109_219[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P109_tags_219[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P109_specs_219 = { + sizeof(struct ProtocolIE_Container_119P109), + offsetof(struct ProtocolIE_Container_119P109, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P109 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P109_tags_219, + sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219) + /sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P109_tags_219, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219) + /sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P109_constr_219, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P109_219, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P109_specs_219 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P110_221[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P110_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P110_specs_221 = { + sizeof(struct ProtocolIE_Container_119P110), + offsetof(struct ProtocolIE_Container_119P110, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P110 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P110_tags_221, + sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221) + /sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P110_tags_221, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221) + /sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P110_constr_221, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P110_221, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P110_specs_221 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P111_223[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P111_tags_223[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P111_specs_223 = { + sizeof(struct ProtocolIE_Container_119P111), + offsetof(struct ProtocolIE_Container_119P111, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P111 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P111_tags_223, + sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223) + /sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P111_tags_223, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223) + /sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P111_constr_223, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P111_223, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P111_specs_223 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P112_225[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2RemovalReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P112_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P112_specs_225 = { + sizeof(struct ProtocolIE_Container_119P112), + offsetof(struct ProtocolIE_Container_119P112, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P112 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P112_tags_225, + sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225) + /sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P112_tags_225, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225) + /sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P112_constr_225, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P112_225, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P112_specs_225 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P113_227[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2RemovalReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P113_tags_227[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P113_specs_227 = { + sizeof(struct ProtocolIE_Container_119P113), + offsetof(struct ProtocolIE_Container_119P113, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P113 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P113_tags_227, + sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227) + /sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P113_tags_227, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227) + /sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P113_constr_227, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P113_227, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P113_specs_227 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P114_229[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P114_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P114_specs_229 = { + sizeof(struct ProtocolIE_Container_119P114), + offsetof(struct ProtocolIE_Container_119P114, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P114 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P114_tags_229, + sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229) + /sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P114_tags_229, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229) + /sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P114_constr_229, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P114_229, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P114_specs_229 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P115_231[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2RemovalReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P115_tags_231[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P115_specs_231 = { + sizeof(struct ProtocolIE_Container_119P115), + offsetof(struct ProtocolIE_Container_119P115, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P115 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P115_tags_231, + sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231) + /sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P115_tags_231, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231) + /sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P115_constr_231, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P115_231, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P115_specs_231 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P116_233[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P116_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P116_specs_233 = { + sizeof(struct ProtocolIE_Container_119P116), + offsetof(struct ProtocolIE_Container_119P116, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P116 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P116_tags_233, + sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233) + /sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P116_tags_233, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233) + /sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P116_constr_233, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P116_233, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P116_specs_233 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P117_235[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P117_tags_235[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P117_specs_235 = { + sizeof(struct ProtocolIE_Container_119P117), + offsetof(struct ProtocolIE_Container_119P117, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P117 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P117_tags_235, + sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235) + /sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P117_tags_235, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235) + /sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P117_constr_235, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P117_235, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P117_specs_235 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P118_237[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataForwardingAddressIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P118_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P118_specs_237 = { + sizeof(struct ProtocolIE_Container_119P118), + offsetof(struct ProtocolIE_Container_119P118, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P118 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P118_tags_237, + sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237) + /sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P118_tags_237, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237) + /sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P118_constr_237, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P118_237, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P118_specs_237 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P119_239[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GNBStatusIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P119_tags_239[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P119_specs_239 = { + sizeof(struct ProtocolIE_Container_119P119), + offsetof(struct ProtocolIE_Container_119P119, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P119 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P119_tags_239, + sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239) + /sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P119_tags_239, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239) + /sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P119_constr_239, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P119_239, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P119_specs_239 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.h new file mode 100644 index 0000000..433ce28 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Container.h @@ -0,0 +1,1372 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubscriptionRequest_IEs; +struct RICsubscriptionResponse_IEs; +struct RICsubscriptionFailure_IEs; +struct RICsubscriptionDeleteRequest_IEs; +struct RICsubscriptionDeleteResponse_IEs; +struct RICsubscriptionDeleteFailure_IEs; +struct RICindication_IEs; +struct RICcontrolRequest_IEs; +struct RICcontrolAcknowledge_IEs; +struct RICcontrolFailure_IEs; +struct RICserviceUpdate_IEs; +struct RICserviceUpdateAcknowledge_IEs; +struct RICserviceUpdateFailure_IEs; +struct RICserviceQuery_IEs; +struct HandoverRequest_IEs; +struct HandoverRequestAcknowledge_IEs; +struct HandoverPreparationFailure_IEs; +struct HandoverReport_IEs; +struct SNStatusTransfer_IEs; +struct UEContextRelease_IEs; +struct HandoverCancel_IEs; +struct ErrorIndication_IEs; +struct ResetRequest_IEs; +struct ResetResponse_IEs; +struct X2SetupRequest_IEs; +struct X2SetupResponse_IEs; +struct X2SetupFailure_IEs; +struct LoadInformation_IEs; +struct ENBConfigurationUpdate_IEs; +struct ENBConfigurationUpdateAcknowledge_IEs; +struct ENBConfigurationUpdateFailure_IEs; +struct ResourceStatusRequest_IEs; +struct ResourceStatusResponse_IEs; +struct ResourceStatusFailure_IEs; +struct ResourceStatusUpdate_IEs; +struct MobilityChangeRequest_IEs; +struct MobilityChangeAcknowledge_IEs; +struct MobilityChangeFailure_IEs; +struct RLFIndication_IEs; +struct CellActivationRequest_IEs; +struct CellActivationResponse_IEs; +struct CellActivationFailure_IEs; +struct X2Release_IEs; +struct X2APMessageTransfer_IEs; +struct SeNBAdditionRequest_IEs; +struct SeNBAdditionRequestAcknowledge_IEs; +struct SeNBAdditionRequestReject_IEs; +struct SeNBReconfigurationComplete_IEs; +struct SeNBModificationRequest_IEs; +struct SeNBModificationRequestAcknowledge_IEs; +struct SeNBModificationRequestReject_IEs; +struct SeNBModificationRequired_IEs; +struct SeNBModificationConfirm_IEs; +struct SeNBModificationRefuse_IEs; +struct SeNBReleaseRequest_IEs; +struct SeNBReleaseRequired_IEs; +struct SeNBReleaseConfirm_IEs; +struct SeNBCounterCheckRequest_IEs; +struct X2RemovalRequest_IEs; +struct X2RemovalResponse_IEs; +struct X2RemovalFailure_IEs; +struct RetrieveUEContextRequest_IEs; +struct RetrieveUEContextResponse_IEs; +struct RetrieveUEContextFailure_IEs; +struct SgNBAdditionRequest_IEs; +struct SgNBAdditionRequestAcknowledge_IEs; +struct SgNBAdditionRequestReject_IEs; +struct SgNBReconfigurationComplete_IEs; +struct SgNBModificationRequest_IEs; +struct SgNBModificationRequestAcknowledge_IEs; +struct SgNBModificationRequestReject_IEs; +struct SgNBModificationRequired_IEs; +struct SgNBModificationConfirm_IEs; +struct SgNBModificationRefuse_IEs; +struct SgNBReleaseRequest_IEs; +struct SgNBReleaseRequestAcknowledge_IEs; +struct SgNBReleaseRequestReject_IEs; +struct SgNBReleaseRequired_IEs; +struct SgNBReleaseConfirm_IEs; +struct SgNBCounterCheckRequest_IEs; +struct SgNBChangeRequired_IEs; +struct SgNBChangeConfirm_IEs; +struct RRCTransfer_IEs; +struct SgNBChangeRefuse_IEs; +struct ENDCX2SetupRequest_IEs; +struct ENB_ENDCX2SetupReqIEs; +struct En_gNB_ENDCX2SetupReqIEs; +struct ENDCX2SetupResponse_IEs; +struct ENB_ENDCX2SetupReqAckIEs; +struct En_gNB_ENDCX2SetupReqAckIEs; +struct ENDCX2SetupFailure_IEs; +struct ENDCConfigurationUpdate_IEs; +struct ENB_ENDCConfigUpdateIEs; +struct En_gNB_ENDCConfigUpdateIEs; +struct ENDCConfigurationUpdateAcknowledge_IEs; +struct ENB_ENDCConfigUpdateAckIEs; +struct En_gNB_ENDCConfigUpdateAckIEs; +struct ENDCConfigurationUpdateFailure_IEs; +struct ENDCCellActivationRequest_IEs; +struct ENDCCellActivationResponse_IEs; +struct ENDCCellActivationFailure_IEs; +struct SecondaryRATDataUsageReport_IEs; +struct SgNBActivityNotification_IEs; +struct ENDCPartialResetRequired_IEs; +struct ENDCPartialResetConfirm_IEs; +struct EUTRANRCellResourceCoordinationRequest_IEs; +struct ENB_EUTRA_NRCellResourceCoordinationReqIEs; +struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs; +struct EUTRANRCellResourceCoordinationResponse_IEs; +struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs; +struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs; +struct ENDCX2RemovalRequest_IEs; +struct ENB_ENDCX2RemovalReqIEs; +struct En_gNB_ENDCX2RemovalReqIEs; +struct ENDCX2RemovalResponse_IEs; +struct ENB_ENDCX2RemovalReqAckIEs; +struct En_gNB_ENDCX2RemovalReqAckIEs; +struct ENDCX2RemovalFailure_IEs; +struct DataForwardingAddressIndication_IEs; +struct GNBStatusIndicationIEs; + +/* ProtocolIE-Container */ +typedef struct ProtocolIE_Container_119P0 { + A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P0_t; +typedef struct ProtocolIE_Container_119P1 { + A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P1_t; +typedef struct ProtocolIE_Container_119P2 { + A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P2_t; +typedef struct ProtocolIE_Container_119P3 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P3_t; +typedef struct ProtocolIE_Container_119P4 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P4_t; +typedef struct ProtocolIE_Container_119P5 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P5_t; +typedef struct ProtocolIE_Container_119P6 { + A_SEQUENCE_OF(struct RICindication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P6_t; +typedef struct ProtocolIE_Container_119P7 { + A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P7_t; +typedef struct ProtocolIE_Container_119P8 { + A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P8_t; +typedef struct ProtocolIE_Container_119P9 { + A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P9_t; +typedef struct ProtocolIE_Container_119P10 { + A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P10_t; +typedef struct ProtocolIE_Container_119P11 { + A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P11_t; +typedef struct ProtocolIE_Container_119P12 { + A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P12_t; +typedef struct ProtocolIE_Container_119P13 { + A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P13_t; +typedef struct ProtocolIE_Container_119P14 { + A_SEQUENCE_OF(struct HandoverRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P14_t; +typedef struct ProtocolIE_Container_119P15 { + A_SEQUENCE_OF(struct HandoverRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P15_t; +typedef struct ProtocolIE_Container_119P16 { + A_SEQUENCE_OF(struct HandoverPreparationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P16_t; +typedef struct ProtocolIE_Container_119P17 { + A_SEQUENCE_OF(struct HandoverReport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P17_t; +typedef struct ProtocolIE_Container_119P18 { + A_SEQUENCE_OF(struct SNStatusTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P18_t; +typedef struct ProtocolIE_Container_119P19 { + A_SEQUENCE_OF(struct UEContextRelease_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P19_t; +typedef struct ProtocolIE_Container_119P20 { + A_SEQUENCE_OF(struct HandoverCancel_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P20_t; +typedef struct ProtocolIE_Container_119P21 { + A_SEQUENCE_OF(struct ErrorIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P21_t; +typedef struct ProtocolIE_Container_119P22 { + A_SEQUENCE_OF(struct ResetRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P22_t; +typedef struct ProtocolIE_Container_119P23 { + A_SEQUENCE_OF(struct ResetResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P23_t; +typedef struct ProtocolIE_Container_119P24 { + A_SEQUENCE_OF(struct X2SetupRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P24_t; +typedef struct ProtocolIE_Container_119P25 { + A_SEQUENCE_OF(struct X2SetupResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P25_t; +typedef struct ProtocolIE_Container_119P26 { + A_SEQUENCE_OF(struct X2SetupFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P26_t; +typedef struct ProtocolIE_Container_119P27 { + A_SEQUENCE_OF(struct LoadInformation_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P27_t; +typedef struct ProtocolIE_Container_119P28 { + A_SEQUENCE_OF(struct ENBConfigurationUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P28_t; +typedef struct ProtocolIE_Container_119P29 { + A_SEQUENCE_OF(struct ENBConfigurationUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P29_t; +typedef struct ProtocolIE_Container_119P30 { + A_SEQUENCE_OF(struct ENBConfigurationUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P30_t; +typedef struct ProtocolIE_Container_119P31 { + A_SEQUENCE_OF(struct ResourceStatusRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P31_t; +typedef struct ProtocolIE_Container_119P32 { + A_SEQUENCE_OF(struct ResourceStatusResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P32_t; +typedef struct ProtocolIE_Container_119P33 { + A_SEQUENCE_OF(struct ResourceStatusFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P33_t; +typedef struct ProtocolIE_Container_119P34 { + A_SEQUENCE_OF(struct ResourceStatusUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P34_t; +typedef struct ProtocolIE_Container_119P35 { + A_SEQUENCE_OF(struct MobilityChangeRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P35_t; +typedef struct ProtocolIE_Container_119P36 { + A_SEQUENCE_OF(struct MobilityChangeAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P36_t; +typedef struct ProtocolIE_Container_119P37 { + A_SEQUENCE_OF(struct MobilityChangeFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P37_t; +typedef struct ProtocolIE_Container_119P38 { + A_SEQUENCE_OF(struct RLFIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P38_t; +typedef struct ProtocolIE_Container_119P39 { + A_SEQUENCE_OF(struct CellActivationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P39_t; +typedef struct ProtocolIE_Container_119P40 { + A_SEQUENCE_OF(struct CellActivationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P40_t; +typedef struct ProtocolIE_Container_119P41 { + A_SEQUENCE_OF(struct CellActivationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P41_t; +typedef struct ProtocolIE_Container_119P42 { + A_SEQUENCE_OF(struct X2Release_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P42_t; +typedef struct ProtocolIE_Container_119P43 { + A_SEQUENCE_OF(struct X2APMessageTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P43_t; +typedef struct ProtocolIE_Container_119P44 { + A_SEQUENCE_OF(struct SeNBAdditionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P44_t; +typedef struct ProtocolIE_Container_119P45 { + A_SEQUENCE_OF(struct SeNBAdditionRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P45_t; +typedef struct ProtocolIE_Container_119P46 { + A_SEQUENCE_OF(struct SeNBAdditionRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P46_t; +typedef struct ProtocolIE_Container_119P47 { + A_SEQUENCE_OF(struct SeNBReconfigurationComplete_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P47_t; +typedef struct ProtocolIE_Container_119P48 { + A_SEQUENCE_OF(struct SeNBModificationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P48_t; +typedef struct ProtocolIE_Container_119P49 { + A_SEQUENCE_OF(struct SeNBModificationRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P49_t; +typedef struct ProtocolIE_Container_119P50 { + A_SEQUENCE_OF(struct SeNBModificationRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P50_t; +typedef struct ProtocolIE_Container_119P51 { + A_SEQUENCE_OF(struct SeNBModificationRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P51_t; +typedef struct ProtocolIE_Container_119P52 { + A_SEQUENCE_OF(struct SeNBModificationConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P52_t; +typedef struct ProtocolIE_Container_119P53 { + A_SEQUENCE_OF(struct SeNBModificationRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P53_t; +typedef struct ProtocolIE_Container_119P54 { + A_SEQUENCE_OF(struct SeNBReleaseRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P54_t; +typedef struct ProtocolIE_Container_119P55 { + A_SEQUENCE_OF(struct SeNBReleaseRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P55_t; +typedef struct ProtocolIE_Container_119P56 { + A_SEQUENCE_OF(struct SeNBReleaseConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P56_t; +typedef struct ProtocolIE_Container_119P57 { + A_SEQUENCE_OF(struct SeNBCounterCheckRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P57_t; +typedef struct ProtocolIE_Container_119P58 { + A_SEQUENCE_OF(struct X2RemovalRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P58_t; +typedef struct ProtocolIE_Container_119P59 { + A_SEQUENCE_OF(struct X2RemovalResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P59_t; +typedef struct ProtocolIE_Container_119P60 { + A_SEQUENCE_OF(struct X2RemovalFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P60_t; +typedef struct ProtocolIE_Container_119P61 { + A_SEQUENCE_OF(struct RetrieveUEContextRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P61_t; +typedef struct ProtocolIE_Container_119P62 { + A_SEQUENCE_OF(struct RetrieveUEContextResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P62_t; +typedef struct ProtocolIE_Container_119P63 { + A_SEQUENCE_OF(struct RetrieveUEContextFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P63_t; +typedef struct ProtocolIE_Container_119P64 { + A_SEQUENCE_OF(struct SgNBAdditionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P64_t; +typedef struct ProtocolIE_Container_119P65 { + A_SEQUENCE_OF(struct SgNBAdditionRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P65_t; +typedef struct ProtocolIE_Container_119P66 { + A_SEQUENCE_OF(struct SgNBAdditionRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P66_t; +typedef struct ProtocolIE_Container_119P67 { + A_SEQUENCE_OF(struct SgNBReconfigurationComplete_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P67_t; +typedef struct ProtocolIE_Container_119P68 { + A_SEQUENCE_OF(struct SgNBModificationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P68_t; +typedef struct ProtocolIE_Container_119P69 { + A_SEQUENCE_OF(struct SgNBModificationRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P69_t; +typedef struct ProtocolIE_Container_119P70 { + A_SEQUENCE_OF(struct SgNBModificationRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P70_t; +typedef struct ProtocolIE_Container_119P71 { + A_SEQUENCE_OF(struct SgNBModificationRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P71_t; +typedef struct ProtocolIE_Container_119P72 { + A_SEQUENCE_OF(struct SgNBModificationConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P72_t; +typedef struct ProtocolIE_Container_119P73 { + A_SEQUENCE_OF(struct SgNBModificationRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P73_t; +typedef struct ProtocolIE_Container_119P74 { + A_SEQUENCE_OF(struct SgNBReleaseRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P74_t; +typedef struct ProtocolIE_Container_119P75 { + A_SEQUENCE_OF(struct SgNBReleaseRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P75_t; +typedef struct ProtocolIE_Container_119P76 { + A_SEQUENCE_OF(struct SgNBReleaseRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P76_t; +typedef struct ProtocolIE_Container_119P77 { + A_SEQUENCE_OF(struct SgNBReleaseRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P77_t; +typedef struct ProtocolIE_Container_119P78 { + A_SEQUENCE_OF(struct SgNBReleaseConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P78_t; +typedef struct ProtocolIE_Container_119P79 { + A_SEQUENCE_OF(struct SgNBCounterCheckRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P79_t; +typedef struct ProtocolIE_Container_119P80 { + A_SEQUENCE_OF(struct SgNBChangeRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P80_t; +typedef struct ProtocolIE_Container_119P81 { + A_SEQUENCE_OF(struct SgNBChangeConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P81_t; +typedef struct ProtocolIE_Container_119P82 { + A_SEQUENCE_OF(struct RRCTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P82_t; +typedef struct ProtocolIE_Container_119P83 { + A_SEQUENCE_OF(struct SgNBChangeRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P83_t; +typedef struct ProtocolIE_Container_119P84 { + A_SEQUENCE_OF(struct ENDCX2SetupRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P84_t; +typedef struct ProtocolIE_Container_119P85 { + A_SEQUENCE_OF(struct ENB_ENDCX2SetupReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P85_t; +typedef struct ProtocolIE_Container_119P86 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2SetupReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P86_t; +typedef struct ProtocolIE_Container_119P87 { + A_SEQUENCE_OF(struct ENDCX2SetupResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P87_t; +typedef struct ProtocolIE_Container_119P88 { + A_SEQUENCE_OF(struct ENB_ENDCX2SetupReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P88_t; +typedef struct ProtocolIE_Container_119P89 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2SetupReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P89_t; +typedef struct ProtocolIE_Container_119P90 { + A_SEQUENCE_OF(struct ENDCX2SetupFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P90_t; +typedef struct ProtocolIE_Container_119P91 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P91_t; +typedef struct ProtocolIE_Container_119P92 { + A_SEQUENCE_OF(struct ENB_ENDCConfigUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P92_t; +typedef struct ProtocolIE_Container_119P93 { + A_SEQUENCE_OF(struct En_gNB_ENDCConfigUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P93_t; +typedef struct ProtocolIE_Container_119P94 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P94_t; +typedef struct ProtocolIE_Container_119P95 { + A_SEQUENCE_OF(struct ENB_ENDCConfigUpdateAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P95_t; +typedef struct ProtocolIE_Container_119P96 { + A_SEQUENCE_OF(struct En_gNB_ENDCConfigUpdateAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P96_t; +typedef struct ProtocolIE_Container_119P97 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P97_t; +typedef struct ProtocolIE_Container_119P98 { + A_SEQUENCE_OF(struct ENDCCellActivationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P98_t; +typedef struct ProtocolIE_Container_119P99 { + A_SEQUENCE_OF(struct ENDCCellActivationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P99_t; +typedef struct ProtocolIE_Container_119P100 { + A_SEQUENCE_OF(struct ENDCCellActivationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P100_t; +typedef struct ProtocolIE_Container_119P101 { + A_SEQUENCE_OF(struct SecondaryRATDataUsageReport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P101_t; +typedef struct ProtocolIE_Container_119P102 { + A_SEQUENCE_OF(struct SgNBActivityNotification_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P102_t; +typedef struct ProtocolIE_Container_119P103 { + A_SEQUENCE_OF(struct ENDCPartialResetRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P103_t; +typedef struct ProtocolIE_Container_119P104 { + A_SEQUENCE_OF(struct ENDCPartialResetConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P104_t; +typedef struct ProtocolIE_Container_119P105 { + A_SEQUENCE_OF(struct EUTRANRCellResourceCoordinationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P105_t; +typedef struct ProtocolIE_Container_119P106 { + A_SEQUENCE_OF(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P106_t; +typedef struct ProtocolIE_Container_119P107 { + A_SEQUENCE_OF(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P107_t; +typedef struct ProtocolIE_Container_119P108 { + A_SEQUENCE_OF(struct EUTRANRCellResourceCoordinationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P108_t; +typedef struct ProtocolIE_Container_119P109 { + A_SEQUENCE_OF(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P109_t; +typedef struct ProtocolIE_Container_119P110 { + A_SEQUENCE_OF(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P110_t; +typedef struct ProtocolIE_Container_119P111 { + A_SEQUENCE_OF(struct ENDCX2RemovalRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P111_t; +typedef struct ProtocolIE_Container_119P112 { + A_SEQUENCE_OF(struct ENB_ENDCX2RemovalReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P112_t; +typedef struct ProtocolIE_Container_119P113 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2RemovalReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P113_t; +typedef struct ProtocolIE_Container_119P114 { + A_SEQUENCE_OF(struct ENDCX2RemovalResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P114_t; +typedef struct ProtocolIE_Container_119P115 { + A_SEQUENCE_OF(struct ENB_ENDCX2RemovalReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P115_t; +typedef struct ProtocolIE_Container_119P116 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2RemovalReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P116_t; +typedef struct ProtocolIE_Container_119P117 { + A_SEQUENCE_OF(struct ENDCX2RemovalFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P117_t; +typedef struct ProtocolIE_Container_119P118 { + A_SEQUENCE_OF(struct DataForwardingAddressIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P118_t; +typedef struct ProtocolIE_Container_119P119 { + A_SEQUENCE_OF(struct GNBStatusIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P119_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P20; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P20_specs_41; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P20_41[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P21; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P21_specs_43; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P21_43[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P22; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P22_specs_45; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P22_45[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P23; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P23_specs_47; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P23_47[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P24; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P24_specs_49; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P24_49[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P25; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P25_specs_51; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P25_51[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P26; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P26_specs_53; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P26_53[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P27; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P27_specs_55; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P27_55[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P28; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P28_specs_57; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P28_57[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P29; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P29_specs_59; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P29_59[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P30; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P30_specs_61; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P30_61[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P31; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P31_specs_63; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P31_63[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P32; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P32_specs_65; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P32_65[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P33; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P33_specs_67; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P33_67[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P34; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P34_specs_69; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P34_69[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P35; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P35_specs_71; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P35_71[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P36; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P36_specs_73; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P36_73[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P37; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P37_specs_75; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P37_75[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P38; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P38_specs_77; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P38_77[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P39; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P39_specs_79; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P39_79[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P40; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P40_specs_81; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P40_81[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P41; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P41_specs_83; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P41_83[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P42; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P42_specs_85; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P42_85[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P43; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P43_specs_87; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P43_87[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P44; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P44_specs_89; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P44_89[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P45; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P45_specs_91; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P45_91[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P46; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P46_specs_93; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P46_93[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P47; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P47_specs_95; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P47_95[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P48; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P48_specs_97; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P48_97[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P49; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P49_specs_99; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P49_99[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P50; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P50_specs_101; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P50_101[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P51; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P51_specs_103; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P51_103[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P52; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P52_specs_105; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P52_105[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P53; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P53_specs_107; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P53_107[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P54; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P54_specs_109; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P54_109[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P55; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P55_specs_111; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P55_111[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P56; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P56_specs_113; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P56_113[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P57; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P57_specs_115; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P57_115[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P58; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P58_specs_117; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P58_117[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P59; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P59_specs_119; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P59_119[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P60; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P60_specs_121; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P60_121[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P61; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P61_specs_123; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P61_123[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P62; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P62_specs_125; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P62_125[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P63; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P63_specs_127; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P63_127[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P64; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P64_specs_129; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P64_129[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P65; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P65_specs_131; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P65_131[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P66; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P66_specs_133; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P66_133[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P67; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P67_specs_135; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P67_135[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P68; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P68_specs_137; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P68_137[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P69; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P69_specs_139; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P69_139[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P70; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P70_specs_141; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P70_141[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P71; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P71_specs_143; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P71_143[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P72; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P72_specs_145; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P72_145[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P73; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P73_specs_147; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P73_147[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P74; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P74_specs_149; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P74_149[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P75; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P75_specs_151; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P75_151[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P76; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P76_specs_153; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P76_153[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P77; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P77_specs_155; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P77_155[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P78; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P78_specs_157; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P78_157[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P79; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P79_specs_159; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P79_159[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P80; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P80_specs_161; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P80_161[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P81; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P81_specs_163; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P81_163[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P82; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P82_specs_165; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P82_165[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P83; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P83_specs_167; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P83_167[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P84; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P84_specs_169; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P84_169[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P85; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P85_specs_171; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P85_171[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P86; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P86_specs_173; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P86_173[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P87; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P87_specs_175; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P87_175[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P88; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P88_specs_177; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P88_177[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P89; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P89_specs_179; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P89_179[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P90; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P90_specs_181; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P90_181[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P90_constr_181; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P91; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P91_specs_183; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P91_183[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P91_constr_183; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P92; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P92_specs_185; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P92_185[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P92_constr_185; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P93; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P93_specs_187; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P93_187[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P93_constr_187; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P94; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P94_specs_189; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P94_189[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P94_constr_189; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P95; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P95_specs_191; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P95_191[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P95_constr_191; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P96; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P96_specs_193; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P96_193[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P96_constr_193; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P97; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P97_specs_195; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P97_195[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P97_constr_195; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P98; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P98_specs_197; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P98_197[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P98_constr_197; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P99; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P99_specs_199; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P99_199[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P99_constr_199; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P100; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P100_specs_201; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P100_201[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P100_constr_201; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P101; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P101_specs_203; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P101_203[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P101_constr_203; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P102; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P102_specs_205; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P102_205[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P102_constr_205; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P103; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P103_specs_207; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P103_207[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P103_constr_207; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P104; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P104_specs_209; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P104_209[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P104_constr_209; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P105; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P105_specs_211; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P105_211[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P105_constr_211; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P106; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P106_specs_213; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P106_213[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P106_constr_213; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P107; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P107_specs_215; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P107_215[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P107_constr_215; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P108; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P108_specs_217; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P108_217[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P108_constr_217; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P109; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P109_specs_219; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P109_219[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P109_constr_219; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P110; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P110_specs_221; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P110_221[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P110_constr_221; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P111; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P111_specs_223; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P111_223[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P111_constr_223; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P112; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P112_specs_225; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P112_225[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P112_constr_225; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P113; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P113_specs_227; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P113_227[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P113_constr_227; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P114; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P114_specs_229; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P114_229[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P114_constr_229; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P115; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P115_specs_231; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P115_231[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P115_constr_231; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P116; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P116_specs_233; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P116_233[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P116_constr_233; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P117; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P117_specs_235; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P117_235[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P117_constr_235; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P118; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P118_specs_237; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P118_237[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P118_constr_237; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P119; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P119_specs_239; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P119_239[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P119_constr_239; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c new file mode 100644 index 0000000..c3f6a9d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c @@ -0,0 +1,28 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerList.h" + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h new file mode 100644 index 0000000..7c3ab4f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h @@ -0,0 +1,42 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000..8d35080 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c @@ -0,0 +1,28 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000..d7f1da4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h @@ -0,0 +1,42 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000..e8bb4c0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c @@ -0,0 +1,28 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000..86ecb89 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h @@ -0,0 +1,42 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.c new file mode 100644 index 0000000..0685dde --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.c @@ -0,0 +1,48582 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Field.h" + +static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 60011; +static const long asn_VAL_4_ignore = 1; +static const long asn_VAL_4_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_9_id_RICaction_Admitted_Item = 60013; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 60015; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } +}; +static const long asn_VAL_48_id_RANfunction_Item = 60001; +static const long asn_VAL_48_ignore = 1; +static const long asn_VAL_48_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RANfunction_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } +}; +static const long asn_VAL_49_id_RANfunctionID_Item = 60004; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_RANfunctionID_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } +}; +static const long asn_VAL_52_id_RANfunctionIEcause_Item = 60005; +static const long asn_VAL_52_ignore = 1; +static const long asn_VAL_52_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RANfunctionIEcause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } +}; +static const long asn_VAL_79_id_E_RABs_ToBeSetup_Item = 4; +static const long asn_VAL_79_ignore = 1; +static const long asn_VAL_79_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_E_RABs_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_91_id_E_RABs_Admitted_Item = 0; +static const long asn_VAL_91_ignore = 1; +static const long asn_VAL_91_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_E_RABs_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_112_id_E_RABs_SubjectToStatusTransfer_Item = 19; +static const long asn_VAL_112_ignore = 1; +static const long asn_VAL_112_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_E_RABs_SubjectToStatusTransfer_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToStatusTransfer_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1_rows } +}; +static const long asn_VAL_146_id_CellInformation_Item = 7; +static const long asn_VAL_146_ignore = 1; +static const long asn_VAL_146_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellInformation_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_146_id_CellInformation_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_146_ignore }, + { "&Value", aioc__type, &asn_DEF_CellInformation_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_146_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellInformation_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellInformation_ItemIEs_1_rows } +}; +static const long asn_VAL_166_id_CellToReport_Item = 31; +static const long asn_VAL_166_ignore = 1; +static const long asn_VAL_166_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellToReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_166_id_CellToReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_166_ignore }, + { "&Value", aioc__type, &asn_DEF_CellToReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_166_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellToReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellToReport_ItemIEs_1_rows } +}; +static const long asn_VAL_171_id_MeasurementInitiationResult_Item = 66; +static const long asn_VAL_171_ignore = 1; +static const long asn_VAL_171_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MeasurementInitiationResult_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_171_id_MeasurementInitiationResult_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_171_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementInitiationResult_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_171_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MeasurementInitiationResult_ItemIEs_1[] = { + { 1, 4, asn_IOS_MeasurementInitiationResult_ItemIEs_1_rows } +}; +static const long asn_VAL_172_id_MeasurementFailureCause_Item = 67; +static const long asn_VAL_172_ignore = 1; +static const long asn_VAL_172_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MeasurementFailureCause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_172_id_MeasurementFailureCause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_172_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementFailureCause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_172_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MeasurementFailureCause_ItemIEs_1[] = { + { 1, 4, asn_IOS_MeasurementFailureCause_ItemIEs_1_rows } +}; +static const long asn_VAL_178_id_CompleteFailureCauseInformation_Item = 69; +static const long asn_VAL_178_ignore = 1; +static const long asn_VAL_178_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CompleteFailureCauseInformation_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_178_id_CompleteFailureCauseInformation_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_178_ignore }, + { "&Value", aioc__type, &asn_DEF_CompleteFailureCauseInformation_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_178_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CompleteFailureCauseInformation_ItemIEs_1[] = { + { 1, 4, asn_IOS_CompleteFailureCauseInformation_ItemIEs_1_rows } +}; +static const long asn_VAL_182_id_CellMeasurementResult_Item = 33; +static const long asn_VAL_182_ignore = 1; +static const long asn_VAL_182_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellMeasurementResult_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_182_id_CellMeasurementResult_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_182_ignore }, + { "&Value", aioc__type, &asn_DEF_CellMeasurementResult_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_182_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellMeasurementResult_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellMeasurementResult_ItemIEs_1_rows } +}; +static const long asn_VAL_224_id_E_RABs_ToBeAdded_Item = 118; +static const long asn_VAL_224_reject = 0; +static const long asn_VAL_224_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_224_id_E_RABs_ToBeAdded_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_224_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_224_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_ItemIEs_1_rows } +}; +static const long asn_VAL_236_id_E_RABs_Admitted_ToBeAdded_Item = 121; +static const long asn_VAL_236_ignore = 1; +static const long asn_VAL_236_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_236_id_E_RABs_Admitted_ToBeAdded_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_236_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_236_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1_rows } +}; +static const long asn_VAL_258_id_E_RABs_ToBeAdded_ModReqItem = 125; +static const long asn_VAL_258_ignore = 1; +static const long asn_VAL_258_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_258_id_E_RABs_ToBeAdded_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_258_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_258_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_259_id_E_RABs_ToBeModified_ModReqItem = 126; +static const long asn_VAL_259_ignore = 1; +static const long asn_VAL_259_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_259_id_E_RABs_ToBeModified_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_259_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_259_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_260_id_E_RABs_ToBeReleased_ModReqItem = 127; +static const long asn_VAL_260_ignore = 1; +static const long asn_VAL_260_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_260_id_E_RABs_ToBeReleased_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_260_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_260_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_271_id_E_RABs_Admitted_ToBeAdded_ModAckItem = 131; +static const long asn_VAL_271_ignore = 1; +static const long asn_VAL_271_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_271_id_E_RABs_Admitted_ToBeAdded_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_271_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_271_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_272_id_E_RABs_Admitted_ToBeModified_ModAckItem = 132; +static const long asn_VAL_272_ignore = 1; +static const long asn_VAL_272_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_272_id_E_RABs_Admitted_ToBeModified_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_272_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_272_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_273_id_E_RABs_Admitted_ToBeReleased_ModAckItem = 133; +static const long asn_VAL_273_ignore = 1; +static const long asn_VAL_273_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_273_id_E_RABs_Admitted_ToBeReleased_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_273_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_273_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_288_id_E_RABs_ToBeReleased_ModReqdItem = 135; +static const long asn_VAL_288_ignore = 1; +static const long asn_VAL_288_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_288_id_E_RABs_ToBeReleased_ModReqdItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_288_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqdItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_288_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1_rows } +}; +static const long asn_VAL_310_id_E_RABs_ToBeReleased_RelReqItem = 138; +static const long asn_VAL_310_ignore = 1; +static const long asn_VAL_310_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_310_id_E_RABs_ToBeReleased_RelReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_310_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_RelReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_310_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1_rows } +}; +static const long asn_VAL_322_id_E_RABs_ToBeReleased_RelConfItem = 140; +static const long asn_VAL_322_ignore = 1; +static const long asn_VAL_322_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_322_id_E_RABs_ToBeReleased_RelConfItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_322_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_RelConfItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_322_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1_rows } +}; +static const long asn_VAL_328_id_E_RABs_SubjectToCounterCheckItem = 142; +static const long asn_VAL_328_ignore = 1; +static const long asn_VAL_328_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_328_id_E_RABs_SubjectToCounterCheckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_328_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToCounterCheckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_328_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1_rows } +}; +static const long asn_VAL_357_id_E_RABs_ToBeSetupRetrieve_Item = 174; +static const long asn_VAL_357_ignore = 1; +static const long asn_VAL_357_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_357_id_E_RABs_ToBeSetupRetrieve_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_357_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeSetupRetrieve_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_357_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1_rows } +}; +static const long asn_VAL_378_id_E_RABs_ToBeAdded_SgNBAddReq_Item = 209; +static const long asn_VAL_378_reject = 0; +static const long asn_VAL_378_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_378_id_E_RABs_ToBeAdded_SgNBAddReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_378_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_378_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1_rows } +}; +static const long asn_VAL_389_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item = 213; +static const long asn_VAL_389_ignore = 1; +static const long asn_VAL_389_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_389_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_389_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_389_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1_rows } +}; +static const long asn_VAL_411_id_E_RABs_ToBeAdded_SgNBModReq_Item = 216; +static const long asn_VAL_411_ignore = 1; +static const long asn_VAL_411_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_411_id_E_RABs_ToBeAdded_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_411_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_411_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_412_id_E_RABs_ToBeModified_SgNBModReq_Item = 217; +static const long asn_VAL_412_ignore = 1; +static const long asn_VAL_412_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_412_id_E_RABs_ToBeModified_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_412_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_412_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_413_id_E_RABs_ToBeReleased_SgNBModReq_Item = 218; +static const long asn_VAL_413_ignore = 1; +static const long asn_VAL_413_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_413_id_E_RABs_ToBeReleased_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_413_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_413_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_427_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item = 222; +static const long asn_VAL_427_ignore = 1; +static const long asn_VAL_427_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_427_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_427_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_427_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_428_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item = 223; +static const long asn_VAL_428_ignore = 1; +static const long asn_VAL_428_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_428_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_428_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_428_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_429_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item = 224; +static const long asn_VAL_429_ignore = 1; +static const long asn_VAL_429_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_429_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_429_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_429_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_445_id_E_RABs_ToBeReleased_SgNBModReqd_Item = 227; +static const long asn_VAL_445_ignore = 1; +static const long asn_VAL_445_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_445_id_E_RABs_ToBeReleased_SgNBModReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_445_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_445_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_446_id_E_RABs_ToBeModified_SgNBModReqd_Item = 228; +static const long asn_VAL_446_ignore = 1; +static const long asn_VAL_446_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_446_id_E_RABs_ToBeModified_SgNBModReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_446_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_446_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_454_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item = 295; +static const long asn_VAL_454_ignore = 1; +static const long asn_VAL_454_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_454_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_454_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_454_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1_rows } +}; +static const long asn_VAL_468_id_E_RABs_ToBeReleased_SgNBRelReq_Item = 232; +static const long asn_VAL_468_ignore = 1; +static const long asn_VAL_468_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_468_id_E_RABs_ToBeReleased_SgNBRelReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_468_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_468_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1_rows } +}; +static const long asn_VAL_474_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item = 319; +static const long asn_VAL_474_ignore = 1; +static const long asn_VAL_474_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_474_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_474_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_474_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1_rows } +}; +static const long asn_VAL_485_id_E_RABs_ToBeReleased_SgNBRelReqd_Item = 321; +static const long asn_VAL_485_ignore = 1; +static const long asn_VAL_485_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_485_id_E_RABs_ToBeReleased_SgNBRelReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_485_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_485_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_491_id_E_RABs_ToBeReleased_SgNBRelConf_Item = 234; +static const long asn_VAL_491_ignore = 1; +static const long asn_VAL_491_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_491_id_E_RABs_ToBeReleased_SgNBRelConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_491_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_491_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1_rows } +}; +static const long asn_VAL_496_id_E_RABs_SubjectToSgNBCounterCheck_Item = 236; +static const long asn_VAL_496_ignore = 1; +static const long asn_VAL_496_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_496_id_E_RABs_SubjectToSgNBCounterCheck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_496_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_496_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1_rows } +}; +static const long asn_VAL_508_id_E_RABs_ToBeReleased_SgNBChaConf_Item = 230; +static const long asn_VAL_508_ignore = 1; +static const long asn_VAL_508_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_508_id_E_RABs_ToBeReleased_SgNBChaConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_508_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_508_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1_rows } +}; +static const long asn_VAL_592_id_E_RABs_DataForwardingAddress_Item = 308; +static const long asn_VAL_592_ignore = 1; +static const long asn_VAL_592_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_592_id_E_RABs_DataForwardingAddress_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_592_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_DataForwardingAddress_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_592_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1_rows } +}; +static const long asn_VAL_1_id_RICrequestID = 60030; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_1_mandatory = 2; +static const long asn_VAL_2_id_RANfunctionID = 60003; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_2_mandatory = 2; +static const long asn_VAL_3_id_RICsubscription = 60033; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_3_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscription }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { + { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } +}; +static const long asn_VAL_5_id_RICrequestID = 60030; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_5_mandatory = 2; +static const long asn_VAL_6_id_RANfunctionID = 60003; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_6_mandatory = 2; +static const long asn_VAL_7_id_RICactions_Admitted = 60012; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_7_mandatory = 2; +static const long asn_VAL_8_id_RICactions_NotAdmitted = 60014; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_8_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } +}; +static const long asn_VAL_11_id_RICrequestID = 60030; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_11_mandatory = 2; +static const long asn_VAL_12_id_RANfunctionID = 60003; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_12_mandatory = 2; +static const long asn_VAL_13_id_RICactions_NotAdmitted = 60014; +static const long asn_VAL_13_reject = 0; +static const long asn_VAL_13_mandatory = 2; +static const long asn_VAL_14_id_CriticalityDiagnostics = 17; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } +}; +static const long asn_VAL_15_id_RICrequestID = 60030; +static const long asn_VAL_15_reject = 0; +static const long asn_VAL_15_mandatory = 2; +static const long asn_VAL_16_id_RANfunctionID = 60003; +static const long asn_VAL_16_reject = 0; +static const long asn_VAL_16_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } +}; +static const long asn_VAL_17_id_RICrequestID = 60030; +static const long asn_VAL_17_reject = 0; +static const long asn_VAL_17_mandatory = 2; +static const long asn_VAL_18_id_RANfunctionID = 60003; +static const long asn_VAL_18_reject = 0; +static const long asn_VAL_18_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } +}; +static const long asn_VAL_19_id_RICrequestID = 60030; +static const long asn_VAL_19_reject = 0; +static const long asn_VAL_19_mandatory = 2; +static const long asn_VAL_20_id_RANfunctionID = 60003; +static const long asn_VAL_20_reject = 0; +static const long asn_VAL_20_mandatory = 2; +static const long asn_VAL_21_id_RICcause = 60020; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_mandatory = 2; +static const long asn_VAL_22_id_CriticalityDiagnostics = 17; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_RICcause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Value", aioc__type, &asn_DEF_RICcause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } +}; +static const long asn_VAL_23_id_RICrequestID = 60030; +static const long asn_VAL_23_reject = 0; +static const long asn_VAL_23_mandatory = 2; +static const long asn_VAL_24_id_RANfunctionID = 60003; +static const long asn_VAL_24_reject = 0; +static const long asn_VAL_24_mandatory = 2; +static const long asn_VAL_25_id_RICactionID = 60017; +static const long asn_VAL_25_reject = 0; +static const long asn_VAL_25_mandatory = 2; +static const long asn_VAL_26_id_RICindicationSN = 60028; +static const long asn_VAL_26_reject = 0; +static const long asn_VAL_26_mandatory = 2; +static const long asn_VAL_27_id_RICindicationType = 60029; +static const long asn_VAL_27_reject = 0; +static const long asn_VAL_27_mandatory = 2; +static const long asn_VAL_28_id_RICindicationHeader = 60026; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_RICindicationMessage = 60027; +static const long asn_VAL_29_reject = 0; +static const long asn_VAL_29_mandatory = 2; +static const long asn_VAL_30_id_RICcallProcessID = 60019; +static const long asn_VAL_30_reject = 0; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, + { "&Value", aioc__type, &asn_DEF_RICactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICindicationSN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationSN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICindicationType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { + { 8, 4, asn_IOS_RICindication_IEs_1_rows } +}; +static const long asn_VAL_31_id_RICrequestID = 60030; +static const long asn_VAL_31_reject = 0; +static const long asn_VAL_31_mandatory = 2; +static const long asn_VAL_32_id_RANfunctionID = 60003; +static const long asn_VAL_32_reject = 0; +static const long asn_VAL_32_mandatory = 2; +static const long asn_VAL_33_id_RICcallProcessID = 60019; +static const long asn_VAL_33_reject = 0; +static const long asn_VAL_33_optional = 0; +static const long asn_VAL_34_id_RICcontrolHeader = 60022; +static const long asn_VAL_34_reject = 0; +static const long asn_VAL_34_mandatory = 2; +static const long asn_VAL_35_id_RICcontrolMessage = 60023; +static const long asn_VAL_35_reject = 0; +static const long asn_VAL_35_mandatory = 2; +static const long asn_VAL_36_id_RICcontrolAckRequest = 60021; +static const long asn_VAL_36_reject = 0; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICcontrolHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcontrolMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolAckRequest }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } +}; +static const long asn_VAL_37_id_RICrequestID = 60030; +static const long asn_VAL_37_reject = 0; +static const long asn_VAL_37_mandatory = 2; +static const long asn_VAL_38_id_RANfunctionID = 60003; +static const long asn_VAL_38_reject = 0; +static const long asn_VAL_38_mandatory = 2; +static const long asn_VAL_39_id_RICcallProcessID = 60019; +static const long asn_VAL_39_reject = 0; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_RICcontrolStatus = 60024; +static const long asn_VAL_40_reject = 0; +static const long asn_VAL_40_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICcontrolStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { + { 4, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_41_id_RICrequestID = 60030; +static const long asn_VAL_41_reject = 0; +static const long asn_VAL_41_mandatory = 2; +static const long asn_VAL_42_id_RANfunctionID = 60003; +static const long asn_VAL_42_reject = 0; +static const long asn_VAL_42_mandatory = 2; +static const long asn_VAL_43_id_RICcallProcessID = 60019; +static const long asn_VAL_43_reject = 0; +static const long asn_VAL_43_optional = 0; +static const long asn_VAL_44_id_RICcause = 60020; +static const long asn_VAL_44_ignore = 1; +static const long asn_VAL_44_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICcause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_ignore }, + { "&Value", aioc__type, &asn_DEF_RICcause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } +}; +static const long asn_VAL_45_id_RANfunctionsAdded = 60007; +static const long asn_VAL_45_reject = 0; +static const long asn_VAL_45_optional = 0; +static const long asn_VAL_46_id_RANfunctionsModified = 60009; +static const long asn_VAL_46_reject = 0; +static const long asn_VAL_46_optional = 0; +static const long asn_VAL_47_id_RANfunctionsDeleted = 60008; +static const long asn_VAL_47_reject = 0; +static const long asn_VAL_47_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RANfunctionsModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RANfunctionsDeleted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } +}; +static const long asn_VAL_50_id_RANfunctionsAccepted = 60006; +static const long asn_VAL_50_reject = 0; +static const long asn_VAL_50_optional = 0; +static const long asn_VAL_51_id_RANfunctionsRejected = 60010; +static const long asn_VAL_51_reject = 0; +static const long asn_VAL_51_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { + { 2, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_53_id_RANfunctionsRejected = 60010; +static const long asn_VAL_53_ignore = 1; +static const long asn_VAL_53_optional = 0; +static const long asn_VAL_54_id_TimeToWait = 22; +static const long asn_VAL_54_ignore = 1; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_CriticalityDiagnostics = 17; +static const long asn_VAL_55_ignore = 1; +static const long asn_VAL_55_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_56_id_RANfunctionsAccepted = 60006; +static const long asn_VAL_56_reject = 0; +static const long asn_VAL_56_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { + { 1, 4, asn_IOS_RICserviceQuery_IEs_1_rows } +}; +static const long asn_VAL_57_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_57_reject = 0; +static const long asn_VAL_57_mandatory = 2; +static const long asn_VAL_58_id_Cause = 5; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_mandatory = 2; +static const long asn_VAL_59_id_TargetCell_ID = 11; +static const long asn_VAL_59_reject = 0; +static const long asn_VAL_59_mandatory = 2; +static const long asn_VAL_60_id_GUMMEI_ID = 23; +static const long asn_VAL_60_reject = 0; +static const long asn_VAL_60_mandatory = 2; +static const long asn_VAL_61_id_UE_ContextInformation = 14; +static const long asn_VAL_61_reject = 0; +static const long asn_VAL_61_mandatory = 2; +static const long asn_VAL_62_id_UE_HistoryInformation = 15; +static const long asn_VAL_62_ignore = 1; +static const long asn_VAL_62_mandatory = 2; +static const long asn_VAL_63_id_TraceActivation = 13; +static const long asn_VAL_63_ignore = 1; +static const long asn_VAL_63_optional = 0; +static const long asn_VAL_64_id_SRVCCOperationPossible = 36; +static const long asn_VAL_64_ignore = 1; +static const long asn_VAL_64_optional = 0; +static const long asn_VAL_65_id_CSGMembershipStatus = 71; +static const long asn_VAL_65_reject = 0; +static const long asn_VAL_65_optional = 0; +static const long asn_VAL_66_id_MobilityInformation = 82; +static const long asn_VAL_66_ignore = 1; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_Masked_IMEISV = 98; +static const long asn_VAL_67_ignore = 1; +static const long asn_VAL_67_optional = 0; +static const long asn_VAL_68_id_UE_HistoryInformationFromTheUE = 105; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_optional = 0; +static const long asn_VAL_69_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_ProSeAuthorized = 103; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_UE_ContextReferenceAtSeNB = 153; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const long asn_VAL_72_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_72_reject = 0; +static const long asn_VAL_72_optional = 0; +static const long asn_VAL_73_id_V2XServicesAuthorized = 176; +static const long asn_VAL_73_ignore = 1; +static const long asn_VAL_73_optional = 0; +static const long asn_VAL_74_id_UE_ContextReferenceAtWT = 182; +static const long asn_VAL_74_ignore = 1; +static const long asn_VAL_74_optional = 0; +static const long asn_VAL_75_id_NRUESecurityCapabilities = 248; +static const long asn_VAL_75_ignore = 1; +static const long asn_VAL_75_optional = 0; +static const long asn_VAL_76_id_UE_ContextReferenceAtSgNB = 254; +static const long asn_VAL_76_ignore = 1; +static const long asn_VAL_76_optional = 0; +static const long asn_VAL_77_id_AerialUEsubscriptionInformation = 277; +static const long asn_VAL_77_ignore = 1; +static const long asn_VAL_77_optional = 0; +static const long asn_VAL_78_id_Subscription_Based_UE_DifferentiationInfo = 309; +static const long asn_VAL_78_ignore = 1; +static const long asn_VAL_78_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_TargetCell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_reject }, + { "&Value", aioc__type, &asn_DEF_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_UE_ContextInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_UE_HistoryInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_HistoryInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_ignore }, + { "&Value", aioc__type, &asn_DEF_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, + { "&Value", aioc__type, &asn_DEF_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_MobilityInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_ignore }, + { "&Value", aioc__type, &asn_DEF_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_UE_HistoryInformationFromTheUE }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_HistoryInformationFromTheUE }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Value", aioc__type, &asn_DEF_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_UE_ContextReferenceAtSeNB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtSeNB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_ignore }, + { "&Value", aioc__type, &asn_DEF_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_UE_ContextReferenceAtWT }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtWT }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_NRUESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_ignore }, + { "&Value", aioc__type, &asn_DEF_NRUESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_UE_ContextReferenceAtSgNB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtSgNB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_AerialUEsubscriptionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_ignore }, + { "&Value", aioc__type, &asn_DEF_AerialUEsubscriptionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_Subscription_Based_UE_DifferentiationInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_ignore }, + { "&Value", aioc__type, &asn_DEF_Subscription_Based_UE_DifferentiationInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRequest_IEs_1[] = { + { 22, 4, asn_IOS_HandoverRequest_IEs_1_rows } +}; +static const long asn_VAL_80_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_80_ignore = 1; +static const long asn_VAL_80_mandatory = 2; +static const long asn_VAL_81_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_81_ignore = 1; +static const long asn_VAL_81_mandatory = 2; +static const long asn_VAL_82_id_E_RABs_Admitted_List = 1; +static const long asn_VAL_82_ignore = 1; +static const long asn_VAL_82_mandatory = 2; +static const long asn_VAL_83_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_83_ignore = 1; +static const long asn_VAL_83_optional = 0; +static const long asn_VAL_84_id_TargeteNBtoSource_eNBTransparentContainer = 12; +static const long asn_VAL_84_ignore = 1; +static const long asn_VAL_84_mandatory = 2; +static const long asn_VAL_85_id_CriticalityDiagnostics = 17; +static const long asn_VAL_85_ignore = 1; +static const long asn_VAL_85_optional = 0; +static const long asn_VAL_86_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_86_ignore = 1; +static const long asn_VAL_86_optional = 0; +static const long asn_VAL_87_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_87_ignore = 1; +static const long asn_VAL_87_optional = 0; +static const long asn_VAL_88_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_88_ignore = 1; +static const long asn_VAL_88_optional = 0; +static const long asn_VAL_89_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_89_reject = 0; +static const long asn_VAL_89_optional = 0; +static const long asn_VAL_90_id_WT_UE_ContextKeptIndicator = 183; +static const long asn_VAL_90_ignore = 1; +static const long asn_VAL_90_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_E_RABs_Admitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_TargeteNBtoSource_eNBTransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_ignore }, + { "&Value", aioc__type, &asn_DEF_TargeteNBtoSource_eNBTransparentContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_WT_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRequestAcknowledge_IEs_1[] = { + { 11, 4, asn_IOS_HandoverRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_92_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_92_ignore = 1; +static const long asn_VAL_92_mandatory = 2; +static const long asn_VAL_93_id_Cause = 5; +static const long asn_VAL_93_ignore = 1; +static const long asn_VAL_93_mandatory = 2; +static const long asn_VAL_94_id_CriticalityDiagnostics = 17; +static const long asn_VAL_94_ignore = 1; +static const long asn_VAL_94_optional = 0; +static const long asn_VAL_95_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_95_ignore = 1; +static const long asn_VAL_95_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverPreparationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverPreparationFailure_IEs_1[] = { + { 4, 4, asn_IOS_HandoverPreparationFailure_IEs_1_rows } +}; +static const long asn_VAL_96_id_HandoverReportType = 54; +static const long asn_VAL_96_ignore = 1; +static const long asn_VAL_96_mandatory = 2; +static const long asn_VAL_97_id_Cause = 5; +static const long asn_VAL_97_ignore = 1; +static const long asn_VAL_97_mandatory = 2; +static const long asn_VAL_98_id_SourceCellECGI = 52; +static const long asn_VAL_98_ignore = 1; +static const long asn_VAL_98_mandatory = 2; +static const long asn_VAL_99_id_FailureCellECGI = 53; +static const long asn_VAL_99_ignore = 1; +static const long asn_VAL_99_mandatory = 2; +static const long asn_VAL_100_id_Re_establishmentCellECGI = 49; +static const long asn_VAL_100_ignore = 1; +static const long asn_VAL_100_conditional = 1; +static const long asn_VAL_101_id_TargetCellInUTRAN = 81; +static const long asn_VAL_101_ignore = 1; +static const long asn_VAL_101_conditional = 1; +static const long asn_VAL_102_id_SourceCellCRNTI = 83; +static const long asn_VAL_102_ignore = 1; +static const long asn_VAL_102_optional = 0; +static const long asn_VAL_103_id_MobilityInformation = 82; +static const long asn_VAL_103_ignore = 1; +static const long asn_VAL_103_optional = 0; +static const long asn_VAL_104_id_UE_RLF_Report_Container = 60; +static const long asn_VAL_104_ignore = 1; +static const long asn_VAL_104_optional = 0; +static const long asn_VAL_105_id_UE_RLF_Report_Container_for_extended_bands = 107; +static const long asn_VAL_105_ignore = 1; +static const long asn_VAL_105_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverReport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_HandoverReportType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverReportType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_SourceCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_FailureCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_Re_establishmentCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_TargetCellInUTRAN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, + { "&Value", aioc__type, &asn_DEF_TargetCellInUTRAN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_SourceCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_ignore }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_MobilityInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_UE_RLF_Report_Container }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_UE_RLF_Report_Container_for_extended_bands }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container_for_extended_bands }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverReport_IEs_1[] = { + { 10, 4, asn_IOS_HandoverReport_IEs_1_rows } +}; +static const long asn_VAL_106_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_106_reject = 0; +static const long asn_VAL_106_mandatory = 2; +static const long asn_VAL_107_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_107_reject = 0; +static const long asn_VAL_107_mandatory = 2; +static const long asn_VAL_108_id_E_RABs_SubjectToStatusTransfer_List = 18; +static const long asn_VAL_108_ignore = 1; +static const long asn_VAL_108_mandatory = 2; +static const long asn_VAL_109_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_109_reject = 0; +static const long asn_VAL_109_optional = 0; +static const long asn_VAL_110_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_110_reject = 0; +static const long asn_VAL_110_optional = 0; +static const long asn_VAL_111_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_111_ignore = 1; +static const long asn_VAL_111_optional = 0; +static const asn_ioc_cell_t asn_IOS_SNStatusTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_E_RABs_SubjectToStatusTransfer_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToStatusTransfer_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_optional } +}; +static const asn_ioc_set_t asn_IOS_SNStatusTransfer_IEs_1[] = { + { 6, 4, asn_IOS_SNStatusTransfer_IEs_1_rows } +}; +static const long asn_VAL_113_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_113_reject = 0; +static const long asn_VAL_113_mandatory = 2; +static const long asn_VAL_114_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_114_reject = 0; +static const long asn_VAL_114_mandatory = 2; +static const long asn_VAL_115_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_115_reject = 0; +static const long asn_VAL_115_optional = 0; +static const long asn_VAL_116_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_116_reject = 0; +static const long asn_VAL_116_optional = 0; +static const long asn_VAL_117_id_SIPTO_BearerDeactivationIndication = 164; +static const long asn_VAL_117_ignore = 1; +static const long asn_VAL_117_optional = 0; +static const long asn_VAL_118_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_118_ignore = 1; +static const long asn_VAL_118_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEContextRelease_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_115_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_115_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_115_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_116_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_116_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_116_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_117_id_SIPTO_BearerDeactivationIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_117_ignore }, + { "&Value", aioc__type, &asn_DEF_SIPTOBearerDeactivationIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_117_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_118_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_118_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_118_optional } +}; +static const asn_ioc_set_t asn_IOS_UEContextRelease_IEs_1[] = { + { 6, 4, asn_IOS_UEContextRelease_IEs_1_rows } +}; +static const long asn_VAL_119_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_119_reject = 0; +static const long asn_VAL_119_mandatory = 2; +static const long asn_VAL_120_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_120_ignore = 1; +static const long asn_VAL_120_optional = 0; +static const long asn_VAL_121_id_Cause = 5; +static const long asn_VAL_121_ignore = 1; +static const long asn_VAL_121_mandatory = 2; +static const long asn_VAL_122_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_122_reject = 0; +static const long asn_VAL_122_optional = 0; +static const long asn_VAL_123_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_123_ignore = 1; +static const long asn_VAL_123_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverCancel_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_119_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_119_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_119_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_120_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_120_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_120_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_121_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_121_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_121_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_122_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_122_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_122_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_123_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_123_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_123_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverCancel_IEs_1[] = { + { 5, 4, asn_IOS_HandoverCancel_IEs_1_rows } +}; +static const long asn_VAL_124_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_124_ignore = 1; +static const long asn_VAL_124_optional = 0; +static const long asn_VAL_125_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_125_ignore = 1; +static const long asn_VAL_125_optional = 0; +static const long asn_VAL_126_id_Cause = 5; +static const long asn_VAL_126_ignore = 1; +static const long asn_VAL_126_optional = 0; +static const long asn_VAL_127_id_CriticalityDiagnostics = 17; +static const long asn_VAL_127_ignore = 1; +static const long asn_VAL_127_optional = 0; +static const long asn_VAL_128_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_128_ignore = 1; +static const long asn_VAL_128_optional = 0; +static const long asn_VAL_129_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_129_ignore = 1; +static const long asn_VAL_129_optional = 0; +static const long asn_VAL_130_id_Old_SgNB_UE_X2AP_ID = 264; +static const long asn_VAL_130_ignore = 1; +static const long asn_VAL_130_optional = 0; +static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_124_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_124_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_124_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_125_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_125_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_125_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_126_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_126_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_126_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_127_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_127_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_127_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_128_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_128_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_128_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_129_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_129_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_129_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_130_id_Old_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_130_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_130_optional } +}; +static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { + { 7, 4, asn_IOS_ErrorIndication_IEs_1_rows } +}; +static const long asn_VAL_131_id_Cause = 5; +static const long asn_VAL_131_ignore = 1; +static const long asn_VAL_131_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResetRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_131_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_131_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_131_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResetRequest_IEs_1[] = { + { 1, 4, asn_IOS_ResetRequest_IEs_1_rows } +}; +static const long asn_VAL_132_id_CriticalityDiagnostics = 17; +static const long asn_VAL_132_ignore = 1; +static const long asn_VAL_132_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResetResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_132_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_132_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_132_optional } +}; +static const asn_ioc_set_t asn_IOS_ResetResponse_IEs_1[] = { + { 1, 4, asn_IOS_ResetResponse_IEs_1_rows } +}; +static const long asn_VAL_133_id_GlobalENB_ID = 21; +static const long asn_VAL_133_reject = 0; +static const long asn_VAL_133_mandatory = 2; +static const long asn_VAL_134_id_ServedCells = 20; +static const long asn_VAL_134_reject = 0; +static const long asn_VAL_134_mandatory = 2; +static const long asn_VAL_135_id_GUGroupIDList = 24; +static const long asn_VAL_135_reject = 0; +static const long asn_VAL_135_optional = 0; +static const long asn_VAL_136_id_LHN_ID = 159; +static const long asn_VAL_136_ignore = 1; +static const long asn_VAL_136_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_133_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_133_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_133_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_134_id_ServedCells }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_134_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_134_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_135_id_GUGroupIDList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_135_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_135_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_136_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_136_ignore }, + { "&Value", aioc__type, &asn_DEF_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_136_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupRequest_IEs_1[] = { + { 4, 4, asn_IOS_X2SetupRequest_IEs_1_rows } +}; +static const long asn_VAL_137_id_GlobalENB_ID = 21; +static const long asn_VAL_137_reject = 0; +static const long asn_VAL_137_mandatory = 2; +static const long asn_VAL_138_id_ServedCells = 20; +static const long asn_VAL_138_reject = 0; +static const long asn_VAL_138_mandatory = 2; +static const long asn_VAL_139_id_GUGroupIDList = 24; +static const long asn_VAL_139_reject = 0; +static const long asn_VAL_139_optional = 0; +static const long asn_VAL_140_id_CriticalityDiagnostics = 17; +static const long asn_VAL_140_ignore = 1; +static const long asn_VAL_140_optional = 0; +static const long asn_VAL_141_id_LHN_ID = 159; +static const long asn_VAL_141_ignore = 1; +static const long asn_VAL_141_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_137_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_137_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_137_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_138_id_ServedCells }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_138_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_138_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_139_id_GUGroupIDList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_139_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_139_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_140_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_140_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_140_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_141_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_141_ignore }, + { "&Value", aioc__type, &asn_DEF_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_141_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupResponse_IEs_1[] = { + { 5, 4, asn_IOS_X2SetupResponse_IEs_1_rows } +}; +static const long asn_VAL_142_id_Cause = 5; +static const long asn_VAL_142_ignore = 1; +static const long asn_VAL_142_mandatory = 2; +static const long asn_VAL_143_id_TimeToWait = 22; +static const long asn_VAL_143_ignore = 1; +static const long asn_VAL_143_optional = 0; +static const long asn_VAL_144_id_CriticalityDiagnostics = 17; +static const long asn_VAL_144_ignore = 1; +static const long asn_VAL_144_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_142_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_142_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_142_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_143_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_143_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_143_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_144_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_144_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_144_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupFailure_IEs_1[] = { + { 3, 4, asn_IOS_X2SetupFailure_IEs_1_rows } +}; +static const long asn_VAL_145_id_CellInformation = 6; +static const long asn_VAL_145_ignore = 1; +static const long asn_VAL_145_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_LoadInformation_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_145_id_CellInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_145_ignore }, + { "&Value", aioc__type, &asn_DEF_CellInformation_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_145_mandatory } +}; +static const asn_ioc_set_t asn_IOS_LoadInformation_IEs_1[] = { + { 1, 4, asn_IOS_LoadInformation_IEs_1_rows } +}; +static const long asn_VAL_147_id_ServedCellsToAdd = 25; +static const long asn_VAL_147_reject = 0; +static const long asn_VAL_147_optional = 0; +static const long asn_VAL_148_id_ServedCellsToModify = 26; +static const long asn_VAL_148_reject = 0; +static const long asn_VAL_148_optional = 0; +static const long asn_VAL_149_id_ServedCellsToDelete = 27; +static const long asn_VAL_149_reject = 0; +static const long asn_VAL_149_optional = 0; +static const long asn_VAL_150_id_GUGroupIDToAddList = 34; +static const long asn_VAL_150_reject = 0; +static const long asn_VAL_150_optional = 0; +static const long asn_VAL_151_id_GUGroupIDToDeleteList = 35; +static const long asn_VAL_151_reject = 0; +static const long asn_VAL_151_optional = 0; +static const long asn_VAL_152_id_CoverageModificationList = 143; +static const long asn_VAL_152_reject = 0; +static const long asn_VAL_152_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_147_id_ServedCellsToAdd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_147_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_147_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_148_id_ServedCellsToModify }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_148_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCellsToModify }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_148_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_149_id_ServedCellsToDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_149_reject }, + { "&Value", aioc__type, &asn_DEF_Old_ECGIs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_149_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_150_id_GUGroupIDToAddList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_150_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_150_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_151_id_GUGroupIDToDeleteList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_151_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_151_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_152_id_CoverageModificationList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_152_reject }, + { "&Value", aioc__type, &asn_DEF_CoverageModificationList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_152_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdate_IEs_1[] = { + { 6, 4, asn_IOS_ENBConfigurationUpdate_IEs_1_rows } +}; +static const long asn_VAL_153_id_CriticalityDiagnostics = 17; +static const long asn_VAL_153_ignore = 1; +static const long asn_VAL_153_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_153_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_153_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_153_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1[] = { + { 1, 4, asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_154_id_Cause = 5; +static const long asn_VAL_154_ignore = 1; +static const long asn_VAL_154_mandatory = 2; +static const long asn_VAL_155_id_TimeToWait = 22; +static const long asn_VAL_155_ignore = 1; +static const long asn_VAL_155_optional = 0; +static const long asn_VAL_156_id_CriticalityDiagnostics = 17; +static const long asn_VAL_156_ignore = 1; +static const long asn_VAL_156_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_154_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_154_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_154_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_155_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_155_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_155_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_156_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_156_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_156_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENBConfigurationUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_157_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_157_reject = 0; +static const long asn_VAL_157_mandatory = 2; +static const long asn_VAL_158_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_158_ignore = 1; +static const long asn_VAL_158_conditional = 1; +static const long asn_VAL_159_id_Registration_Request = 28; +static const long asn_VAL_159_reject = 0; +static const long asn_VAL_159_mandatory = 2; +static const long asn_VAL_160_id_ReportCharacteristics = 38; +static const long asn_VAL_160_reject = 0; +static const long asn_VAL_160_optional = 0; +static const long asn_VAL_161_id_CellToReport = 29; +static const long asn_VAL_161_ignore = 1; +static const long asn_VAL_161_mandatory = 2; +static const long asn_VAL_162_id_ReportingPeriodicity = 30; +static const long asn_VAL_162_ignore = 1; +static const long asn_VAL_162_optional = 0; +static const long asn_VAL_163_id_PartialSuccessIndicator = 64; +static const long asn_VAL_163_ignore = 1; +static const long asn_VAL_163_optional = 0; +static const long asn_VAL_164_id_ReportingPeriodicityRSRPMR = 109; +static const long asn_VAL_164_ignore = 1; +static const long asn_VAL_164_optional = 0; +static const long asn_VAL_165_id_ReportingPeriodicityCSIR = 145; +static const long asn_VAL_165_ignore = 1; +static const long asn_VAL_165_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_157_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_157_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_157_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_158_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_158_ignore }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_158_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_159_id_Registration_Request }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_159_reject }, + { "&Value", aioc__type, &asn_DEF_Registration_Request }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_159_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_160_id_ReportCharacteristics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_160_reject }, + { "&Value", aioc__type, &asn_DEF_ReportCharacteristics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_160_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_161_id_CellToReport }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_161_ignore }, + { "&Value", aioc__type, &asn_DEF_CellToReport_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_161_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_162_id_ReportingPeriodicity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_162_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_162_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_163_id_PartialSuccessIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_163_ignore }, + { "&Value", aioc__type, &asn_DEF_PartialSuccessIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_163_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_164_id_ReportingPeriodicityRSRPMR }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_164_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicityRSRPMR }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_164_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_165_id_ReportingPeriodicityCSIR }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_165_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicityCSIR }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_165_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusRequest_IEs_1[] = { + { 9, 4, asn_IOS_ResourceStatusRequest_IEs_1_rows } +}; +static const long asn_VAL_167_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_167_reject = 0; +static const long asn_VAL_167_mandatory = 2; +static const long asn_VAL_168_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_168_reject = 0; +static const long asn_VAL_168_mandatory = 2; +static const long asn_VAL_169_id_CriticalityDiagnostics = 17; +static const long asn_VAL_169_ignore = 1; +static const long asn_VAL_169_optional = 0; +static const long asn_VAL_170_id_MeasurementInitiationResult_List = 65; +static const long asn_VAL_170_ignore = 1; +static const long asn_VAL_170_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_167_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_167_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_167_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_168_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_168_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_168_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_169_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_169_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_169_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_170_id_MeasurementInitiationResult_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_170_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementInitiationResult_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_170_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusResponse_IEs_1[] = { + { 4, 4, asn_IOS_ResourceStatusResponse_IEs_1_rows } +}; +static const long asn_VAL_173_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_173_reject = 0; +static const long asn_VAL_173_mandatory = 2; +static const long asn_VAL_174_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_174_reject = 0; +static const long asn_VAL_174_mandatory = 2; +static const long asn_VAL_175_id_Cause = 5; +static const long asn_VAL_175_ignore = 1; +static const long asn_VAL_175_mandatory = 2; +static const long asn_VAL_176_id_CriticalityDiagnostics = 17; +static const long asn_VAL_176_ignore = 1; +static const long asn_VAL_176_optional = 0; +static const long asn_VAL_177_id_CompleteFailureCauseInformation_List = 68; +static const long asn_VAL_177_ignore = 1; +static const long asn_VAL_177_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_173_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_173_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_173_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_174_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_174_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_174_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_175_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_175_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_175_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_176_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_176_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_176_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_177_id_CompleteFailureCauseInformation_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_177_ignore }, + { "&Value", aioc__type, &asn_DEF_CompleteFailureCauseInformation_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_177_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusFailure_IEs_1[] = { + { 5, 4, asn_IOS_ResourceStatusFailure_IEs_1_rows } +}; +static const long asn_VAL_179_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_179_reject = 0; +static const long asn_VAL_179_mandatory = 2; +static const long asn_VAL_180_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_180_reject = 0; +static const long asn_VAL_180_mandatory = 2; +static const long asn_VAL_181_id_CellMeasurementResult = 32; +static const long asn_VAL_181_ignore = 1; +static const long asn_VAL_181_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResourceStatusUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_179_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_179_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_179_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_180_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_180_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_180_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_181_id_CellMeasurementResult }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_181_ignore }, + { "&Value", aioc__type, &asn_DEF_CellMeasurementResult_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_181_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusUpdate_IEs_1[] = { + { 3, 4, asn_IOS_ResourceStatusUpdate_IEs_1_rows } +}; +static const long asn_VAL_183_id_ENB1_Cell_ID = 43; +static const long asn_VAL_183_reject = 0; +static const long asn_VAL_183_mandatory = 2; +static const long asn_VAL_184_id_ENB2_Cell_ID = 44; +static const long asn_VAL_184_reject = 0; +static const long asn_VAL_184_mandatory = 2; +static const long asn_VAL_185_id_ENB1_Mobility_Parameters = 46; +static const long asn_VAL_185_ignore = 1; +static const long asn_VAL_185_optional = 0; +static const long asn_VAL_186_id_ENB2_Proposed_Mobility_Parameters = 45; +static const long asn_VAL_186_reject = 0; +static const long asn_VAL_186_mandatory = 2; +static const long asn_VAL_187_id_Cause = 5; +static const long asn_VAL_187_reject = 0; +static const long asn_VAL_187_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MobilityChangeRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_183_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_183_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_183_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_184_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_184_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_184_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_185_id_ENB1_Mobility_Parameters }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_185_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_185_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_186_id_ENB2_Proposed_Mobility_Parameters }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_186_reject }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_186_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_187_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_187_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_187_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeRequest_IEs_1[] = { + { 5, 4, asn_IOS_MobilityChangeRequest_IEs_1_rows } +}; +static const long asn_VAL_188_id_ENB1_Cell_ID = 43; +static const long asn_VAL_188_reject = 0; +static const long asn_VAL_188_mandatory = 2; +static const long asn_VAL_189_id_ENB2_Cell_ID = 44; +static const long asn_VAL_189_reject = 0; +static const long asn_VAL_189_mandatory = 2; +static const long asn_VAL_190_id_CriticalityDiagnostics = 17; +static const long asn_VAL_190_ignore = 1; +static const long asn_VAL_190_optional = 0; +static const asn_ioc_cell_t asn_IOS_MobilityChangeAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_188_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_188_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_188_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_189_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_189_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_189_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_190_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_190_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_190_optional } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeAcknowledge_IEs_1[] = { + { 3, 4, asn_IOS_MobilityChangeAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_191_id_ENB1_Cell_ID = 43; +static const long asn_VAL_191_ignore = 1; +static const long asn_VAL_191_mandatory = 2; +static const long asn_VAL_192_id_ENB2_Cell_ID = 44; +static const long asn_VAL_192_ignore = 1; +static const long asn_VAL_192_mandatory = 2; +static const long asn_VAL_193_id_Cause = 5; +static const long asn_VAL_193_ignore = 1; +static const long asn_VAL_193_mandatory = 2; +static const long asn_VAL_194_id_ENB2_Mobility_Parameters_Modification_Range = 47; +static const long asn_VAL_194_ignore = 1; +static const long asn_VAL_194_optional = 0; +static const long asn_VAL_195_id_CriticalityDiagnostics = 17; +static const long asn_VAL_195_ignore = 1; +static const long asn_VAL_195_optional = 0; +static const asn_ioc_cell_t asn_IOS_MobilityChangeFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_191_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_191_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_191_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_192_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_192_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_192_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_193_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_193_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_193_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_194_id_ENB2_Mobility_Parameters_Modification_Range }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_194_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersModificationRange }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_194_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_195_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_195_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_195_optional } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeFailure_IEs_1[] = { + { 5, 4, asn_IOS_MobilityChangeFailure_IEs_1_rows } +}; +static const long asn_VAL_196_id_FailureCellPCI = 48; +static const long asn_VAL_196_ignore = 1; +static const long asn_VAL_196_mandatory = 2; +static const long asn_VAL_197_id_Re_establishmentCellECGI = 49; +static const long asn_VAL_197_ignore = 1; +static const long asn_VAL_197_mandatory = 2; +static const long asn_VAL_198_id_FailureCellCRNTI = 50; +static const long asn_VAL_198_ignore = 1; +static const long asn_VAL_198_mandatory = 2; +static const long asn_VAL_199_id_ShortMAC_I = 51; +static const long asn_VAL_199_ignore = 1; +static const long asn_VAL_199_optional = 0; +static const long asn_VAL_200_id_UE_RLF_Report_Container = 60; +static const long asn_VAL_200_ignore = 1; +static const long asn_VAL_200_optional = 0; +static const long asn_VAL_201_id_RRCConnSetupIndicator = 75; +static const long asn_VAL_201_reject = 0; +static const long asn_VAL_201_optional = 0; +static const long asn_VAL_202_id_RRCConnReestabIndicator = 78; +static const long asn_VAL_202_ignore = 1; +static const long asn_VAL_202_optional = 0; +static const long asn_VAL_203_id_UE_RLF_Report_Container_for_extended_bands = 107; +static const long asn_VAL_203_ignore = 1; +static const long asn_VAL_203_optional = 0; +static const asn_ioc_cell_t asn_IOS_RLFIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_196_id_FailureCellPCI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_196_ignore }, + { "&Value", aioc__type, &asn_DEF_PCI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_196_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_197_id_Re_establishmentCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_197_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_197_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_198_id_FailureCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_198_ignore }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_198_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_199_id_ShortMAC_I }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_199_ignore }, + { "&Value", aioc__type, &asn_DEF_ShortMAC_I }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_199_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_200_id_UE_RLF_Report_Container }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_200_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_200_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_201_id_RRCConnSetupIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_201_reject }, + { "&Value", aioc__type, &asn_DEF_RRCConnSetupIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_201_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_202_id_RRCConnReestabIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_202_ignore }, + { "&Value", aioc__type, &asn_DEF_RRCConnReestabIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_202_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_203_id_UE_RLF_Report_Container_for_extended_bands }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_203_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container_for_extended_bands }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_203_optional } +}; +static const asn_ioc_set_t asn_IOS_RLFIndication_IEs_1[] = { + { 8, 4, asn_IOS_RLFIndication_IEs_1_rows } +}; +static const long asn_VAL_204_id_ServedCellsToActivate = 57; +static const long asn_VAL_204_reject = 0; +static const long asn_VAL_204_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellActivationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_204_id_ServedCellsToActivate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_204_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCellsToActivate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_204_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellActivationRequest_IEs_1[] = { + { 1, 4, asn_IOS_CellActivationRequest_IEs_1_rows } +}; +static const long asn_VAL_205_id_ActivatedCellList = 58; +static const long asn_VAL_205_ignore = 1; +static const long asn_VAL_205_mandatory = 2; +static const long asn_VAL_206_id_CriticalityDiagnostics = 17; +static const long asn_VAL_206_ignore = 1; +static const long asn_VAL_206_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellActivationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_205_id_ActivatedCellList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_205_ignore }, + { "&Value", aioc__type, &asn_DEF_ActivatedCellList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_205_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_206_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_206_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_206_optional } +}; +static const asn_ioc_set_t asn_IOS_CellActivationResponse_IEs_1[] = { + { 2, 4, asn_IOS_CellActivationResponse_IEs_1_rows } +}; +static const long asn_VAL_207_id_Cause = 5; +static const long asn_VAL_207_ignore = 1; +static const long asn_VAL_207_mandatory = 2; +static const long asn_VAL_208_id_CriticalityDiagnostics = 17; +static const long asn_VAL_208_ignore = 1; +static const long asn_VAL_208_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellActivationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_207_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_207_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_207_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_208_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_208_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_208_optional } +}; +static const asn_ioc_set_t asn_IOS_CellActivationFailure_IEs_1[] = { + { 2, 4, asn_IOS_CellActivationFailure_IEs_1_rows } +}; +static const long asn_VAL_209_id_GlobalENB_ID = 21; +static const long asn_VAL_209_reject = 0; +static const long asn_VAL_209_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_X2Release_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_209_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_209_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_209_mandatory } +}; +static const asn_ioc_set_t asn_IOS_X2Release_IEs_1[] = { + { 1, 4, asn_IOS_X2Release_IEs_1_rows } +}; +static const long asn_VAL_210_id_RNL_Header = 101; +static const long asn_VAL_210_reject = 0; +static const long asn_VAL_210_mandatory = 2; +static const long asn_VAL_211_id_x2APMessage = 102; +static const long asn_VAL_211_reject = 0; +static const long asn_VAL_211_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2APMessageTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_210_id_RNL_Header }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_210_reject }, + { "&Value", aioc__type, &asn_DEF_RNL_Header }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_210_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_211_id_x2APMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_211_reject }, + { "&Value", aioc__type, &asn_DEF_X2AP_Message }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_211_optional } +}; +static const asn_ioc_set_t asn_IOS_X2APMessageTransfer_IEs_1[] = { + { 2, 4, asn_IOS_X2APMessageTransfer_IEs_1_rows } +}; +static const long asn_VAL_212_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_212_reject = 0; +static const long asn_VAL_212_mandatory = 2; +static const long asn_VAL_213_id_UE_SecurityCapabilities = 113; +static const long asn_VAL_213_reject = 0; +static const long asn_VAL_213_conditional = 1; +static const long asn_VAL_214_id_SeNBSecurityKey = 114; +static const long asn_VAL_214_reject = 0; +static const long asn_VAL_214_conditional = 1; +static const long asn_VAL_215_id_SeNBUEAggregateMaximumBitRate = 115; +static const long asn_VAL_215_reject = 0; +static const long asn_VAL_215_mandatory = 2; +static const long asn_VAL_216_id_ServingPLMN = 116; +static const long asn_VAL_216_ignore = 1; +static const long asn_VAL_216_optional = 0; +static const long asn_VAL_217_id_E_RABs_ToBeAdded_List = 117; +static const long asn_VAL_217_reject = 0; +static const long asn_VAL_217_mandatory = 2; +static const long asn_VAL_218_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_218_reject = 0; +static const long asn_VAL_218_mandatory = 2; +static const long asn_VAL_219_id_CSGMembershipStatus = 71; +static const long asn_VAL_219_reject = 0; +static const long asn_VAL_219_optional = 0; +static const long asn_VAL_220_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_220_reject = 0; +static const long asn_VAL_220_optional = 0; +static const long asn_VAL_221_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_221_reject = 0; +static const long asn_VAL_221_optional = 0; +static const long asn_VAL_222_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_222_ignore = 1; +static const long asn_VAL_222_optional = 0; +static const long asn_VAL_223_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_223_reject = 0; +static const long asn_VAL_223_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_212_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_212_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_212_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_213_id_UE_SecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_213_reject }, + { "&Value", aioc__type, &asn_DEF_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_213_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_214_id_SeNBSecurityKey }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_214_reject }, + { "&Value", aioc__type, &asn_DEF_SeNBSecurityKey }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_214_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_215_id_SeNBUEAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_215_reject }, + { "&Value", aioc__type, &asn_DEF_UEAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_215_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_216_id_ServingPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_216_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_216_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_217_id_E_RABs_ToBeAdded_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_217_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_217_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_218_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_218_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_218_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_219_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_219_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_219_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_220_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_220_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_220_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_221_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_221_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_221_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_222_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_222_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_222_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_223_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_223_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_223_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequest_IEs_1[] = { + { 12, 4, asn_IOS_SeNBAdditionRequest_IEs_1_rows } +}; +static const long asn_VAL_225_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_225_reject = 0; +static const long asn_VAL_225_mandatory = 2; +static const long asn_VAL_226_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_226_reject = 0; +static const long asn_VAL_226_mandatory = 2; +static const long asn_VAL_227_id_E_RABs_Admitted_ToBeAdded_List = 120; +static const long asn_VAL_227_ignore = 1; +static const long asn_VAL_227_mandatory = 2; +static const long asn_VAL_228_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_228_ignore = 1; +static const long asn_VAL_228_optional = 0; +static const long asn_VAL_229_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_229_reject = 0; +static const long asn_VAL_229_mandatory = 2; +static const long asn_VAL_230_id_CriticalityDiagnostics = 17; +static const long asn_VAL_230_ignore = 1; +static const long asn_VAL_230_optional = 0; +static const long asn_VAL_231_id_GW_TransportLayerAddress = 165; +static const long asn_VAL_231_ignore = 1; +static const long asn_VAL_231_optional = 0; +static const long asn_VAL_232_id_SIPTO_L_GW_TransportLayerAddress = 168; +static const long asn_VAL_232_ignore = 1; +static const long asn_VAL_232_optional = 0; +static const long asn_VAL_233_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_233_reject = 0; +static const long asn_VAL_233_optional = 0; +static const long asn_VAL_234_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_234_reject = 0; +static const long asn_VAL_234_optional = 0; +static const long asn_VAL_235_id_Tunnel_Information_for_BBF = 163; +static const long asn_VAL_235_ignore = 1; +static const long asn_VAL_235_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_225_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_225_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_225_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_226_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_226_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_226_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_227_id_E_RABs_Admitted_ToBeAdded_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_227_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_227_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_228_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_228_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_228_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_229_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_229_reject }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_229_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_230_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_230_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_230_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_231_id_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_231_ignore }, + { "&Value", aioc__type, &asn_DEF_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_231_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_232_id_SIPTO_L_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_232_ignore }, + { "&Value", aioc__type, &asn_DEF_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_232_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_233_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_233_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_233_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_234_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_234_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_234_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_235_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_235_ignore }, + { "&Value", aioc__type, &asn_DEF_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_235_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1[] = { + { 11, 4, asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_237_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_237_reject = 0; +static const long asn_VAL_237_mandatory = 2; +static const long asn_VAL_238_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_238_reject = 0; +static const long asn_VAL_238_mandatory = 2; +static const long asn_VAL_239_id_Cause = 5; +static const long asn_VAL_239_ignore = 1; +static const long asn_VAL_239_mandatory = 2; +static const long asn_VAL_240_id_CriticalityDiagnostics = 17; +static const long asn_VAL_240_ignore = 1; +static const long asn_VAL_240_optional = 0; +static const long asn_VAL_241_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_241_reject = 0; +static const long asn_VAL_241_optional = 0; +static const long asn_VAL_242_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_242_reject = 0; +static const long asn_VAL_242_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_237_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_237_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_237_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_238_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_238_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_238_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_239_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_239_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_239_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_240_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_240_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_240_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_241_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_241_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_241_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_242_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_242_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_242_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequestReject_IEs_1[] = { + { 6, 4, asn_IOS_SeNBAdditionRequestReject_IEs_1_rows } +}; +static const long asn_VAL_243_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_243_reject = 0; +static const long asn_VAL_243_mandatory = 2; +static const long asn_VAL_244_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_244_reject = 0; +static const long asn_VAL_244_mandatory = 2; +static const long asn_VAL_245_id_ResponseInformationSeNBReconfComp = 123; +static const long asn_VAL_245_ignore = 1; +static const long asn_VAL_245_mandatory = 2; +static const long asn_VAL_246_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_246_reject = 0; +static const long asn_VAL_246_optional = 0; +static const long asn_VAL_247_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_247_reject = 0; +static const long asn_VAL_247_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReconfigurationComplete_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_243_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_243_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_243_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_244_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_244_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_244_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_245_id_ResponseInformationSeNBReconfComp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_245_ignore }, + { "&Value", aioc__type, &asn_DEF_ResponseInformationSeNBReconfComp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_245_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_246_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_246_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_246_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_247_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_247_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_247_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReconfigurationComplete_IEs_1[] = { + { 5, 4, asn_IOS_SeNBReconfigurationComplete_IEs_1_rows } +}; +static const long asn_VAL_248_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_248_reject = 0; +static const long asn_VAL_248_mandatory = 2; +static const long asn_VAL_249_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_249_reject = 0; +static const long asn_VAL_249_mandatory = 2; +static const long asn_VAL_250_id_Cause = 5; +static const long asn_VAL_250_ignore = 1; +static const long asn_VAL_250_mandatory = 2; +static const long asn_VAL_251_id_SCGChangeIndication = 136; +static const long asn_VAL_251_ignore = 1; +static const long asn_VAL_251_optional = 0; +static const long asn_VAL_252_id_ServingPLMN = 116; +static const long asn_VAL_252_ignore = 1; +static const long asn_VAL_252_optional = 0; +static const long asn_VAL_253_id_UE_ContextInformationSeNBModReq = 124; +static const long asn_VAL_253_reject = 0; +static const long asn_VAL_253_optional = 0; +static const long asn_VAL_254_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_254_ignore = 1; +static const long asn_VAL_254_optional = 0; +static const long asn_VAL_255_id_CSGMembershipStatus = 71; +static const long asn_VAL_255_reject = 0; +static const long asn_VAL_255_optional = 0; +static const long asn_VAL_256_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_256_reject = 0; +static const long asn_VAL_256_optional = 0; +static const long asn_VAL_257_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_257_reject = 0; +static const long asn_VAL_257_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_248_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_248_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_248_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_249_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_249_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_249_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_250_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_250_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_250_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_251_id_SCGChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_251_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_251_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_252_id_ServingPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_252_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_252_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_253_id_UE_ContextInformationSeNBModReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_253_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformationSeNBModReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_253_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_254_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_254_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_254_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_255_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_255_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_255_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_256_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_256_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_256_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_257_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_257_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_257_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequest_IEs_1[] = { + { 10, 4, asn_IOS_SeNBModificationRequest_IEs_1_rows } +}; +static const long asn_VAL_261_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_261_ignore = 1; +static const long asn_VAL_261_mandatory = 2; +static const long asn_VAL_262_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_262_ignore = 1; +static const long asn_VAL_262_mandatory = 2; +static const long asn_VAL_263_id_E_RABs_Admitted_ToBeAdded_ModAckList = 128; +static const long asn_VAL_263_ignore = 1; +static const long asn_VAL_263_optional = 0; +static const long asn_VAL_264_id_E_RABs_Admitted_ToBeModified_ModAckList = 129; +static const long asn_VAL_264_ignore = 1; +static const long asn_VAL_264_optional = 0; +static const long asn_VAL_265_id_E_RABs_Admitted_ToBeReleased_ModAckList = 130; +static const long asn_VAL_265_ignore = 1; +static const long asn_VAL_265_optional = 0; +static const long asn_VAL_266_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_266_ignore = 1; +static const long asn_VAL_266_optional = 0; +static const long asn_VAL_267_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_267_ignore = 1; +static const long asn_VAL_267_optional = 0; +static const long asn_VAL_268_id_CriticalityDiagnostics = 17; +static const long asn_VAL_268_ignore = 1; +static const long asn_VAL_268_optional = 0; +static const long asn_VAL_269_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_269_ignore = 1; +static const long asn_VAL_269_optional = 0; +static const long asn_VAL_270_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_270_ignore = 1; +static const long asn_VAL_270_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_261_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_261_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_261_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_262_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_262_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_262_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_263_id_E_RABs_Admitted_ToBeAdded_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_263_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_263_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_264_id_E_RABs_Admitted_ToBeModified_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_264_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_264_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_265_id_E_RABs_Admitted_ToBeReleased_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_265_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_265_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_266_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_266_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_266_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_267_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_267_ignore }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_267_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_268_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_268_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_268_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_269_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_269_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_269_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_270_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_270_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_270_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequestAcknowledge_IEs_1[] = { + { 10, 4, asn_IOS_SeNBModificationRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_274_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_274_ignore = 1; +static const long asn_VAL_274_mandatory = 2; +static const long asn_VAL_275_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_275_ignore = 1; +static const long asn_VAL_275_mandatory = 2; +static const long asn_VAL_276_id_Cause = 5; +static const long asn_VAL_276_ignore = 1; +static const long asn_VAL_276_mandatory = 2; +static const long asn_VAL_277_id_CriticalityDiagnostics = 17; +static const long asn_VAL_277_ignore = 1; +static const long asn_VAL_277_optional = 0; +static const long asn_VAL_278_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_278_ignore = 1; +static const long asn_VAL_278_optional = 0; +static const long asn_VAL_279_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_279_ignore = 1; +static const long asn_VAL_279_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_274_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_274_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_274_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_275_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_275_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_275_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_276_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_276_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_276_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_277_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_277_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_277_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_278_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_278_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_278_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_279_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_279_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_279_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequestReject_IEs_1[] = { + { 6, 4, asn_IOS_SeNBModificationRequestReject_IEs_1_rows } +}; +static const long asn_VAL_280_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_280_reject = 0; +static const long asn_VAL_280_mandatory = 2; +static const long asn_VAL_281_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_281_reject = 0; +static const long asn_VAL_281_mandatory = 2; +static const long asn_VAL_282_id_Cause = 5; +static const long asn_VAL_282_ignore = 1; +static const long asn_VAL_282_mandatory = 2; +static const long asn_VAL_283_id_SCGChangeIndication = 136; +static const long asn_VAL_283_ignore = 1; +static const long asn_VAL_283_optional = 0; +static const long asn_VAL_284_id_E_RABs_ToBeReleased_ModReqd = 134; +static const long asn_VAL_284_ignore = 1; +static const long asn_VAL_284_optional = 0; +static const long asn_VAL_285_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_285_ignore = 1; +static const long asn_VAL_285_optional = 0; +static const long asn_VAL_286_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_286_reject = 0; +static const long asn_VAL_286_optional = 0; +static const long asn_VAL_287_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_287_reject = 0; +static const long asn_VAL_287_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_280_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_280_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_280_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_281_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_281_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_281_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_282_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_282_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_282_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_283_id_SCGChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_283_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_283_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_284_id_E_RABs_ToBeReleased_ModReqd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_284_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_284_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_285_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_285_ignore }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_285_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_286_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_286_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_286_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_287_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_287_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_287_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequired_IEs_1[] = { + { 8, 4, asn_IOS_SeNBModificationRequired_IEs_1_rows } +}; +static const long asn_VAL_289_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_289_ignore = 1; +static const long asn_VAL_289_mandatory = 2; +static const long asn_VAL_290_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_290_ignore = 1; +static const long asn_VAL_290_mandatory = 2; +static const long asn_VAL_291_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_291_ignore = 1; +static const long asn_VAL_291_optional = 0; +static const long asn_VAL_292_id_CriticalityDiagnostics = 17; +static const long asn_VAL_292_ignore = 1; +static const long asn_VAL_292_optional = 0; +static const long asn_VAL_293_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_293_ignore = 1; +static const long asn_VAL_293_optional = 0; +static const long asn_VAL_294_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_294_ignore = 1; +static const long asn_VAL_294_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_289_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_289_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_289_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_290_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_290_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_290_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_291_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_291_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_291_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_292_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_292_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_292_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_293_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_293_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_293_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_294_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_294_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_294_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationConfirm_IEs_1[] = { + { 6, 4, asn_IOS_SeNBModificationConfirm_IEs_1_rows } +}; +static const long asn_VAL_295_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_295_ignore = 1; +static const long asn_VAL_295_mandatory = 2; +static const long asn_VAL_296_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_296_ignore = 1; +static const long asn_VAL_296_mandatory = 2; +static const long asn_VAL_297_id_Cause = 5; +static const long asn_VAL_297_ignore = 1; +static const long asn_VAL_297_mandatory = 2; +static const long asn_VAL_298_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_298_ignore = 1; +static const long asn_VAL_298_optional = 0; +static const long asn_VAL_299_id_CriticalityDiagnostics = 17; +static const long asn_VAL_299_ignore = 1; +static const long asn_VAL_299_optional = 0; +static const long asn_VAL_300_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_300_ignore = 1; +static const long asn_VAL_300_optional = 0; +static const long asn_VAL_301_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_301_ignore = 1; +static const long asn_VAL_301_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_295_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_295_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_295_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_296_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_296_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_296_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_297_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_297_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_297_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_298_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_298_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_298_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_299_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_299_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_299_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_300_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_300_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_300_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_301_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_301_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_301_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRefuse_IEs_1[] = { + { 7, 4, asn_IOS_SeNBModificationRefuse_IEs_1_rows } +}; +static const long asn_VAL_302_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_302_reject = 0; +static const long asn_VAL_302_mandatory = 2; +static const long asn_VAL_303_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_303_reject = 0; +static const long asn_VAL_303_optional = 0; +static const long asn_VAL_304_id_Cause = 5; +static const long asn_VAL_304_ignore = 1; +static const long asn_VAL_304_optional = 0; +static const long asn_VAL_305_id_E_RABs_ToBeReleased_List_RelReq = 137; +static const long asn_VAL_305_ignore = 1; +static const long asn_VAL_305_optional = 0; +static const long asn_VAL_306_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_306_ignore = 1; +static const long asn_VAL_306_optional = 0; +static const long asn_VAL_307_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_307_reject = 0; +static const long asn_VAL_307_optional = 0; +static const long asn_VAL_308_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_308_reject = 0; +static const long asn_VAL_308_optional = 0; +static const long asn_VAL_309_id_MakeBeforeBreakIndicator = 181; +static const long asn_VAL_309_ignore = 1; +static const long asn_VAL_309_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_302_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_302_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_302_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_303_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_303_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_303_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_304_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_304_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_304_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_305_id_E_RABs_ToBeReleased_List_RelReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_305_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_List_RelReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_305_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_306_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_306_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_306_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_307_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_307_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_307_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_308_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_308_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_308_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_309_id_MakeBeforeBreakIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_309_ignore }, + { "&Value", aioc__type, &asn_DEF_MakeBeforeBreakIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_309_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseRequest_IEs_1[] = { + { 8, 4, asn_IOS_SeNBReleaseRequest_IEs_1_rows } +}; +static const long asn_VAL_311_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_311_reject = 0; +static const long asn_VAL_311_mandatory = 2; +static const long asn_VAL_312_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_312_reject = 0; +static const long asn_VAL_312_mandatory = 2; +static const long asn_VAL_313_id_Cause = 5; +static const long asn_VAL_313_ignore = 1; +static const long asn_VAL_313_mandatory = 2; +static const long asn_VAL_314_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_314_reject = 0; +static const long asn_VAL_314_optional = 0; +static const long asn_VAL_315_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_315_reject = 0; +static const long asn_VAL_315_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_311_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_311_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_311_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_312_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_312_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_312_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_313_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_313_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_313_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_314_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_314_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_314_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_315_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_315_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_315_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseRequired_IEs_1[] = { + { 5, 4, asn_IOS_SeNBReleaseRequired_IEs_1_rows } +}; +static const long asn_VAL_316_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_316_ignore = 1; +static const long asn_VAL_316_mandatory = 2; +static const long asn_VAL_317_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_317_ignore = 1; +static const long asn_VAL_317_mandatory = 2; +static const long asn_VAL_318_id_E_RABs_ToBeReleased_List_RelConf = 139; +static const long asn_VAL_318_ignore = 1; +static const long asn_VAL_318_optional = 0; +static const long asn_VAL_319_id_CriticalityDiagnostics = 17; +static const long asn_VAL_319_ignore = 1; +static const long asn_VAL_319_optional = 0; +static const long asn_VAL_320_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_320_ignore = 1; +static const long asn_VAL_320_optional = 0; +static const long asn_VAL_321_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_321_ignore = 1; +static const long asn_VAL_321_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_316_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_316_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_316_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_317_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_317_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_317_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_318_id_E_RABs_ToBeReleased_List_RelConf }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_318_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_List_RelConf }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_318_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_319_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_319_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_319_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_320_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_320_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_320_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_321_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_321_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_321_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseConfirm_IEs_1[] = { + { 6, 4, asn_IOS_SeNBReleaseConfirm_IEs_1_rows } +}; +static const long asn_VAL_323_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_323_reject = 0; +static const long asn_VAL_323_mandatory = 2; +static const long asn_VAL_324_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_324_reject = 0; +static const long asn_VAL_324_mandatory = 2; +static const long asn_VAL_325_id_E_RABs_SubjectToCounterCheck_List = 141; +static const long asn_VAL_325_ignore = 1; +static const long asn_VAL_325_mandatory = 2; +static const long asn_VAL_326_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_326_ignore = 1; +static const long asn_VAL_326_optional = 0; +static const long asn_VAL_327_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_327_ignore = 1; +static const long asn_VAL_327_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBCounterCheckRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_323_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_323_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_323_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_324_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_324_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_324_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_325_id_E_RABs_SubjectToCounterCheck_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_325_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToCounterCheck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_325_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_326_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_326_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_326_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_327_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_327_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_327_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBCounterCheckRequest_IEs_1[] = { + { 5, 4, asn_IOS_SeNBCounterCheckRequest_IEs_1_rows } +}; +static const long asn_VAL_329_id_GlobalENB_ID = 21; +static const long asn_VAL_329_reject = 0; +static const long asn_VAL_329_mandatory = 2; +static const long asn_VAL_330_id_X2RemovalThreshold = 169; +static const long asn_VAL_330_reject = 0; +static const long asn_VAL_330_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_329_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_329_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_329_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_330_id_X2RemovalThreshold }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_330_reject }, + { "&Value", aioc__type, &asn_DEF_X2BenefitValue }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_330_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalRequest_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalRequest_IEs_1_rows } +}; +static const long asn_VAL_331_id_GlobalENB_ID = 21; +static const long asn_VAL_331_reject = 0; +static const long asn_VAL_331_mandatory = 2; +static const long asn_VAL_332_id_CriticalityDiagnostics = 17; +static const long asn_VAL_332_ignore = 1; +static const long asn_VAL_332_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_331_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_331_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_331_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_332_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_332_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_332_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalResponse_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalResponse_IEs_1_rows } +}; +static const long asn_VAL_333_id_Cause = 5; +static const long asn_VAL_333_ignore = 1; +static const long asn_VAL_333_mandatory = 2; +static const long asn_VAL_334_id_CriticalityDiagnostics = 17; +static const long asn_VAL_334_ignore = 1; +static const long asn_VAL_334_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_333_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_333_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_333_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_334_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_334_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_334_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalFailure_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalFailure_IEs_1_rows } +}; +static const long asn_VAL_335_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_335_reject = 0; +static const long asn_VAL_335_mandatory = 2; +static const long asn_VAL_336_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_336_reject = 0; +static const long asn_VAL_336_optional = 0; +static const long asn_VAL_337_id_resumeID = 172; +static const long asn_VAL_337_reject = 0; +static const long asn_VAL_337_mandatory = 2; +static const long asn_VAL_338_id_ShortMAC_I = 51; +static const long asn_VAL_338_reject = 0; +static const long asn_VAL_338_mandatory = 2; +static const long asn_VAL_339_id_NewEUTRANCellIdentifier = 175; +static const long asn_VAL_339_reject = 0; +static const long asn_VAL_339_mandatory = 2; +static const long asn_VAL_340_id_FailureCellCRNTI = 50; +static const long asn_VAL_340_reject = 0; +static const long asn_VAL_340_optional = 0; +static const long asn_VAL_341_id_FailureCellPCI = 48; +static const long asn_VAL_341_reject = 0; +static const long asn_VAL_341_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_335_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_335_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_335_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_336_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_336_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_336_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_337_id_resumeID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_337_reject }, + { "&Value", aioc__type, &asn_DEF_ResumeID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_337_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_338_id_ShortMAC_I }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_338_reject }, + { "&Value", aioc__type, &asn_DEF_ShortMAC_I }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_338_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_339_id_NewEUTRANCellIdentifier }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_339_reject }, + { "&Value", aioc__type, &asn_DEF_EUTRANCellIdentifier }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_339_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_340_id_FailureCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_340_reject }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_340_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_341_id_FailureCellPCI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_341_reject }, + { "&Value", aioc__type, &asn_DEF_PCI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_341_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextRequest_IEs_1[] = { + { 7, 4, asn_IOS_RetrieveUEContextRequest_IEs_1_rows } +}; +static const long asn_VAL_342_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_342_ignore = 1; +static const long asn_VAL_342_mandatory = 2; +static const long asn_VAL_343_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_343_ignore = 1; +static const long asn_VAL_343_optional = 0; +static const long asn_VAL_344_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_344_ignore = 1; +static const long asn_VAL_344_mandatory = 2; +static const long asn_VAL_345_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_345_ignore = 1; +static const long asn_VAL_345_optional = 0; +static const long asn_VAL_346_id_GUMMEI_ID = 23; +static const long asn_VAL_346_reject = 0; +static const long asn_VAL_346_mandatory = 2; +static const long asn_VAL_347_id_UE_ContextInformationRetrieve = 173; +static const long asn_VAL_347_reject = 0; +static const long asn_VAL_347_mandatory = 2; +static const long asn_VAL_348_id_TraceActivation = 13; +static const long asn_VAL_348_ignore = 1; +static const long asn_VAL_348_optional = 0; +static const long asn_VAL_349_id_SRVCCOperationPossible = 36; +static const long asn_VAL_349_ignore = 1; +static const long asn_VAL_349_optional = 0; +static const long asn_VAL_350_id_Masked_IMEISV = 98; +static const long asn_VAL_350_ignore = 1; +static const long asn_VAL_350_optional = 0; +static const long asn_VAL_351_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_351_ignore = 1; +static const long asn_VAL_351_optional = 0; +static const long asn_VAL_352_id_ProSeAuthorized = 103; +static const long asn_VAL_352_ignore = 1; +static const long asn_VAL_352_optional = 0; +static const long asn_VAL_353_id_CriticalityDiagnostics = 17; +static const long asn_VAL_353_ignore = 1; +static const long asn_VAL_353_optional = 0; +static const long asn_VAL_354_id_V2XServicesAuthorized = 176; +static const long asn_VAL_354_ignore = 1; +static const long asn_VAL_354_optional = 0; +static const long asn_VAL_355_id_AerialUEsubscriptionInformation = 277; +static const long asn_VAL_355_ignore = 1; +static const long asn_VAL_355_optional = 0; +static const long asn_VAL_356_id_Subscription_Based_UE_DifferentiationInfo = 309; +static const long asn_VAL_356_ignore = 1; +static const long asn_VAL_356_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_342_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_342_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_342_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_343_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_343_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_343_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_344_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_344_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_344_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_345_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_345_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_345_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_346_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_346_reject }, + { "&Value", aioc__type, &asn_DEF_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_346_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_347_id_UE_ContextInformationRetrieve }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_347_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformationRetrieve }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_347_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_348_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_348_ignore }, + { "&Value", aioc__type, &asn_DEF_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_348_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_349_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_349_ignore }, + { "&Value", aioc__type, &asn_DEF_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_349_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_350_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_350_ignore }, + { "&Value", aioc__type, &asn_DEF_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_350_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_351_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_351_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_351_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_352_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_352_ignore }, + { "&Value", aioc__type, &asn_DEF_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_352_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_353_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_353_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_353_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_354_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_354_ignore }, + { "&Value", aioc__type, &asn_DEF_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_354_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_355_id_AerialUEsubscriptionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_355_ignore }, + { "&Value", aioc__type, &asn_DEF_AerialUEsubscriptionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_355_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_356_id_Subscription_Based_UE_DifferentiationInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_356_ignore }, + { "&Value", aioc__type, &asn_DEF_Subscription_Based_UE_DifferentiationInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_356_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextResponse_IEs_1[] = { + { 15, 4, asn_IOS_RetrieveUEContextResponse_IEs_1_rows } +}; +static const long asn_VAL_358_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_358_ignore = 1; +static const long asn_VAL_358_mandatory = 2; +static const long asn_VAL_359_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_359_ignore = 1; +static const long asn_VAL_359_optional = 0; +static const long asn_VAL_360_id_Cause = 5; +static const long asn_VAL_360_ignore = 1; +static const long asn_VAL_360_mandatory = 2; +static const long asn_VAL_361_id_CriticalityDiagnostics = 17; +static const long asn_VAL_361_ignore = 1; +static const long asn_VAL_361_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_358_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_358_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_358_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_359_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_359_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_359_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_360_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_360_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_360_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_361_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_361_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_361_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextFailure_IEs_1[] = { + { 4, 4, asn_IOS_RetrieveUEContextFailure_IEs_1_rows } +}; +static const long asn_VAL_362_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_362_reject = 0; +static const long asn_VAL_362_mandatory = 2; +static const long asn_VAL_363_id_NRUESecurityCapabilities = 248; +static const long asn_VAL_363_reject = 0; +static const long asn_VAL_363_mandatory = 2; +static const long asn_VAL_364_id_SgNBSecurityKey = 203; +static const long asn_VAL_364_reject = 0; +static const long asn_VAL_364_mandatory = 2; +static const long asn_VAL_365_id_SgNBUEAggregateMaximumBitRate = 204; +static const long asn_VAL_365_reject = 0; +static const long asn_VAL_365_mandatory = 2; +static const long asn_VAL_366_id_SelectedPLMN = 269; +static const long asn_VAL_366_ignore = 1; +static const long asn_VAL_366_optional = 0; +static const long asn_VAL_367_id_HandoverRestrictionList = 240; +static const long asn_VAL_367_ignore = 1; +static const long asn_VAL_367_optional = 0; +static const long asn_VAL_368_id_E_RABs_ToBeAdded_SgNBAddReqList = 205; +static const long asn_VAL_368_reject = 0; +static const long asn_VAL_368_mandatory = 2; +static const long asn_VAL_369_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_369_reject = 0; +static const long asn_VAL_369_mandatory = 2; +static const long asn_VAL_370_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_370_reject = 0; +static const long asn_VAL_370_optional = 0; +static const long asn_VAL_371_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_371_ignore = 1; +static const long asn_VAL_371_optional = 0; +static const long asn_VAL_372_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_372_reject = 0; +static const long asn_VAL_372_optional = 0; +static const long asn_VAL_373_id_RequestedSplitSRBs = 208; +static const long asn_VAL_373_reject = 0; +static const long asn_VAL_373_optional = 0; +static const long asn_VAL_374_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_374_ignore = 1; +static const long asn_VAL_374_optional = 0; +static const long asn_VAL_375_id_SGNB_Addition_Trigger_Ind = 278; +static const long asn_VAL_375_reject = 0; +static const long asn_VAL_375_optional = 0; +static const long asn_VAL_376_id_SubscriberProfileIDforRFP = 275; +static const long asn_VAL_376_ignore = 1; +static const long asn_VAL_376_optional = 0; +static const long asn_VAL_377_id_MeNBCell_ID = 279; +static const long asn_VAL_377_reject = 0; +static const long asn_VAL_377_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_362_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_362_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_362_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_363_id_NRUESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_363_reject }, + { "&Value", aioc__type, &asn_DEF_NRUESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_363_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_364_id_SgNBSecurityKey }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_364_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBSecurityKey }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_364_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_365_id_SgNBUEAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_365_reject }, + { "&Value", aioc__type, &asn_DEF_UEAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_365_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_366_id_SelectedPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_366_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_366_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_367_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_367_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_367_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_368_id_E_RABs_ToBeAdded_SgNBAddReqList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_368_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_368_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_369_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_369_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_369_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_370_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_370_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_370_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_371_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_371_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_371_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_372_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_372_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_372_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_373_id_RequestedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_373_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_373_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_374_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_374_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_374_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_375_id_SGNB_Addition_Trigger_Ind }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_375_reject }, + { "&Value", aioc__type, &asn_DEF_SGNB_Addition_Trigger_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_375_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_376_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_376_ignore }, + { "&Value", aioc__type, &asn_DEF_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_376_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_377_id_MeNBCell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_377_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_377_mandatory } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequest_IEs_1[] = { + { 16, 4, asn_IOS_SgNBAdditionRequest_IEs_1_rows } +}; +static const long asn_VAL_379_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_379_reject = 0; +static const long asn_VAL_379_mandatory = 2; +static const long asn_VAL_380_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_380_reject = 0; +static const long asn_VAL_380_mandatory = 2; +static const long asn_VAL_381_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList = 210; +static const long asn_VAL_381_ignore = 1; +static const long asn_VAL_381_mandatory = 2; +static const long asn_VAL_382_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_382_ignore = 1; +static const long asn_VAL_382_optional = 0; +static const long asn_VAL_383_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_383_reject = 0; +static const long asn_VAL_383_mandatory = 2; +static const long asn_VAL_384_id_CriticalityDiagnostics = 17; +static const long asn_VAL_384_ignore = 1; +static const long asn_VAL_384_optional = 0; +static const long asn_VAL_385_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_385_reject = 0; +static const long asn_VAL_385_optional = 0; +static const long asn_VAL_386_id_AdmittedSplitSRBs = 212; +static const long asn_VAL_386_reject = 0; +static const long asn_VAL_386_optional = 0; +static const long asn_VAL_387_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_387_ignore = 1; +static const long asn_VAL_387_optional = 0; +static const long asn_VAL_388_id_RRCConfigIndication = 272; +static const long asn_VAL_388_reject = 0; +static const long asn_VAL_388_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_379_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_379_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_379_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_380_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_380_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_380_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_381_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_381_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_381_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_382_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_382_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_382_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_383_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_383_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_383_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_384_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_384_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_384_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_385_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_385_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_385_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_386_id_AdmittedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_386_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_386_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_387_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_387_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_387_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_388_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_388_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_388_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1[] = { + { 10, 4, asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_390_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_390_reject = 0; +static const long asn_VAL_390_mandatory = 2; +static const long asn_VAL_391_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_391_reject = 0; +static const long asn_VAL_391_optional = 0; +static const long asn_VAL_392_id_Cause = 5; +static const long asn_VAL_392_ignore = 1; +static const long asn_VAL_392_mandatory = 2; +static const long asn_VAL_393_id_CriticalityDiagnostics = 17; +static const long asn_VAL_393_ignore = 1; +static const long asn_VAL_393_optional = 0; +static const long asn_VAL_394_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_394_reject = 0; +static const long asn_VAL_394_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_390_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_390_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_390_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_391_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_391_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_391_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_392_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_392_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_392_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_393_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_393_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_393_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_394_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_394_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_394_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBAdditionRequestReject_IEs_1_rows } +}; +static const long asn_VAL_395_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_395_reject = 0; +static const long asn_VAL_395_mandatory = 2; +static const long asn_VAL_396_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_396_reject = 0; +static const long asn_VAL_396_mandatory = 2; +static const long asn_VAL_397_id_ResponseInformationSgNBReconfComp = 214; +static const long asn_VAL_397_ignore = 1; +static const long asn_VAL_397_mandatory = 2; +static const long asn_VAL_398_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_398_reject = 0; +static const long asn_VAL_398_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReconfigurationComplete_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_395_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_395_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_395_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_396_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_396_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_396_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_397_id_ResponseInformationSgNBReconfComp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_397_ignore }, + { "&Value", aioc__type, &asn_DEF_ResponseInformationSgNBReconfComp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_397_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_398_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_398_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_398_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReconfigurationComplete_IEs_1[] = { + { 4, 4, asn_IOS_SgNBReconfigurationComplete_IEs_1_rows } +}; +static const long asn_VAL_399_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_399_reject = 0; +static const long asn_VAL_399_mandatory = 2; +static const long asn_VAL_400_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_400_reject = 0; +static const long asn_VAL_400_mandatory = 2; +static const long asn_VAL_401_id_Cause = 5; +static const long asn_VAL_401_ignore = 1; +static const long asn_VAL_401_mandatory = 2; +static const long asn_VAL_402_id_SelectedPLMN = 269; +static const long asn_VAL_402_ignore = 1; +static const long asn_VAL_402_optional = 0; +static const long asn_VAL_403_id_HandoverRestrictionList = 240; +static const long asn_VAL_403_ignore = 1; +static const long asn_VAL_403_optional = 0; +static const long asn_VAL_404_id_SCGConfigurationQuery = 241; +static const long asn_VAL_404_ignore = 1; +static const long asn_VAL_404_optional = 0; +static const long asn_VAL_405_id_UE_ContextInformation_SgNBModReq = 215; +static const long asn_VAL_405_reject = 0; +static const long asn_VAL_405_optional = 0; +static const long asn_VAL_406_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_406_reject = 0; +static const long asn_VAL_406_optional = 0; +static const long asn_VAL_407_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_407_reject = 0; +static const long asn_VAL_407_optional = 0; +static const long asn_VAL_408_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_408_ignore = 1; +static const long asn_VAL_408_optional = 0; +static const long asn_VAL_409_id_RequestedSplitSRBs = 208; +static const long asn_VAL_409_ignore = 1; +static const long asn_VAL_409_optional = 0; +static const long asn_VAL_410_id_RequestedSplitSRBsrelease = 280; +static const long asn_VAL_410_ignore = 1; +static const long asn_VAL_410_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_399_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_399_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_399_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_400_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_400_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_400_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_401_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_401_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_401_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_402_id_SelectedPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_402_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_402_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_403_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_403_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_403_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_404_id_SCGConfigurationQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_404_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGConfigurationQuery }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_404_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_405_id_UE_ContextInformation_SgNBModReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_405_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformation_SgNBModReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_405_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_406_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_406_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_406_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_407_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_407_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_407_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_408_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_408_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_408_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_409_id_RequestedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_409_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_409_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_410_id_RequestedSplitSRBsrelease }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_410_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_410_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequest_IEs_1[] = { + { 12, 4, asn_IOS_SgNBModificationRequest_IEs_1_rows } +}; +static const long asn_VAL_414_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_414_ignore = 1; +static const long asn_VAL_414_mandatory = 2; +static const long asn_VAL_415_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_415_ignore = 1; +static const long asn_VAL_415_mandatory = 2; +static const long asn_VAL_416_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList = 219; +static const long asn_VAL_416_ignore = 1; +static const long asn_VAL_416_optional = 0; +static const long asn_VAL_417_id_E_RABs_Admitted_ToBeModified_SgNBModAckList = 220; +static const long asn_VAL_417_ignore = 1; +static const long asn_VAL_417_optional = 0; +static const long asn_VAL_418_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList = 221; +static const long asn_VAL_418_ignore = 1; +static const long asn_VAL_418_optional = 0; +static const long asn_VAL_419_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_419_ignore = 1; +static const long asn_VAL_419_optional = 0; +static const long asn_VAL_420_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_420_ignore = 1; +static const long asn_VAL_420_optional = 0; +static const long asn_VAL_421_id_CriticalityDiagnostics = 17; +static const long asn_VAL_421_ignore = 1; +static const long asn_VAL_421_optional = 0; +static const long asn_VAL_422_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_422_ignore = 1; +static const long asn_VAL_422_optional = 0; +static const long asn_VAL_423_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_423_ignore = 1; +static const long asn_VAL_423_optional = 0; +static const long asn_VAL_424_id_AdmittedSplitSRBs = 212; +static const long asn_VAL_424_ignore = 1; +static const long asn_VAL_424_optional = 0; +static const long asn_VAL_425_id_AdmittedSplitSRBsrelease = 281; +static const long asn_VAL_425_ignore = 1; +static const long asn_VAL_425_optional = 0; +static const long asn_VAL_426_id_RRCConfigIndication = 272; +static const long asn_VAL_426_reject = 0; +static const long asn_VAL_426_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_414_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_414_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_414_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_415_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_415_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_415_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_416_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_416_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_416_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_417_id_E_RABs_Admitted_ToBeModified_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_417_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_417_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_418_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_418_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_418_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_419_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_419_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_419_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_420_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_420_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_420_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_421_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_421_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_421_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_422_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_422_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_422_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_423_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_423_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_423_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_424_id_AdmittedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_424_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_424_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_425_id_AdmittedSplitSRBsrelease }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_425_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_425_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_426_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_426_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_426_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequestAcknowledge_IEs_1[] = { + { 13, 4, asn_IOS_SgNBModificationRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_430_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_430_ignore = 1; +static const long asn_VAL_430_mandatory = 2; +static const long asn_VAL_431_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_431_ignore = 1; +static const long asn_VAL_431_mandatory = 2; +static const long asn_VAL_432_id_Cause = 5; +static const long asn_VAL_432_ignore = 1; +static const long asn_VAL_432_mandatory = 2; +static const long asn_VAL_433_id_CriticalityDiagnostics = 17; +static const long asn_VAL_433_ignore = 1; +static const long asn_VAL_433_optional = 0; +static const long asn_VAL_434_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_434_ignore = 1; +static const long asn_VAL_434_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_430_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_430_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_430_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_431_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_431_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_431_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_432_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_432_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_432_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_433_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_433_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_433_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_434_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_434_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_434_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBModificationRequestReject_IEs_1_rows } +}; +static const long asn_VAL_435_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_435_reject = 0; +static const long asn_VAL_435_mandatory = 2; +static const long asn_VAL_436_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_436_reject = 0; +static const long asn_VAL_436_mandatory = 2; +static const long asn_VAL_437_id_Cause = 5; +static const long asn_VAL_437_ignore = 1; +static const long asn_VAL_437_mandatory = 2; +static const long asn_VAL_438_id_PDCPChangeIndication = 249; +static const long asn_VAL_438_ignore = 1; +static const long asn_VAL_438_optional = 0; +static const long asn_VAL_439_id_E_RABs_ToBeReleased_SgNBModReqdList = 225; +static const long asn_VAL_439_ignore = 1; +static const long asn_VAL_439_optional = 0; +static const long asn_VAL_440_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_440_ignore = 1; +static const long asn_VAL_440_optional = 0; +static const long asn_VAL_441_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_441_reject = 0; +static const long asn_VAL_441_optional = 0; +static const long asn_VAL_442_id_E_RABs_ToBeModified_SgNBModReqdList = 226; +static const long asn_VAL_442_ignore = 1; +static const long asn_VAL_442_optional = 0; +static const long asn_VAL_443_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_443_ignore = 1; +static const long asn_VAL_443_optional = 0; +static const long asn_VAL_444_id_RRCConfigIndication = 272; +static const long asn_VAL_444_reject = 0; +static const long asn_VAL_444_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_435_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_435_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_435_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_436_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_436_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_436_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_437_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_437_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_437_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_438_id_PDCPChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_438_ignore }, + { "&Value", aioc__type, &asn_DEF_PDCPChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_438_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_439_id_E_RABs_ToBeReleased_SgNBModReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_439_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_439_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_440_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_440_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_440_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_441_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_441_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_441_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_442_id_E_RABs_ToBeModified_SgNBModReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_442_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_442_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_443_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_443_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_443_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_444_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_444_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_444_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequired_IEs_1[] = { + { 10, 4, asn_IOS_SgNBModificationRequired_IEs_1_rows } +}; +static const long asn_VAL_447_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_447_ignore = 1; +static const long asn_VAL_447_mandatory = 2; +static const long asn_VAL_448_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_448_ignore = 1; +static const long asn_VAL_448_mandatory = 2; +static const long asn_VAL_449_id_E_RABs_AdmittedToBeModified_SgNBModConfList = 294; +static const long asn_VAL_449_ignore = 1; +static const long asn_VAL_449_optional = 0; +static const long asn_VAL_450_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_450_ignore = 1; +static const long asn_VAL_450_optional = 0; +static const long asn_VAL_451_id_CriticalityDiagnostics = 17; +static const long asn_VAL_451_ignore = 1; +static const long asn_VAL_451_optional = 0; +static const long asn_VAL_452_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_452_ignore = 1; +static const long asn_VAL_452_optional = 0; +static const long asn_VAL_453_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_453_ignore = 1; +static const long asn_VAL_453_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_447_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_447_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_447_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_448_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_448_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_448_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_449_id_E_RABs_AdmittedToBeModified_SgNBModConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_449_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_449_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_450_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_450_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_450_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_451_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_451_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_451_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_452_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_452_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_452_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_453_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_453_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_453_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationConfirm_IEs_1[] = { + { 7, 4, asn_IOS_SgNBModificationConfirm_IEs_1_rows } +}; +static const long asn_VAL_455_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_455_ignore = 1; +static const long asn_VAL_455_mandatory = 2; +static const long asn_VAL_456_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_456_ignore = 1; +static const long asn_VAL_456_mandatory = 2; +static const long asn_VAL_457_id_Cause = 5; +static const long asn_VAL_457_ignore = 1; +static const long asn_VAL_457_mandatory = 2; +static const long asn_VAL_458_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_458_ignore = 1; +static const long asn_VAL_458_optional = 0; +static const long asn_VAL_459_id_CriticalityDiagnostics = 17; +static const long asn_VAL_459_ignore = 1; +static const long asn_VAL_459_optional = 0; +static const long asn_VAL_460_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_460_ignore = 1; +static const long asn_VAL_460_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_455_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_455_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_455_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_456_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_456_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_456_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_457_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_457_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_457_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_458_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_458_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_458_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_459_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_459_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_459_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_460_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_460_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_460_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRefuse_IEs_1[] = { + { 6, 4, asn_IOS_SgNBModificationRefuse_IEs_1_rows } +}; +static const long asn_VAL_461_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_461_reject = 0; +static const long asn_VAL_461_mandatory = 2; +static const long asn_VAL_462_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_462_reject = 0; +static const long asn_VAL_462_optional = 0; +static const long asn_VAL_463_id_Cause = 5; +static const long asn_VAL_463_ignore = 1; +static const long asn_VAL_463_mandatory = 2; +static const long asn_VAL_464_id_E_RABs_ToBeReleased_SgNBRelReqList = 231; +static const long asn_VAL_464_ignore = 1; +static const long asn_VAL_464_optional = 0; +static const long asn_VAL_465_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_465_ignore = 1; +static const long asn_VAL_465_optional = 0; +static const long asn_VAL_466_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_466_reject = 0; +static const long asn_VAL_466_optional = 0; +static const long asn_VAL_467_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_467_reject = 0; +static const long asn_VAL_467_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_461_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_461_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_461_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_462_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_462_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_462_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_463_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_463_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_463_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_464_id_E_RABs_ToBeReleased_SgNBRelReqList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_464_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_464_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_465_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_465_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_465_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_466_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_466_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_466_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_467_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_467_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_467_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequest_IEs_1[] = { + { 7, 4, asn_IOS_SgNBReleaseRequest_IEs_1_rows } +}; +static const long asn_VAL_469_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_469_ignore = 1; +static const long asn_VAL_469_mandatory = 2; +static const long asn_VAL_470_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_470_ignore = 1; +static const long asn_VAL_470_mandatory = 2; +static const long asn_VAL_471_id_CriticalityDiagnostics = 17; +static const long asn_VAL_471_ignore = 1; +static const long asn_VAL_471_optional = 0; +static const long asn_VAL_472_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_472_reject = 0; +static const long asn_VAL_472_optional = 0; +static const long asn_VAL_473_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList = 318; +static const long asn_VAL_473_ignore = 1; +static const long asn_VAL_473_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_469_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_469_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_469_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_470_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_470_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_470_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_471_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_471_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_471_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_472_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_472_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_472_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_473_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_473_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_473_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_475_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_475_ignore = 1; +static const long asn_VAL_475_mandatory = 2; +static const long asn_VAL_476_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_476_ignore = 1; +static const long asn_VAL_476_mandatory = 2; +static const long asn_VAL_477_id_Cause = 5; +static const long asn_VAL_477_ignore = 1; +static const long asn_VAL_477_mandatory = 2; +static const long asn_VAL_478_id_CriticalityDiagnostics = 17; +static const long asn_VAL_478_ignore = 1; +static const long asn_VAL_478_optional = 0; +static const long asn_VAL_479_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_479_reject = 0; +static const long asn_VAL_479_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_475_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_475_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_475_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_476_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_476_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_476_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_477_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_477_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_477_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_478_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_478_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_478_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_479_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_479_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_479_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequestReject_IEs_1_rows } +}; +static const long asn_VAL_480_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_480_reject = 0; +static const long asn_VAL_480_mandatory = 2; +static const long asn_VAL_481_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_481_reject = 0; +static const long asn_VAL_481_mandatory = 2; +static const long asn_VAL_482_id_Cause = 5; +static const long asn_VAL_482_ignore = 1; +static const long asn_VAL_482_mandatory = 2; +static const long asn_VAL_483_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_483_reject = 0; +static const long asn_VAL_483_optional = 0; +static const long asn_VAL_484_id_E_RABs_ToBeReleased_SgNBRelReqdList = 320; +static const long asn_VAL_484_ignore = 1; +static const long asn_VAL_484_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_480_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_480_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_480_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_481_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_481_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_481_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_482_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_482_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_482_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_483_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_483_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_483_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_484_id_E_RABs_ToBeReleased_SgNBRelReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_484_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_484_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequired_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequired_IEs_1_rows } +}; +static const long asn_VAL_486_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_486_ignore = 1; +static const long asn_VAL_486_mandatory = 2; +static const long asn_VAL_487_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_487_ignore = 1; +static const long asn_VAL_487_mandatory = 2; +static const long asn_VAL_488_id_E_RABs_ToBeReleased_SgNBRelConfList = 233; +static const long asn_VAL_488_ignore = 1; +static const long asn_VAL_488_optional = 0; +static const long asn_VAL_489_id_CriticalityDiagnostics = 17; +static const long asn_VAL_489_ignore = 1; +static const long asn_VAL_489_optional = 0; +static const long asn_VAL_490_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_490_ignore = 1; +static const long asn_VAL_490_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_486_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_486_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_486_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_487_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_487_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_487_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_488_id_E_RABs_ToBeReleased_SgNBRelConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_488_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_488_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_489_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_489_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_489_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_490_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_490_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_490_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseConfirm_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseConfirm_IEs_1_rows } +}; +static const long asn_VAL_492_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_492_reject = 0; +static const long asn_VAL_492_mandatory = 2; +static const long asn_VAL_493_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_493_reject = 0; +static const long asn_VAL_493_mandatory = 2; +static const long asn_VAL_494_id_E_RABs_SubjectToSgNBCounterCheck_List = 235; +static const long asn_VAL_494_ignore = 1; +static const long asn_VAL_494_mandatory = 2; +static const long asn_VAL_495_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_495_ignore = 1; +static const long asn_VAL_495_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBCounterCheckRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_492_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_492_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_492_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_493_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_493_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_493_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_494_id_E_RABs_SubjectToSgNBCounterCheck_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_494_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_494_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_495_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_495_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_495_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBCounterCheckRequest_IEs_1[] = { + { 4, 4, asn_IOS_SgNBCounterCheckRequest_IEs_1_rows } +}; +static const long asn_VAL_497_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_497_reject = 0; +static const long asn_VAL_497_mandatory = 2; +static const long asn_VAL_498_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_498_reject = 0; +static const long asn_VAL_498_mandatory = 2; +static const long asn_VAL_499_id_Target_SgNB_ID = 239; +static const long asn_VAL_499_reject = 0; +static const long asn_VAL_499_mandatory = 2; +static const long asn_VAL_500_id_Cause = 5; +static const long asn_VAL_500_ignore = 1; +static const long asn_VAL_500_mandatory = 2; +static const long asn_VAL_501_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_501_reject = 0; +static const long asn_VAL_501_optional = 0; +static const long asn_VAL_502_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_502_reject = 0; +static const long asn_VAL_502_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_497_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_497_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_497_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_498_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_498_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_498_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_499_id_Target_SgNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_499_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_499_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_500_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_500_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_500_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_501_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_501_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_501_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_502_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_502_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_502_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeRequired_IEs_1[] = { + { 6, 4, asn_IOS_SgNBChangeRequired_IEs_1_rows } +}; +static const long asn_VAL_503_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_503_ignore = 1; +static const long asn_VAL_503_mandatory = 2; +static const long asn_VAL_504_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_504_ignore = 1; +static const long asn_VAL_504_mandatory = 2; +static const long asn_VAL_505_id_E_RABs_ToBeReleased_SgNBChaConfList = 229; +static const long asn_VAL_505_ignore = 1; +static const long asn_VAL_505_optional = 0; +static const long asn_VAL_506_id_CriticalityDiagnostics = 17; +static const long asn_VAL_506_ignore = 1; +static const long asn_VAL_506_optional = 0; +static const long asn_VAL_507_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_507_ignore = 1; +static const long asn_VAL_507_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_503_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_503_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_503_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_504_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_504_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_504_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_505_id_E_RABs_ToBeReleased_SgNBChaConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_505_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_505_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_506_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_506_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_506_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_507_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_507_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_507_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeConfirm_IEs_1[] = { + { 5, 4, asn_IOS_SgNBChangeConfirm_IEs_1_rows } +}; +static const long asn_VAL_509_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_509_reject = 0; +static const long asn_VAL_509_mandatory = 2; +static const long asn_VAL_510_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_510_reject = 0; +static const long asn_VAL_510_mandatory = 2; +static const long asn_VAL_511_id_SplitSRB = 242; +static const long asn_VAL_511_reject = 0; +static const long asn_VAL_511_optional = 0; +static const long asn_VAL_512_id_UENRMeasurement = 243; +static const long asn_VAL_512_reject = 0; +static const long asn_VAL_512_optional = 0; +static const long asn_VAL_513_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_513_reject = 0; +static const long asn_VAL_513_optional = 0; +static const asn_ioc_cell_t asn_IOS_RRCTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_509_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_509_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_509_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_510_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_510_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_510_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_511_id_SplitSRB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_511_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_511_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_512_id_UENRMeasurement }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_512_reject }, + { "&Value", aioc__type, &asn_DEF_UENRMeasurement }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_512_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_513_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_513_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_513_optional } +}; +static const asn_ioc_set_t asn_IOS_RRCTransfer_IEs_1[] = { + { 5, 4, asn_IOS_RRCTransfer_IEs_1_rows } +}; +static const long asn_VAL_514_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_514_ignore = 1; +static const long asn_VAL_514_mandatory = 2; +static const long asn_VAL_515_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_515_ignore = 1; +static const long asn_VAL_515_mandatory = 2; +static const long asn_VAL_516_id_Cause = 5; +static const long asn_VAL_516_ignore = 1; +static const long asn_VAL_516_mandatory = 2; +static const long asn_VAL_517_id_CriticalityDiagnostics = 17; +static const long asn_VAL_517_ignore = 1; +static const long asn_VAL_517_optional = 0; +static const long asn_VAL_518_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_518_reject = 0; +static const long asn_VAL_518_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_514_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_514_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_514_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_515_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_515_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_515_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_516_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_516_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_516_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_517_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_517_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_517_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_518_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_518_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_518_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeRefuse_IEs_1[] = { + { 5, 4, asn_IOS_SgNBChangeRefuse_IEs_1_rows } +}; +static const long asn_VAL_519_id_InitiatingNodeType_EndcX2Setup = 244; +static const long asn_VAL_519_reject = 0; +static const long asn_VAL_519_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_519_id_InitiatingNodeType_EndcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_519_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcX2Setup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_519_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupRequest_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2SetupRequest_IEs_1_rows } +}; +static const long asn_VAL_520_id_GlobalENB_ID = 21; +static const long asn_VAL_520_reject = 0; +static const long asn_VAL_520_mandatory = 2; +static const long asn_VAL_521_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_521_reject = 0; +static const long asn_VAL_521_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2SetupReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_520_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_520_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_520_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_521_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_521_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_521_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2SetupReqIEs_1[] = { + { 2, 4, asn_IOS_ENB_ENDCX2SetupReqIEs_1_rows } +}; +static const long asn_VAL_522_id_Globalen_gNB_ID = 252; +static const long asn_VAL_522_reject = 0; +static const long asn_VAL_522_mandatory = 2; +static const long asn_VAL_523_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_523_reject = 0; +static const long asn_VAL_523_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2SetupReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_522_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_522_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_522_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_523_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_523_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_523_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2SetupReqIEs_1[] = { + { 2, 4, asn_IOS_En_gNB_ENDCX2SetupReqIEs_1_rows } +}; +static const long asn_VAL_524_id_RespondingNodeType_EndcX2Setup = 246; +static const long asn_VAL_524_reject = 0; +static const long asn_VAL_524_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_524_id_RespondingNodeType_EndcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_524_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcX2Setup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_524_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupResponse_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2SetupResponse_IEs_1_rows } +}; +static const long asn_VAL_525_id_GlobalENB_ID = 21; +static const long asn_VAL_525_reject = 0; +static const long asn_VAL_525_mandatory = 2; +static const long asn_VAL_526_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_526_reject = 0; +static const long asn_VAL_526_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2SetupReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_525_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_525_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_525_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_526_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_526_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_526_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2SetupReqAckIEs_1[] = { + { 2, 4, asn_IOS_ENB_ENDCX2SetupReqAckIEs_1_rows } +}; +static const long asn_VAL_527_id_Globalen_gNB_ID = 252; +static const long asn_VAL_527_reject = 0; +static const long asn_VAL_527_mandatory = 2; +static const long asn_VAL_528_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_528_reject = 0; +static const long asn_VAL_528_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_527_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_527_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_527_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_528_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_528_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_528_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1[] = { + { 2, 4, asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1_rows } +}; +static const long asn_VAL_529_id_Cause = 5; +static const long asn_VAL_529_ignore = 1; +static const long asn_VAL_529_mandatory = 2; +static const long asn_VAL_530_id_CriticalityDiagnostics = 17; +static const long asn_VAL_530_ignore = 1; +static const long asn_VAL_530_optional = 0; +static const long asn_VAL_531_id_TimeToWait = 22; +static const long asn_VAL_531_ignore = 1; +static const long asn_VAL_531_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_529_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_529_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_529_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_530_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_530_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_530_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_531_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_531_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_531_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCX2SetupFailure_IEs_1_rows } +}; +static const long asn_VAL_532_id_InitiatingNodeType_EndcConfigUpdate = 245; +static const long asn_VAL_532_reject = 0; +static const long asn_VAL_532_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_532_id_InitiatingNodeType_EndcConfigUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_532_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcConfigUpdate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_532_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdate_IEs_1[] = { + { 1, 4, asn_IOS_ENDCConfigurationUpdate_IEs_1_rows } +}; +static const long asn_VAL_533_id_CellAssistanceInformation = 251; +static const long asn_VAL_533_reject = 0; +static const long asn_VAL_533_optional = 0; +static const long asn_VAL_534_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_534_reject = 0; +static const long asn_VAL_534_optional = 0; +static const long asn_VAL_535_id_ServedEUTRAcellsToModifyListENDCConfUpd = 259; +static const long asn_VAL_535_reject = 0; +static const long asn_VAL_535_optional = 0; +static const long asn_VAL_536_id_ServedEUTRAcellsToDeleteListENDCConfUpd = 260; +static const long asn_VAL_536_reject = 0; +static const long asn_VAL_536_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCConfigUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_533_id_CellAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_533_reject }, + { "&Value", aioc__type, &asn_DEF_CellAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_533_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_534_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_534_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_534_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_535_id_ServedEUTRAcellsToModifyListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_535_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_535_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_536_id_ServedEUTRAcellsToDeleteListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_536_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_536_optional } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCConfigUpdateIEs_1[] = { + { 4, 4, asn_IOS_ENB_ENDCConfigUpdateIEs_1_rows } +}; +static const long asn_VAL_537_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_537_reject = 0; +static const long asn_VAL_537_optional = 0; +static const long asn_VAL_538_id_ServedNRcellsToModifyListENDCConfUpd = 261; +static const long asn_VAL_538_reject = 0; +static const long asn_VAL_538_optional = 0; +static const long asn_VAL_539_id_ServedNRcellsToDeleteListENDCConfUpd = 262; +static const long asn_VAL_539_reject = 0; +static const long asn_VAL_539_optional = 0; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCConfigUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_537_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_537_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_537_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_538_id_ServedNRcellsToModifyListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_538_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsToModifyENDCConfUpdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_538_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_539_id_ServedNRcellsToDeleteListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_539_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsToDeleteENDCConfUpdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_539_optional } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCConfigUpdateIEs_1[] = { + { 3, 4, asn_IOS_En_gNB_ENDCConfigUpdateIEs_1_rows } +}; +static const long asn_VAL_540_id_RespondingNodeType_EndcConfigUpdate = 247; +static const long asn_VAL_540_reject = 0; +static const long asn_VAL_540_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_540_id_RespondingNodeType_EndcConfigUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_540_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcConfigUpdate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_540_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1[] = { + { 1, 4, asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_541_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_541_reject = 0; +static const long asn_VAL_541_optional = 0; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_541_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_541_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_541_optional } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1_rows } +}; +static const long asn_VAL_542_id_Cause = 5; +static const long asn_VAL_542_ignore = 1; +static const long asn_VAL_542_mandatory = 2; +static const long asn_VAL_543_id_CriticalityDiagnostics = 17; +static const long asn_VAL_543_ignore = 1; +static const long asn_VAL_543_optional = 0; +static const long asn_VAL_544_id_TimeToWait = 22; +static const long asn_VAL_544_ignore = 1; +static const long asn_VAL_544_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_542_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_542_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_542_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_543_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_543_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_543_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_544_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_544_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_544_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCConfigurationUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_545_id_ServedNRCellsToActivate = 267; +static const long asn_VAL_545_reject = 0; +static const long asn_VAL_545_mandatory = 2; +static const long asn_VAL_546_id_ActivationID = 256; +static const long asn_VAL_546_reject = 0; +static const long asn_VAL_546_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_545_id_ServedNRCellsToActivate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_545_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRCellsToActivate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_545_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_546_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_546_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_546_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationRequest_IEs_1[] = { + { 2, 4, asn_IOS_ENDCCellActivationRequest_IEs_1_rows } +}; +static const long asn_VAL_547_id_ActivatedNRCellList = 268; +static const long asn_VAL_547_ignore = 1; +static const long asn_VAL_547_mandatory = 2; +static const long asn_VAL_548_id_ActivationID = 256; +static const long asn_VAL_548_reject = 0; +static const long asn_VAL_548_mandatory = 2; +static const long asn_VAL_549_id_CriticalityDiagnostics = 17; +static const long asn_VAL_549_ignore = 1; +static const long asn_VAL_549_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_547_id_ActivatedNRCellList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_547_ignore }, + { "&Value", aioc__type, &asn_DEF_ActivatedNRCellList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_547_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_548_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_548_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_548_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_549_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_549_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_549_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationResponse_IEs_1[] = { + { 3, 4, asn_IOS_ENDCCellActivationResponse_IEs_1_rows } +}; +static const long asn_VAL_550_id_ActivationID = 256; +static const long asn_VAL_550_reject = 0; +static const long asn_VAL_550_mandatory = 2; +static const long asn_VAL_551_id_Cause = 5; +static const long asn_VAL_551_ignore = 1; +static const long asn_VAL_551_mandatory = 2; +static const long asn_VAL_552_id_CriticalityDiagnostics = 17; +static const long asn_VAL_552_ignore = 1; +static const long asn_VAL_552_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_550_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_550_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_550_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_551_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_551_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_551_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_552_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_552_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_552_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCCellActivationFailure_IEs_1_rows } +}; +static const long asn_VAL_553_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_553_reject = 0; +static const long asn_VAL_553_mandatory = 2; +static const long asn_VAL_554_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_554_reject = 0; +static const long asn_VAL_554_mandatory = 2; +static const long asn_VAL_555_id_SecondaryRATUsageReportList = 265; +static const long asn_VAL_555_reject = 0; +static const long asn_VAL_555_mandatory = 2; +static const long asn_VAL_556_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_556_reject = 0; +static const long asn_VAL_556_optional = 0; +static const asn_ioc_cell_t asn_IOS_SecondaryRATDataUsageReport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_553_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_553_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_553_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_554_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_554_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_554_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_555_id_SecondaryRATUsageReportList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_555_reject }, + { "&Value", aioc__type, &asn_DEF_SecondaryRATUsageReportList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_555_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_556_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_556_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_556_optional } +}; +static const asn_ioc_set_t asn_IOS_SecondaryRATDataUsageReport_IEs_1[] = { + { 4, 4, asn_IOS_SecondaryRATDataUsageReport_IEs_1_rows } +}; +static const long asn_VAL_557_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_557_reject = 0; +static const long asn_VAL_557_mandatory = 2; +static const long asn_VAL_558_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_558_reject = 0; +static const long asn_VAL_558_mandatory = 2; +static const long asn_VAL_559_id_UEContextLevelUserPlaneActivity = 296; +static const long asn_VAL_559_ignore = 1; +static const long asn_VAL_559_optional = 0; +static const long asn_VAL_560_id_ERABActivityNotifyItemList = 297; +static const long asn_VAL_560_ignore = 1; +static const long asn_VAL_560_optional = 0; +static const long asn_VAL_561_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_561_reject = 0; +static const long asn_VAL_561_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBActivityNotification_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_557_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_557_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_557_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_558_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_558_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_558_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_559_id_UEContextLevelUserPlaneActivity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_559_ignore }, + { "&Value", aioc__type, &asn_DEF_UserPlaneTrafficActivityReport }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_559_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_560_id_ERABActivityNotifyItemList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_560_ignore }, + { "&Value", aioc__type, &asn_DEF_ERABActivityNotifyItemList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_560_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_561_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_561_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_561_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBActivityNotification_IEs_1[] = { + { 5, 4, asn_IOS_SgNBActivityNotification_IEs_1_rows } +}; +static const long asn_VAL_562_id_UEs_ToBeReset = 270; +static const long asn_VAL_562_reject = 0; +static const long asn_VAL_562_mandatory = 2; +static const long asn_VAL_563_id_Cause = 5; +static const long asn_VAL_563_ignore = 1; +static const long asn_VAL_563_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCPartialResetRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_562_id_UEs_ToBeReset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_562_reject }, + { "&Value", aioc__type, &asn_DEF_UEsToBeResetList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_562_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_563_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_563_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_563_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCPartialResetRequired_IEs_1[] = { + { 2, 4, asn_IOS_ENDCPartialResetRequired_IEs_1_rows } +}; +static const long asn_VAL_564_id_UEs_Admitted_ToBeReset = 271; +static const long asn_VAL_564_reject = 0; +static const long asn_VAL_564_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCPartialResetConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_564_id_UEs_Admitted_ToBeReset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_564_reject }, + { "&Value", aioc__type, &asn_DEF_UEsToBeResetList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_564_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCPartialResetConfirm_IEs_1[] = { + { 1, 4, asn_IOS_ENDCPartialResetConfirm_IEs_1_rows } +}; +static const long asn_VAL_565_id_InitiatingNodeType_EutranrCellResourceCoordination = 285; +static const long asn_VAL_565_reject = 0; +static const long asn_VAL_565_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_565_id_InitiatingNodeType_EutranrCellResourceCoordination }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_565_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_565_mandatory } +}; +static const asn_ioc_set_t asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1[] = { + { 1, 4, asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1_rows } +}; +static const long asn_VAL_566_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_566_reject = 0; +static const long asn_VAL_566_mandatory = 2; +static const long asn_VAL_567_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_567_reject = 0; +static const long asn_VAL_567_mandatory = 2; +static const long asn_VAL_568_id_ListofEUTRACellsinEUTRACoordinationReq = 289; +static const long asn_VAL_568_reject = 0; +static const long asn_VAL_568_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_566_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_566_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_566_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_567_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_567_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_567_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_568_id_ListofEUTRACellsinEUTRACoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_568_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinEUTRACoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_568_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1[] = { + { 3, 4, asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows } +}; +static const long asn_VAL_569_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_569_reject = 0; +static const long asn_VAL_569_mandatory = 2; +static const long asn_VAL_570_id_ListofEUTRACellsinNRCoordinationReq = 291; +static const long asn_VAL_570_reject = 0; +static const long asn_VAL_570_mandatory = 2; +static const long asn_VAL_571_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_571_reject = 0; +static const long asn_VAL_571_mandatory = 2; +static const long asn_VAL_572_id_ListofNRCellsinNRCoordinationReq = 292; +static const long asn_VAL_572_reject = 0; +static const long asn_VAL_572_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_569_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_569_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_569_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_570_id_ListofEUTRACellsinNRCoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_570_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinNRCoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_570_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_571_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_571_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_571_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_572_id_ListofNRCellsinNRCoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_572_reject }, + { "&Value", aioc__type, &asn_DEF_ListofNRCellsinNRCoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_572_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1[] = { + { 4, 4, asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows } +}; +static const long asn_VAL_573_id_RespondingNodeType_EutranrCellResourceCoordination = 286; +static const long asn_VAL_573_reject = 0; +static const long asn_VAL_573_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_573_id_RespondingNodeType_EutranrCellResourceCoordination }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_573_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EutranrCellResourceCoordination }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_573_mandatory } +}; +static const asn_ioc_set_t asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1[] = { + { 1, 4, asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1_rows } +}; +static const long asn_VAL_574_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_574_reject = 0; +static const long asn_VAL_574_mandatory = 2; +static const long asn_VAL_575_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_575_reject = 0; +static const long asn_VAL_575_mandatory = 2; +static const long asn_VAL_576_id_ListofEUTRACellsinEUTRACoordinationResp = 290; +static const long asn_VAL_576_reject = 0; +static const long asn_VAL_576_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_574_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_574_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_574_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_575_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_575_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_575_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_576_id_ListofEUTRACellsinEUTRACoordinationResp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_576_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinEUTRACoordinationResp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_576_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1[] = { + { 3, 4, asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows } +}; +static const long asn_VAL_577_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_577_reject = 0; +static const long asn_VAL_577_mandatory = 2; +static const long asn_VAL_578_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_578_reject = 0; +static const long asn_VAL_578_mandatory = 2; +static const long asn_VAL_579_id_ListofNRCellsinNRCoordinationResp = 293; +static const long asn_VAL_579_reject = 0; +static const long asn_VAL_579_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_577_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_577_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_577_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_578_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_578_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_578_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_579_id_ListofNRCellsinNRCoordinationResp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_579_reject }, + { "&Value", aioc__type, &asn_DEF_ListofNRCellsinNRCoordinationResp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_579_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1[] = { + { 3, 4, asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows } +}; +static const long asn_VAL_580_id_InitiatingNodeType_EndcX2Removal = 298; +static const long asn_VAL_580_reject = 0; +static const long asn_VAL_580_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_580_id_InitiatingNodeType_EndcX2Removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_580_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcX2Removal }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_580_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalRequest_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2RemovalRequest_IEs_1_rows } +}; +static const long asn_VAL_581_id_GlobalENB_ID = 21; +static const long asn_VAL_581_reject = 0; +static const long asn_VAL_581_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2RemovalReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_581_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_581_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_581_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2RemovalReqIEs_1[] = { + { 1, 4, asn_IOS_ENB_ENDCX2RemovalReqIEs_1_rows } +}; +static const long asn_VAL_582_id_Globalen_gNB_ID = 252; +static const long asn_VAL_582_reject = 0; +static const long asn_VAL_582_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_582_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_582_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_582_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1_rows } +}; +static const long asn_VAL_583_id_RespondingNodeType_EndcX2Removal = 299; +static const long asn_VAL_583_reject = 0; +static const long asn_VAL_583_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_583_id_RespondingNodeType_EndcX2Removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_583_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcX2Removal }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_583_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalResponse_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2RemovalResponse_IEs_1_rows } +}; +static const long asn_VAL_584_id_GlobalENB_ID = 21; +static const long asn_VAL_584_reject = 0; +static const long asn_VAL_584_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_584_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_584_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_584_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1[] = { + { 1, 4, asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1_rows } +}; +static const long asn_VAL_585_id_Globalen_gNB_ID = 252; +static const long asn_VAL_585_reject = 0; +static const long asn_VAL_585_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_585_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_585_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_585_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1_rows } +}; +static const long asn_VAL_586_id_Cause = 5; +static const long asn_VAL_586_ignore = 1; +static const long asn_VAL_586_mandatory = 2; +static const long asn_VAL_587_id_CriticalityDiagnostics = 17; +static const long asn_VAL_587_ignore = 1; +static const long asn_VAL_587_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_586_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_586_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_586_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_587_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_587_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_587_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalFailure_IEs_1[] = { + { 2, 4, asn_IOS_ENDCX2RemovalFailure_IEs_1_rows } +}; +static const long asn_VAL_588_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_588_ignore = 1; +static const long asn_VAL_588_optional = 0; +static const long asn_VAL_589_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_589_ignore = 1; +static const long asn_VAL_589_mandatory = 2; +static const long asn_VAL_590_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_590_ignore = 1; +static const long asn_VAL_590_optional = 0; +static const long asn_VAL_591_id_E_RABs_DataForwardingAddress_List = 307; +static const long asn_VAL_591_ignore = 1; +static const long asn_VAL_591_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_DataForwardingAddressIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_588_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_588_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_588_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_589_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_589_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_589_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_590_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_590_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_590_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_591_id_E_RABs_DataForwardingAddress_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_591_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_DataForwardingAddress_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_591_mandatory } +}; +static const asn_ioc_set_t asn_IOS_DataForwardingAddressIndication_IEs_1[] = { + { 4, 4, asn_IOS_DataForwardingAddressIndication_IEs_1_rows } +}; +static const long asn_VAL_593_id_GNBOverloadInformation = 310; +static const long asn_VAL_593_ignore = 1; +static const long asn_VAL_593_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_GNBStatusIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_593_id_GNBOverloadInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_593_ignore }, + { "&Value", aioc__type, &asn_DEF_GNBOverloadInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_593_mandatory } +}; +static const asn_ioc_set_t asn_IOS_GNBStatusIndicationIEs_1[] = { + { 1, 4, asn_IOS_GNBStatusIndicationIEs_1_rows } +}; +static const long asn_VAL_594_id_E_RAB_Item = 2; +static const long asn_VAL_594_ignore = 1; +static const long asn_VAL_594_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RAB_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_594_id_E_RAB_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_594_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_594_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RAB_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RAB_ItemIEs_1_rows } +}; +static const long asn_VAL_595_id_E_RABUsageReport_Item = 263; +static const long asn_VAL_595_ignore = 1; +static const long asn_VAL_595_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABUsageReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_595_id_E_RABUsageReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_595_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABUsageReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_595_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABUsageReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABUsageReport_ItemIEs_1_rows } +}; +static const long asn_VAL_596_id_SecondaryRATUsageReport_Item = 266; +static const long asn_VAL_596_reject = 0; +static const long asn_VAL_596_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_SecondaryRATUsageReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_596_id_SecondaryRATUsageReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_596_reject }, + { "&Value", aioc__type, &asn_DEF_SecondaryRATUsageReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_596_mandatory } +}; +static const asn_ioc_set_t asn_IOS_SecondaryRATUsageReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_SecondaryRATUsageReport_ItemIEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellInformation_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellInformation_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellToReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellToReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellToReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellToReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellToReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellToReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeasurementInitiationResult_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementInitiationResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementInitiationResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeasurementInitiationResult_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementInitiationResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementInitiationResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeasurementFailureCause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementFailureCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementFailureCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeasurementFailureCause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementFailureCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementFailureCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CompleteFailureCauseInformation_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CompleteFailureCauseInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CompleteFailureCauseInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CompleteFailureCauseInformation_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CompleteFailureCauseInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CompleteFailureCauseInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellMeasurementResult_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellMeasurementResult_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqdItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqdItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelConfItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelConfItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToCounterCheckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToCounterCheckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_DataForwardingAddress_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_DataForwardingAddress_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + static const int indexToPresent[] = { RICserviceUpdate_IEs__value_PR_NOTHING, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {HandoverRequestAcknowledge_IEs__value_PR_NOTHING, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_List, + HandoverRequestAcknowledge_IEs__value_PR_E_RAB_List, + HandoverRequestAcknowledge_IEs__value_PR_TargeteNBtoSource_eNBTransparentContainer, + HandoverRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverPreparationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverPreparationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverPreparationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverPreparationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverPreparationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverPreparationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverReport_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverReport_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverReport_IEs, id)); + static const int indexToPresent[] = { HandoverReport_IEs__value_PR_NOTHING, + HandoverReport_IEs__value_PR_HandoverReportType, + HandoverReport_IEs__value_PR_Cause, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_TargetCellInUTRAN, + HandoverReport_IEs__value_PR_CRNTI, + HandoverReport_IEs__value_PR_MobilityInformation, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SNStatusTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SNStatusTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SNStatusTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SNStatusTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SNStatusTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SNStatusTransfer_IEs, id)); +// EB Patch. + static const int indexToPresent[] = { SNStatusTransfer_IEs__value_PR_NOTHING, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_E_RABs_SubjectToStatusTransfer_List, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextRelease_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEContextRelease_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEContextRelease_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextRelease_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEContextRelease_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEContextRelease_IEs, id)); + static const int indexToPresent[] = { UEContextRelease_IEs__value_PR_NOTHING, + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_SIPTOBearerDeactivationIndication, + UEContextRelease_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverCancel_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverCancel_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverCancel_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverCancel_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverCancel_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverCancel_IEs, id)); + static const int indexToPresent[] = { HandoverCancel_IEs__value_PR_NOTHING, + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_Cause, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + static const int indexToPresent[] = {ErrorIndication_IEs__value_PR_NOTHING, + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LoadInformation_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LoadInformation_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LoadInformation_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LoadInformation_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LoadInformation_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LoadInformation_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdate_IEs, id)); + static const int indexToPresent[] = {ENBConfigurationUpdate_IEs__value_PR_NOTHING, + ENBConfigurationUpdate_IEs__value_PR_ServedCells, + ENBConfigurationUpdate_IEs__value_PR_ServedCellsToModify, + ENBConfigurationUpdate_IEs__value_PR_Old_ECGIs, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_CoverageModificationList + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusRequest_IEs, id)); + static const int indexToPresent[] = { ResourceStatusRequest_IEs__value_PR_NOTHING, + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Registration_Request, + ResourceStatusRequest_IEs__value_PR_ReportCharacteristics, + ResourceStatusRequest_IEs__value_PR_CellToReport_List, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicity, + ResourceStatusRequest_IEs__value_PR_PartialSuccessIndicator, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityRSRPMR, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityCSIR + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusResponse_IEs, id)); + static const int indexToPresent[] = {ResourceStatusResponse_IEs__value_PR_NOTHING, + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusResponse_IEs__value_PR_MeasurementInitiationResult_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusFailure_IEs, id)); + + static const int indexToPresent[] = {ResourceStatusFailure_IEs__value_PR_NOTHING, + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Cause, + ResourceStatusFailure_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusFailure_IEs__value_PR_CompleteFailureCauseInformation_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusUpdate_IEs, id)); + static const int indexToPresent[] = {ResourceStatusUpdate_IEs__value_PR_NOTHING, + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_CellMeasurementResult_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeRequest_IEs, id)); + static const int indexToPresent[] = {MobilityChangeRequest_IEs__value_PR_NOTHING, + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_Cause + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeAcknowledge_IEs, id)); + static const int indexToPresent[] = {MobilityChangeAcknowledge_IEs__value_PR_NOTHING, + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_CriticalityDiagnostics + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeFailure_IEs, id)); + static const int indexToPresent[] = {MobilityChangeFailure_IEs__value_PR_NOTHING, + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_Cause, + MobilityChangeFailure_IEs__value_PR_MobilityParametersModificationRange, + MobilityChangeFailure_IEs__value_PR_CriticalityDiagnostics + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + + break; + } + } + + return result; +} + +static int +memb_value_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RLFIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RLFIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RLFIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RLFIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RLFIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RLFIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2Release_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2Release_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2Release_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2Release_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2Release_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2Release_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2APMessageTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2APMessageTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2APMessageTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2APMessageTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2APMessageTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2APMessageTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequest_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequest_IEs__value_PR_NOTHING, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UESecurityCapabilities, + SeNBAdditionRequest_IEs__value_PR_SeNBSecurityKey, + SeNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SeNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SeNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_List, + SeNBAdditionRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBAdditionRequest_IEs__value_PR_CSGMembershipStatus, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TunnelInformation + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + + break; + } + } + + return result; +} + +static int +memb_value_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestReject_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequestReject_IEs__value_PR_NOTHING, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_Cause, + SeNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReconfigurationComplete_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReconfigurationComplete_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReconfigurationComplete_IEs, id)); + static const int indexToPresent[] = {SeNBReconfigurationComplete_IEs__value_PR_NOTHING, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_ResponseInformationSeNBReconfComp, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequest_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequest_IEs__value_PR_NOTHING, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_Cause, + SeNBModificationRequest_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequest_IEs__value_PR_PLMN_Identity, + SeNBModificationRequest_IEs__value_PR_UE_ContextInformationSeNBModReq, + SeNBModificationRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRequest_IEs__value_PR_CSGMembershipStatus, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBModificationRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestReject_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequestReject_IEs__value_PR_NOTHING, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_Cause, + SeNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequired_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequired_IEs__value_PR_NOTHING, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_Cause, + SeNBModificationRequired_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_ModReqd, + SeNBModificationRequired_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationConfirm_IEs, id)); + static const int indexToPresent[] = {SeNBModificationConfirm_IEs__value_PR_NOTHING, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRefuse_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRefuse_IEs__value_PR_NOTHING, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_Cause, + SeNBModificationRefuse_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequest_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseRequest_IEs__value_PR_NOTHING, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_Cause, + SeNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_List_RelReq, + SeNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_MakeBeforeBreakIndicator + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequired_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseRequired_IEs__value_PR_NOTHING, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_Cause, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseConfirm_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseConfirm_IEs__value_PR_NOTHING, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_List_RelConf, + SeNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBCounterCheckRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBCounterCheckRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBCounterCheckRequest_IEs, id)); + static const int indexToPresent[] = {SeNBCounterCheckRequest_IEs__value_PR_NOTHING, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToCounterCheck_List, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextResponse_IEs, id)); + static const int indexToPresent[] = {RetrieveUEContextResponse_IEs__value_PR_NOTHING, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_GUMMEI, + RetrieveUEContextResponse_IEs__value_PR_UE_ContextInformationRetrieve, + RetrieveUEContextResponse_IEs__value_PR_TraceActivation, + RetrieveUEContextResponse_IEs__value_PR_SRVCCOperationPossible, + RetrieveUEContextResponse_IEs__value_PR_Masked_IMEISV, + RetrieveUEContextResponse_IEs__value_PR_ExpectedUEBehaviour, + RetrieveUEContextResponse_IEs__value_PR_ProSeAuthorized, + RetrieveUEContextResponse_IEs__value_PR_CriticalityDiagnostics, + RetrieveUEContextResponse_IEs__value_PR_V2XServicesAuthorized, + RetrieveUEContextResponse_IEs__value_PR_AerialUEsubscriptionInformation, + RetrieveUEContextResponse_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReconfigurationComplete_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReconfigurationComplete_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequest_IEs, id)); + static const int indexToPresent[] = {SgNBModificationRequest_IEs__value_PR_NOTHING, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_Cause, + SgNBModificationRequest_IEs__value_PR_PLMN_Identity, + SgNBModificationRequest_IEs__value_PR_HandoverRestrictionList, + SgNBModificationRequest_IEs__value_PR_SCGConfigurationQuery, + SgNBModificationRequest_IEs__value_PR_UE_ContextInformation_SgNBModReq, + SgNBModificationRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBModificationRequest_IEs__value_PR_SplitSRBs, + SgNBModificationRequest_IEs__value_PR_SplitSRBs + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SgNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_RRC_Config_Ind + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBCounterCheckRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBCounterCheckRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RRCTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RRCTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RRCTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RRCTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RRCTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RRCTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCConfigUpdateIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCConfigUpdateIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SecondaryRATDataUsageReport_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATDataUsageReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATDataUsageReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SecondaryRATDataUsageReport_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATDataUsageReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATDataUsageReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBActivityNotification_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBActivityNotification_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBActivityNotification_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBActivityNotification_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBActivityNotification_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBActivityNotification_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCPartialResetRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCPartialResetRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCPartialResetConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCPartialResetConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DataForwardingAddressIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_DataForwardingAddressIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct DataForwardingAddressIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DataForwardingAddressIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_DataForwardingAddressIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct DataForwardingAddressIndication_IEs, id)); + static const int indexToPresent[] = {DataForwardingAddressIndication_IEs__value_PR_NOTHING, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_E_RABs_DataForwardingAddress_List + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_GNBStatusIndicationIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GNBStatusIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GNBStatusIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_GNBStatusIndicationIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GNBStatusIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GNBStatusIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RAB_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RAB_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABUsageReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABUsageReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SecondaryRATUsageReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SecondaryRATUsageReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_478 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_479 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_480 CC_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_482 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_483 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_484 CC_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_486 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_487 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_488 CC_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_490 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_491 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_492 CC_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_494 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_495 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_496 CC_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_498 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_499 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_500 CC_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_502 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_503 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_504 CC_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_506 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_507 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_508 CC_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_510 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_511 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_512 CC_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_514 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_515 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_516 CC_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_518 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_519 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_520 CC_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_522 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_523 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_524 CC_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_526 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_527 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_528 CC_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_530 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_531 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_532 CC_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_534 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_535 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_536 CC_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_538 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_539 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_540 CC_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_542 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_543 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_544 CC_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_546 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_547 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_548 CC_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_550 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_551 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_552 CC_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_554 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_555 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_556 CC_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_558 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_559 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_560 CC_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_562 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_563 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_564 CC_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_566 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_567 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_568 CC_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_570 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_571 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_572 CC_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_574 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_575 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_576 CC_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_578 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_579 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_580 CC_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_582 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_583 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_584 CC_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_586 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_587 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_588 CC_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_590 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_591 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_592 CC_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_594 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_595 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_596 CC_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_598 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_599 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_600 CC_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_602 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_603 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_604 CC_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_606 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_607 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_608 CC_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_610 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_611 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_612 CC_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_614 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_615 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_616 CC_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_618 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_619 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_620 CC_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_622 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_623 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_624 CC_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_626 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_627 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_628 CC_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_630 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_631 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_632 CC_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_634 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_635 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_636 CC_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_638 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_639 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_640 CC_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_642 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_643 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_644 CC_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_646 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_647 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_648 CC_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_650 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_651 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_652 CC_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_654 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_655 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_656 CC_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_658 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_659 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_660 CC_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_662 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_663 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_664 CC_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_666 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_667 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_668 CC_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_670 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_671 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_672 CC_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_674 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_675 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_676 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs__value), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 1, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_RICaction_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs), + offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { + "RICaction-ToBeSetup-ItemIEs", + "RICaction-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { + sizeof(struct RICaction_Admitted_ItemIEs__value), + offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_Admitted_ItemIEs__value, present), + sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_8, + 1, /* Elements count */ + &asn_SPC_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_8, + select_RICaction_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { + sizeof(struct RICaction_Admitted_ItemIEs), + offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { + "RICaction-Admitted-ItemIEs", + "RICaction-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs__value), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), + sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_12, + 1, /* Elements count */ + &asn_SPC_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_NotAdmitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_12, + select_RICaction_NotAdmitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs), + offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { + "RICaction-NotAdmitted-ItemIEs", + "RICaction-NotAdmitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunction_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunction-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { + sizeof(struct RANfunction_ItemIEs__value), + offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunction_ItemIEs__value, present), + sizeof(((struct RANfunction_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_16, + 1, /* Elements count */ + &asn_SPC_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunction_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_16, + select_RANfunction_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13 = { + sizeof(struct RANfunction_ItemIEs), + offsetof(struct RANfunction_ItemIEs, _asn_ctx), + asn_MAP_RANfunction_ItemIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { + "RANfunction-ItemIEs", + "RANfunction-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_ItemIEs_tags_13, + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + asn_DEF_RANfunction_ItemIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionID_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { + sizeof(struct RANfunctionID_ItemIEs__value), + offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionID_ItemIEs__value, present), + sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_20, + 1, /* Elements count */ + &asn_SPC_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionID_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_20, + select_RANfunctionID_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17 = { + sizeof(struct RANfunctionID_ItemIEs), + offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionID_ItemIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { + "RANfunctionID-ItemIEs", + "RANfunctionID-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_ItemIEs_tags_17, + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + asn_DEF_RANfunctionID_ItemIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionIDcause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionIDcause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { + sizeof(struct RANfunctionIDcause_ItemIEs__value), + offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionIDcause_ItemIEs__value, present), + sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_24, + 1, /* Elements count */ + &asn_SPC_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionIDcause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_24, + select_RANfunctionIDcause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 = { + sizeof(struct RANfunctionIDcause_ItemIEs), + offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { + "RANfunctionIDcause-ItemIEs", + "RANfunctionIDcause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, choice.E_RABs_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { + sizeof(struct E_RABs_ToBeSetup_ItemIEs__value), + offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_28, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_28, + 1, /* Elements count */ + &asn_SPC_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_28, + select_E_RABs_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_ItemIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 = { + sizeof(struct E_RABs_ToBeSetup_ItemIEs), + offsetof(struct E_RABs_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_ItemIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemIEs = { + "E-RABs-ToBeSetup-ItemIEs", + "E-RABs-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25, + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs__value, choice.E_RABs_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { + sizeof(struct E_RABs_Admitted_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_32, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_32, + 1, /* Elements count */ + &asn_SPC_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ItemIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_32, + select_E_RABs_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ItemIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 = { + sizeof(struct E_RABs_Admitted_ItemIEs), + offsetof(struct E_RABs_Admitted_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ItemIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ItemIEs = { + "E-RABs-Admitted-ItemIEs", + "E-RABs-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ItemIEs_tags_29, + sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29) + /sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ItemIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29) + /sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, choice.E_RABs_SubjectToStatusTransfer_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToStatusTransfer-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToStatusTransfer-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToStatusTransfer_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_36, + 1, /* Elements count */ + &asn_SPC_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToStatusTransfer_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_36, + select_E_RABs_SubjectToStatusTransfer_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToStatusTransfer_ItemIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemIEs), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_ItemIEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs = { + "E-RABs-SubjectToStatusTransfer-ItemIEs", + "E-RABs-SubjectToStatusTransfer-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs__value, choice.CellInformation_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellInformation-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellInformation-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { + sizeof(struct CellInformation_ItemIEs__value), + offsetof(struct CellInformation_ItemIEs__value, _asn_ctx), + offsetof(struct CellInformation_ItemIEs__value, present), + sizeof(((struct CellInformation_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_40, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_40, + 1, /* Elements count */ + &asn_SPC_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellInformation_ItemIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellInformation_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_40, + select_CellInformation_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_ItemIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_ItemIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellInformation_ItemIEs_specs_37 = { + sizeof(struct CellInformation_ItemIEs), + offsetof(struct CellInformation_ItemIEs, _asn_ctx), + asn_MAP_CellInformation_ItemIEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_ItemIEs = { + "CellInformation-ItemIEs", + "CellInformation-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_ItemIEs_tags_37, + sizeof(asn_DEF_CellInformation_ItemIEs_tags_37) + /sizeof(asn_DEF_CellInformation_ItemIEs_tags_37[0]), /* 1 */ + asn_DEF_CellInformation_ItemIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_CellInformation_ItemIEs_tags_37) + /sizeof(asn_DEF_CellInformation_ItemIEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_CellInformation_ItemIEs_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs__value, choice.CellToReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellToReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellToReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { + sizeof(struct CellToReport_ItemIEs__value), + offsetof(struct CellToReport_ItemIEs__value, _asn_ctx), + offsetof(struct CellToReport_ItemIEs__value, present), + sizeof(((struct CellToReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_44, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_44, + 1, /* Elements count */ + &asn_SPC_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellToReport_ItemIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellToReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_44, + select_CellToReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_ItemIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_ItemIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellToReport_ItemIEs_specs_41 = { + sizeof(struct CellToReport_ItemIEs), + offsetof(struct CellToReport_ItemIEs, _asn_ctx), + asn_MAP_CellToReport_ItemIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_ItemIEs = { + "CellToReport-ItemIEs", + "CellToReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_ItemIEs_tags_41, + sizeof(asn_DEF_CellToReport_ItemIEs_tags_41) + /sizeof(asn_DEF_CellToReport_ItemIEs_tags_41[0]), /* 1 */ + asn_DEF_CellToReport_ItemIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_CellToReport_ItemIEs_tags_41) + /sizeof(asn_DEF_CellToReport_ItemIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_CellToReport_ItemIEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs__value, choice.MeasurementInitiationResult_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementInitiationResult-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MeasurementInitiationResult-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { + sizeof(struct MeasurementInitiationResult_ItemIEs__value), + offsetof(struct MeasurementInitiationResult_ItemIEs__value, _asn_ctx), + offsetof(struct MeasurementInitiationResult_ItemIEs__value, present), + sizeof(((struct MeasurementInitiationResult_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_48, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_48, + 1, /* Elements count */ + &asn_SPC_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_ItemIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MeasurementInitiationResult_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_48, + select_MeasurementInitiationResult_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_ItemIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 = { + sizeof(struct MeasurementInitiationResult_ItemIEs), + offsetof(struct MeasurementInitiationResult_ItemIEs, _asn_ctx), + asn_MAP_MeasurementInitiationResult_ItemIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_ItemIEs = { + "MeasurementInitiationResult-ItemIEs", + "MeasurementInitiationResult-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45, + sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45) + /sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45) + /sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs__value, choice.MeasurementFailureCause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementFailureCause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementFailureCause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MeasurementFailureCause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { + sizeof(struct MeasurementFailureCause_ItemIEs__value), + offsetof(struct MeasurementFailureCause_ItemIEs__value, _asn_ctx), + offsetof(struct MeasurementFailureCause_ItemIEs__value, present), + sizeof(((struct MeasurementFailureCause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_52, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_52, + 1, /* Elements count */ + &asn_SPC_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_ItemIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MeasurementFailureCause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_52, + select_MeasurementFailureCause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_ItemIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 = { + sizeof(struct MeasurementFailureCause_ItemIEs), + offsetof(struct MeasurementFailureCause_ItemIEs, _asn_ctx), + asn_MAP_MeasurementFailureCause_ItemIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_ItemIEs = { + "MeasurementFailureCause-ItemIEs", + "MeasurementFailureCause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_ItemIEs_tags_49, + sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49) + /sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_ItemIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49) + /sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, choice.CompleteFailureCauseInformation_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompleteFailureCauseInformation-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CompleteFailureCauseInformation-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { + sizeof(struct CompleteFailureCauseInformation_ItemIEs__value), + offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, _asn_ctx), + offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, present), + sizeof(((struct CompleteFailureCauseInformation_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_56, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_56, + 1, /* Elements count */ + &asn_SPC_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_ItemIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CompleteFailureCauseInformation_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_56, + select_CompleteFailureCauseInformation_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_ItemIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 = { + sizeof(struct CompleteFailureCauseInformation_ItemIEs), + offsetof(struct CompleteFailureCauseInformation_ItemIEs, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_ItemIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_ItemIEs = { + "CompleteFailureCauseInformation-ItemIEs", + "CompleteFailureCauseInformation-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53, + sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53) + /sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53) + /sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs__value, choice.CellMeasurementResult_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellMeasurementResult-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellMeasurementResult-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { + sizeof(struct CellMeasurementResult_ItemIEs__value), + offsetof(struct CellMeasurementResult_ItemIEs__value, _asn_ctx), + offsetof(struct CellMeasurementResult_ItemIEs__value, present), + sizeof(((struct CellMeasurementResult_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_60, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_60, + 1, /* Elements count */ + &asn_SPC_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellMeasurementResult_ItemIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellMeasurementResult_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_60, + select_CellMeasurementResult_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_ItemIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_ItemIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_ItemIEs_specs_57 = { + sizeof(struct CellMeasurementResult_ItemIEs), + offsetof(struct CellMeasurementResult_ItemIEs, _asn_ctx), + asn_MAP_CellMeasurementResult_ItemIEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_ItemIEs = { + "CellMeasurementResult-ItemIEs", + "CellMeasurementResult-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_ItemIEs_tags_57, + sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57) + /sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57[0]), /* 1 */ + asn_DEF_CellMeasurementResult_ItemIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57) + /sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_ItemIEs_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, choice.E_RABs_ToBeAdded_Item), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeAdded_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { + sizeof(struct E_RABs_ToBeAdded_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_64, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_64, + 1, /* Elements count */ + &asn_SPC_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ItemIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_64, + select_E_RABs_ToBeAdded_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ItemIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 = { + sizeof(struct E_RABs_ToBeAdded_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ItemIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ItemIEs = { + "E-RABs-ToBeAdded-ItemIEs", + "E-RABs-ToBeAdded-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61, + sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_Item), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_68, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_68, + 1, /* Elements count */ + &asn_SPC_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_68, + select_E_RABs_Admitted_ToBeAdded_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ItemIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ItemIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-ItemIEs", + "E-RABs-Admitted-ToBeAdded-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, choice.E_RABs_ToBeAdded_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_72, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_72, + 1, /* Elements count */ + &asn_SPC_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_72, + select_E_RABs_ToBeAdded_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItemIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItemIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItemIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs = { + "E-RABs-ToBeAdded-ModReqItemIEs", + "E-RABs-ToBeAdded-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, choice.E_RABs_ToBeModified_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { + sizeof(struct E_RABs_ToBeModified_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_76, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_76, + 1, /* Elements count */ + &asn_SPC_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_76, + select_E_RABs_ToBeModified_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItemIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 = { + sizeof(struct E_RABs_ToBeModified_ModReqItemIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItemIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs = { + "E-RABs-ToBeModified-ModReqItemIEs", + "E-RABs-ToBeModified-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, choice.E_RABs_ToBeReleased_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_80, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_80, + 1, /* Elements count */ + &asn_SPC_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_80, + select_E_RABs_ToBeReleased_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItemIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItemIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItemIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs = { + "E-RABs-ToBeReleased-ModReqItemIEs", + "E-RABs-ToBeReleased-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_84, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_84, + 1, /* Elements count */ + &asn_SPC_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_84, + select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItemIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, choice.E_RABs_Admitted_ToBeModified_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_88, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_88, + 1, /* Elements count */ + &asn_SPC_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_88, + select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItemIEs", + "E-RABs-Admitted-ToBeModified-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, choice.E_RABs_Admitted_ToReleased_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToReleased-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_92, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_92, + 1, /* Elements count */ + &asn_SPC_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_92, + select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItemIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, choice.E_RABs_ToBeReleased_ModReqdItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqdItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqdItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-ModReqdItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqdItemIEs__value *)0)->present), + asn_MAP_value_tag2el_96, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_96, + 1, /* Elements count */ + &asn_SPC_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_ModReqdItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_96, + select_E_RABs_ToBeReleased_ModReqdItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItemIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItemIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs = { + "E-RABs-ToBeReleased-ModReqdItemIEs", + "E-RABs-ToBeReleased-ModReqdItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, choice.E_RABs_ToBeReleased_RelReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-RelReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_100, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_100, + 1, /* Elements count */ + &asn_SPC_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_RelReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_100, + select_E_RABs_ToBeReleased_RelReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItemIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItemIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItemIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs = { + "E-RABs-ToBeReleased-RelReqItemIEs", + "E-RABs-ToBeReleased-RelReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, choice.E_RABs_ToBeReleased_RelConfItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-RelConfItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItemIEs__value *)0)->present), + asn_MAP_value_tag2el_104, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_104, + 1, /* Elements count */ + &asn_SPC_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_RelConfItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_104, + select_E_RABs_ToBeReleased_RelConfItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItemIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItemIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItemIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs = { + "E-RABs-ToBeReleased-RelConfItemIEs", + "E-RABs-ToBeReleased-RelConfItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_108[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, choice.E_RABs_SubjectToCounterCheckItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToCounterCheckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_108[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToCounterCheckItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_108 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemIEs__value), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToCounterCheckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_108, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_108 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_108, + 1, /* Elements count */ + &asn_SPC_value_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToCounterCheckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_108, + select_E_RABs_SubjectToCounterCheckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_108, memb_value_constraint_105 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItemIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemIEs), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItemIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs = { + "E-RABs-SubjectToCounterCheckItemIEs", + "E-RABs-SubjectToCounterCheckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_112[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, choice.E_RABs_ToBeSetupRetrieve_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetupRetrieve_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeSetupRetrieve-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_112[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeSetupRetrieve-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_112 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeSetupRetrieve_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_112, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_112 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_112, + 1, /* Elements count */ + &asn_SPC_value_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetupRetrieve_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_112, + select_E_RABs_ToBeSetupRetrieve_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_112, memb_value_constraint_109 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_ItemIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemIEs), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_ItemIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs = { + "E-RABs-ToBeSetupRetrieve-ItemIEs", + "E-RABs-ToBeSetupRetrieve-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_116[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, choice.E_RABs_ToBeAdded_SgNBAddReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBAddReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_116[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeAdded-SgNBAddReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_116 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_116, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_116 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_116, + 1, /* Elements count */ + &asn_SPC_value_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_116, + select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_116, memb_value_constraint_113 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-ItemIEs", + "E-RABs-ToBeAdded-SgNBAddReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_120[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_120[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_120 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_120, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_120 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_120, + 1, /* Elements count */ + &asn_SPC_value_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_120, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_120, memb_value_constraint_117 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_124[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeAdded_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_124[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeAdded-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_124 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_124, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_124 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_124, + 1, /* Elements count */ + &asn_SPC_value_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_124, + select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_124, memb_value_constraint_121 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs = { + "E-RABs-ToBeAdded-SgNBModReq-ItemIEs", + "E-RABs-ToBeAdded-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_128[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeModified_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_128[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeModified-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_128 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_128, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_128 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_128, + 1, /* Elements count */ + &asn_SPC_value_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_128, + select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_128, memb_value_constraint_125 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs = { + "E-RABs-ToBeModified-SgNBModReq-ItemIEs", + "E-RABs-ToBeModified-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_132[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_132[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_132 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_132, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_132 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_132, + 1, /* Elements count */ + &asn_SPC_value_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_132, + select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_132, memb_value_constraint_129 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs = { + "E-RABs-ToBeReleased-SgNBModReq-ItemIEs", + "E-RABs-ToBeReleased-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_136[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_136[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_136 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_136, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_136 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_136, + 1, /* Elements count */ + &asn_SPC_value_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_136, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_136, memb_value_constraint_133 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_140[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeModified_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_140[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeModified-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_140 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_140, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_140 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_140, + 1, /* Elements count */ + &asn_SPC_value_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_140, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_140, memb_value_constraint_137 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_144[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToReleased_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToReleased-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_144[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToReleased-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_144 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_144, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_144 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_144, + 1, /* Elements count */ + &asn_SPC_value_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_144, + select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_144, memb_value_constraint_141 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_148[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBModReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_148[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBModReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_148 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_148, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_148 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_148, + 1, /* Elements count */ + &asn_SPC_value_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_148, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_148, memb_value_constraint_145 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs = { + "E-RABs-ToBeReleased-SgNBModReqd-ItemIEs", + "E-RABs-ToBeReleased-SgNBModReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_152[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, choice.E_RABs_ToBeModified_SgNBModReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_152[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeModified-SgNBModReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_152 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_152, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_152 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_152, + 1, /* Elements count */ + &asn_SPC_value_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_152, + select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_152, memb_value_constraint_149 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs = { + "E-RABs-ToBeModified-SgNBModReqd-ItemIEs", + "E-RABs-ToBeModified-SgNBModReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_156[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, choice.E_RABs_AdmittedToBeModified_SgNBModConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-AdmittedToBeModified-SgNBModConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_156[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-AdmittedToBeModified-SgNBModConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_156 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_156, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_156 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_156, + 1, /* Elements count */ + &asn_SPC_value_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_156, + select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_156, memb_value_constraint_153 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_160[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_160[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_160 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_160, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_160 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_160, + 1, /* Elements count */ + &asn_SPC_value_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_160, + select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_160, memb_value_constraint_157 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_164[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_164[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_164 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_164, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_164 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_164, + 1, /* Elements count */ + &asn_SPC_value_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_164, + select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_164, memb_value_constraint_161 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_168[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_168[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_168 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_168, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_168 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_168, + 1, /* Elements count */ + &asn_SPC_value_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_168, + select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_168, memb_value_constraint_165 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_172 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_172, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_172 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_172, + 1, /* Elements count */ + &asn_SPC_value_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_172, + select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_172, memb_value_constraint_169 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, choice.E_RABs_SubjectToSgNBCounterCheck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToSgNBCounterCheck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToSgNBCounterCheck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_176 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_176, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_176 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_176, + 1, /* Elements count */ + &asn_SPC_value_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_176, + select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_176, memb_value_constraint_173 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs = { + "E-RABs-SubjectToSgNBCounterCheck-ItemIEs", + "E-RABs-SubjectToSgNBCounterCheck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_180[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBChaConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBChaConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_180[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBChaConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_180 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_180, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_180 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_180, + 1, /* Elements count */ + &asn_SPC_value_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_178, memb_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_179, memb_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_180, + select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_180, memb_value_constraint_177 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-ItemIEs", + "E-RABs-ToBeReleased-SgNBChaConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, choice.E_RABs_DataForwardingAddress_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-DataForwardingAddress-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-DataForwardingAddress-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_184 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemIEs__value), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, present), + sizeof(((struct E_RABs_DataForwardingAddress_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_184, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_184 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_184, + 1, /* Elements count */ + &asn_SPC_value_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_182, memb_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_DataForwardingAddress_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_183, memb_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_184, + select_E_RABs_DataForwardingAddress_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_184, memb_value_constraint_181 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_ItemIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemIEs), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_ItemIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs = { + "E-RABs-DataForwardingAddress-ItemIEs", + "E-RABs-DataForwardingAddress-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscription), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscription, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscription" + }, +}; +static const unsigned asn_MAP_value_to_canonical_188[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_188[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscription */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_188 = { + sizeof(struct RICsubscriptionRequest_IEs__value), + offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionRequest_IEs__value, present), + sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_188, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_188, + asn_MAP_value_from_canonical_188, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_188 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_188, + 3, /* Elements count */ + &asn_SPC_value_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_186, memb_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_187, memb_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_188, + select_RICsubscriptionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_188, memb_value_constraint_185 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_185 = { + sizeof(struct RICsubscriptionRequest_IEs), + offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionRequest_IEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { + "RICsubscriptionRequest-IEs", + "RICsubscriptionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_IEs_tags_185, + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_IEs_tags_185, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_IEs_185, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_IEs_specs_185 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_192[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_192[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_192[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_192[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_192 = { + sizeof(struct RICsubscriptionResponse_IEs__value), + offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionResponse_IEs__value, present), + sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_192, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_192, + asn_MAP_value_from_canonical_192, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_192 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_192, + 4, /* Elements count */ + &asn_SPC_value_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_190, memb_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_191, memb_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_192, + select_RICsubscriptionResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_192, memb_value_constraint_189 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_189 = { + sizeof(struct RICsubscriptionResponse_IEs), + offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionResponse_IEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { + "RICsubscriptionResponse-IEs", + "RICsubscriptionResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_IEs_tags_189, + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_IEs_tags_189, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_IEs_189, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_IEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_196[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_196[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-NotAdmitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_196 = { + sizeof(struct RICsubscriptionFailure_IEs__value), + offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionFailure_IEs__value, present), + sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_196, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_196, + asn_MAP_value_from_canonical_196, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_196 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_196, + 4, /* Elements count */ + &asn_SPC_value_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_194, memb_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_195, memb_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_196, + select_RICsubscriptionFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_196, memb_value_constraint_193 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_193 = { + sizeof(struct RICsubscriptionFailure_IEs), + offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionFailure_IEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { + "RICsubscriptionFailure-IEs", + "RICsubscriptionFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_IEs_tags_193, + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_IEs_tags_193, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_IEs_193, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_IEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_200[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_200[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_200 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs__value), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_200, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_200, + asn_MAP_value_from_canonical_200, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_200 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_200, + 2, /* Elements count */ + &asn_SPC_value_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_198, memb_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_199, memb_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_200, + select_RICsubscriptionDeleteRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_200, memb_value_constraint_197 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs), + offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { + "RICsubscriptionDeleteRequest-IEs", + "RICsubscriptionDeleteRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_IEs_197, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_204[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_204[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_204[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_204[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_204 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs__value), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_204, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_204, + asn_MAP_value_from_canonical_204, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_204 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_204, + 2, /* Elements count */ + &asn_SPC_value_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_202, memb_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_203, memb_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_204, + select_RICsubscriptionDeleteResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_204, memb_value_constraint_201 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs), + offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { + "RICsubscriptionDeleteResponse-IEs", + "RICsubscriptionDeleteResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_IEs_201, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_208[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICcause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_208[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_208[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_208[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* ric */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_208 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs__value), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_208, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_208, + asn_MAP_value_from_canonical_208, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_208 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_208, + 4, /* Elements count */ + &asn_SPC_value_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_206, memb_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_207, memb_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_208, + select_RICsubscriptionDeleteFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_208, memb_value_constraint_205 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs), + offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { + "RICsubscriptionDeleteFailure-IEs", + "RICsubscriptionDeleteFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_IEs_205, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICindicationSN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICindicationType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_212[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; +static const unsigned asn_MAP_value_from_canonical_212[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_212 = { + sizeof(struct RICindication_IEs__value), + offsetof(struct RICindication_IEs__value, _asn_ctx), + offsetof(struct RICindication_IEs__value, present), + sizeof(((struct RICindication_IEs__value *)0)->present), + asn_MAP_value_tag2el_212, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_212, + asn_MAP_value_from_canonical_212, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_212 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_212, + 8, /* Elements count */ + &asn_SPC_value_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICindication_IEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_210, memb_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICindication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_211, memb_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_212, + select_RICindication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_212, memb_value_constraint_209 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_209 = { + sizeof(struct RICindication_IEs), + offsetof(struct RICindication_IEs, _asn_ctx), + asn_MAP_RICindication_IEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { + "RICindication-IEs", + "RICindication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_IEs_tags_209, + sizeof(asn_DEF_RICindication_IEs_tags_209) + /sizeof(asn_DEF_RICindication_IEs_tags_209[0]), /* 1 */ + asn_DEF_RICindication_IEs_tags_209, /* Same as above */ + sizeof(asn_DEF_RICindication_IEs_tags_209) + /sizeof(asn_DEF_RICindication_IEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_IEs_209, + 3, /* Elements count */ + &asn_SPC_RICindication_IEs_specs_209 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_216[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolAckRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAckRequest" + }, +}; +static const unsigned asn_MAP_value_to_canonical_216[] = { 1, 2, 3, 4, 5, 0 }; +static const unsigned asn_MAP_value_from_canonical_216[] = { 5, 0, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_216[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_216 = { + sizeof(struct RICcontrolRequest_IEs__value), + offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), + offsetof(struct RICcontrolRequest_IEs__value, present), + sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_216, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_216, + asn_MAP_value_from_canonical_216, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_216 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_216, + 6, /* Elements count */ + &asn_SPC_value_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_214, memb_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_215, memb_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_216, + select_RICcontrolRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_216, memb_value_constraint_213 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_213 = { + sizeof(struct RICcontrolRequest_IEs), + offsetof(struct RICcontrolRequest_IEs, _asn_ctx), + asn_MAP_RICcontrolRequest_IEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { + "RICcontrolRequest-IEs", + "RICcontrolRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_IEs_tags_213, + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213[0]), /* 1 */ + asn_DEF_RICcontrolRequest_IEs_tags_213, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_IEs_213, + 3, /* Elements count */ + &asn_SPC_RICcontrolRequest_IEs_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_220[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolStatus" + }, +}; +static const unsigned asn_MAP_value_to_canonical_220[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_220[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_220[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RICcontrolStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_220 = { + sizeof(struct RICcontrolAcknowledge_IEs__value), + offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICcontrolAcknowledge_IEs__value, present), + sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_220, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_220, + asn_MAP_value_from_canonical_220, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_220 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_220, + 4, /* Elements count */ + &asn_SPC_value_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_218, memb_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_219, memb_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_220, + select_RICcontrolAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_220, memb_value_constraint_217 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_217 = { + sizeof(struct RICcontrolAcknowledge_IEs), + offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_IEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { + "RICcontrolAcknowledge-IEs", + "RICcontrolAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_IEs_tags_217, + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_IEs_tags_217, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_IEs_217, + 3, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_IEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcause" + }, +}; +static const unsigned asn_MAP_value_to_canonical_224[] = { 1, 2, 0, 3 }; +static const unsigned asn_MAP_value_from_canonical_224[] = { 2, 0, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_224[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* ric */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_224 = { + sizeof(struct RICcontrolFailure_IEs__value), + offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), + offsetof(struct RICcontrolFailure_IEs__value, present), + sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_224, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_224, + asn_MAP_value_from_canonical_224, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_224 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_224, + 4, /* Elements count */ + &asn_SPC_value_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_222, memb_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_223, memb_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_224, + select_RICcontrolFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_224, memb_value_constraint_221 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_221 = { + sizeof(struct RICcontrolFailure_IEs), + offsetof(struct RICcontrolFailure_IEs, _asn_ctx), + asn_MAP_RICcontrolFailure_IEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { + "RICcontrolFailure-IEs", + "RICcontrolFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_IEs_tags_221, + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221[0]), /* 1 */ + asn_DEF_RICcontrolFailure_IEs_tags_221, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_IEs_221, + 3, /* Elements count */ + &asn_SPC_RICcontrolFailure_IEs_specs_221 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_228[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_228[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_228 = { + sizeof(struct RICserviceUpdate_IEs__value), + offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdate_IEs__value, present), + sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_228, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_228 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_228, + 2, /* Elements count */ + &asn_SPC_value_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_226, memb_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_227, memb_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_228, + select_RICserviceUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_228, memb_value_constraint_225 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_225 = { + sizeof(struct RICserviceUpdate_IEs), + offsetof(struct RICserviceUpdate_IEs, _asn_ctx), + asn_MAP_RICserviceUpdate_IEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { + "RICserviceUpdate-IEs", + "RICserviceUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_IEs_tags_225, + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225[0]), /* 1 */ + asn_DEF_RICserviceUpdate_IEs_tags_225, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_IEs_225, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdate_IEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_232 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs__value), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), + sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_232, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_232 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_232, + 2, /* Elements count */ + &asn_SPC_value_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_230, memb_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_231, memb_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_232, + select_RICserviceUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_232, memb_value_constraint_229 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs), + offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { + "RICserviceUpdateAcknowledge-IEs", + "RICserviceUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_IEs_229, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_236[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_236[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsIDcause-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_236 = { + sizeof(struct RICserviceUpdateFailure_IEs__value), + offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateFailure_IEs__value, present), + sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_236, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_236, + asn_MAP_value_from_canonical_236, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_236 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_236, + 3, /* Elements count */ + &asn_SPC_value_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_234, memb_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_235, memb_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_236, + select_RICserviceUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_236, memb_value_constraint_233 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_233 = { + sizeof(struct RICserviceUpdateFailure_IEs), + offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_IEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { + "RICserviceUpdateFailure-IEs", + "RICserviceUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_IEs_tags_233, + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_IEs_tags_233, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_IEs_233, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_IEs_specs_233 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_240[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_240[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_240 = { + sizeof(struct RICserviceQuery_IEs__value), + offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), + offsetof(struct RICserviceQuery_IEs__value, present), + sizeof(((struct RICserviceQuery_IEs__value *)0)->present), + asn_MAP_value_tag2el_240, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_240 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_240, + 1, /* Elements count */ + &asn_SPC_value_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_238, memb_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceQuery_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_239, memb_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_240, + select_RICserviceQuery_IEs_value_type, + { 0, &asn_PER_memb_value_constr_240, memb_value_constraint_237 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_237 = { + sizeof(struct RICserviceQuery_IEs), + offsetof(struct RICserviceQuery_IEs, _asn_ctx), + asn_MAP_RICserviceQuery_IEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { + "RICserviceQuery-IEs", + "RICserviceQuery-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_IEs_tags_237, + sizeof(asn_DEF_RICserviceQuery_IEs_tags_237) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_237[0]), /* 1 */ + asn_DEF_RICserviceQuery_IEs_tags_237, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_IEs_tags_237) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_IEs_237, + 3, /* Elements count */ + &asn_SPC_RICserviceQuery_IEs_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_244[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_HistoryInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_HistoryInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-HistoryInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.MobilityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MobilityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_HistoryInformationFromTheUE), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_HistoryInformationFromTheUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-HistoryInformationFromTheUE" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtSeNB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSeNB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtSeNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtWT), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtWT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtWT" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.NRUESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRUESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtSgNB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSgNB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtSgNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.AerialUEsubscriptionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_AerialUEsubscriptionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AerialUEsubscriptionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Subscription_Based_UE_DifferentiationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Subscription-Based-UE-DifferentiationInfo" + }, +}; +static const unsigned asn_MAP_value_to_canonical_244[] = { 0, 15, 9, 10, 11, 7, 8, 20, 2, 3, 4, 5, 6, 12, 13, 14, 16, 17, 18, 19, 21, 1 }; +static const unsigned asn_MAP_value_from_canonical_244[] = { 0, 21, 8, 9, 10, 11, 12, 5, 6, 2, 3, 4, 13, 14, 15, 1, 16, 17, 18, 19, 7, 20 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_244[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 15, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 9, 0, 1 }, /* MobilityInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 10, -1, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 11, 0, 0 }, /* UE-HistoryInformationFromTheUE */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 2 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 8, -1, 1 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 20, -2, 0 }, /* AerialUEsubscriptionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 12 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 11 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 10 }, /* UE-ContextInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 9 }, /* UE-HistoryInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -4, 8 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -5, 7 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -6, 6 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -7, 5 }, /* UE-ContextReferenceAtSeNB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -8, 4 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -9, 3 }, /* UE-ContextReferenceAtWT */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 18, -10, 2 }, /* NRUESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -11, 1 }, /* UE-ContextReferenceAtSgNB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 21, -12, 0 }, /* Subscription-Based-UE-DifferentiationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_244 = { + sizeof(struct HandoverRequest_IEs__value), + offsetof(struct HandoverRequest_IEs__value, _asn_ctx), + offsetof(struct HandoverRequest_IEs__value, present), + sizeof(((struct HandoverRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_244, + 25, /* Count of tags in the map */ + asn_MAP_value_to_canonical_244, + asn_MAP_value_from_canonical_244, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_244 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_244, + 22, /* Elements count */ + &asn_SPC_value_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRequest_IEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_242, memb_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_243, memb_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_244, + select_HandoverRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_244, memb_value_constraint_241 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequest_IEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequest_IEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_IEs_specs_241 = { + sizeof(struct HandoverRequest_IEs), + offsetof(struct HandoverRequest_IEs, _asn_ctx), + asn_MAP_HandoverRequest_IEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequest_IEs = { + "HandoverRequest-IEs", + "HandoverRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequest_IEs_tags_241, + sizeof(asn_DEF_HandoverRequest_IEs_tags_241) + /sizeof(asn_DEF_HandoverRequest_IEs_tags_241[0]), /* 1 */ + asn_DEF_HandoverRequest_IEs_tags_241, /* Same as above */ + sizeof(asn_DEF_HandoverRequest_IEs_tags_241) + /sizeof(asn_DEF_HandoverRequest_IEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequest_IEs_241, + 3, /* Elements count */ + &asn_SPC_HandoverRequest_IEs_specs_241 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_248[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.TargeteNBtoSource_eNBTransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TargeteNBtoSource_eNBTransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TargeteNBtoSource-eNBTransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_248[] = { 0, 6, 3, 5, 1, 2, 4 }; +static const unsigned asn_MAP_value_from_canonical_248[] = { 0, 4, 5, 2, 6, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_248[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* TargeteNBtoSource-eNBTransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E-RABs-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_248 = { + sizeof(struct HandoverRequestAcknowledge_IEs__value), + offsetof(struct HandoverRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct HandoverRequestAcknowledge_IEs__value, present), + sizeof(((struct HandoverRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_248, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_248, + asn_MAP_value_from_canonical_248, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_248 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_248, + 7, /* Elements count */ + &asn_SPC_value_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_IEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_246, memb_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_247, memb_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_248, + select_HandoverRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_248, memb_value_constraint_245 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequestAcknowledge_IEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_IEs_specs_245 = { + sizeof(struct HandoverRequestAcknowledge_IEs), + offsetof(struct HandoverRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_HandoverRequestAcknowledge_IEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge_IEs = { + "HandoverRequestAcknowledge-IEs", + "HandoverRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequestAcknowledge_IEs_tags_245, + sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245) + /sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[0]), /* 1 */ + asn_DEF_HandoverRequestAcknowledge_IEs_tags_245, /* Same as above */ + sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245) + /sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequestAcknowledge_IEs_245, + 3, /* Elements count */ + &asn_SPC_HandoverRequestAcknowledge_IEs_specs_245 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_252[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_252[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_252[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_252[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_252 = { + sizeof(struct HandoverPreparationFailure_IEs__value), + offsetof(struct HandoverPreparationFailure_IEs__value, _asn_ctx), + offsetof(struct HandoverPreparationFailure_IEs__value, present), + sizeof(((struct HandoverPreparationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_252, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_252, + asn_MAP_value_from_canonical_252, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_252 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_252, + 4, /* Elements count */ + &asn_SPC_value_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_IEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_250, memb_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverPreparationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_251, memb_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_252, + select_HandoverPreparationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_252, memb_value_constraint_249 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverPreparationFailure_IEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationFailure_IEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_IEs_specs_249 = { + sizeof(struct HandoverPreparationFailure_IEs), + offsetof(struct HandoverPreparationFailure_IEs, _asn_ctx), + asn_MAP_HandoverPreparationFailure_IEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure_IEs = { + "HandoverPreparationFailure-IEs", + "HandoverPreparationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverPreparationFailure_IEs_tags_249, + sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249) + /sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249[0]), /* 1 */ + asn_DEF_HandoverPreparationFailure_IEs_tags_249, /* Same as above */ + sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249) + /sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverPreparationFailure_IEs_249, + 3, /* Elements count */ + &asn_SPC_HandoverPreparationFailure_IEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.HandoverReportType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_HandoverReportType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverReportType" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.TargetCellInUTRAN), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TargetCellInUTRAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TargetCellInUTRAN" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.MobilityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MobilityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.UE_RLF_Report_Container), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.UE_RLF_Report_Container_for_extended_bands), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container_for_extended_bands, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container-for-extended-bands" + }, +}; +static const unsigned asn_MAP_value_to_canonical_256[] = { 4, 5, 3, 6, 7, 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_256[] = { 5, 7, 6, 2, 0, 1, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 4, 0, 1 }, /* CRNTI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, -1, 0 }, /* MobilityInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 2 }, /* TargetCellInUTRAN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* UE-RLF-Report-Container */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* UE-RLF-Report-Container-for-extended-bands */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* HandoverReportType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* ECGI */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_256 = { + sizeof(struct HandoverReport_IEs__value), + offsetof(struct HandoverReport_IEs__value, _asn_ctx), + offsetof(struct HandoverReport_IEs__value, present), + sizeof(((struct HandoverReport_IEs__value *)0)->present), + asn_MAP_value_tag2el_256, + 11, /* Count of tags in the map */ + asn_MAP_value_to_canonical_256, + asn_MAP_value_from_canonical_256, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_256 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_256, + 8, /* Elements count */ + &asn_SPC_value_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverReport_IEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_254, memb_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverReport_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_255, memb_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_256, + select_HandoverReport_IEs_value_type, + { 0, &asn_PER_memb_value_constr_256, memb_value_constraint_253 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverReport_IEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverReport_IEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_IEs_specs_253 = { + sizeof(struct HandoverReport_IEs), + offsetof(struct HandoverReport_IEs, _asn_ctx), + asn_MAP_HandoverReport_IEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReport_IEs = { + "HandoverReport-IEs", + "HandoverReport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverReport_IEs_tags_253, + sizeof(asn_DEF_HandoverReport_IEs_tags_253) + /sizeof(asn_DEF_HandoverReport_IEs_tags_253[0]), /* 1 */ + asn_DEF_HandoverReport_IEs_tags_253, /* Same as above */ + sizeof(asn_DEF_HandoverReport_IEs_tags_253) + /sizeof(asn_DEF_HandoverReport_IEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverReport_IEs_253, + 3, /* Elements count */ + &asn_SPC_HandoverReport_IEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.E_RABs_SubjectToStatusTransfer_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToStatusTransfer-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_260[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_260[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* E-RABs-SubjectToStatusTransfer-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_260 = { + sizeof(struct SNStatusTransfer_IEs__value), + offsetof(struct SNStatusTransfer_IEs__value, _asn_ctx), + offsetof(struct SNStatusTransfer_IEs__value, present), + sizeof(((struct SNStatusTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_260, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_260, + asn_MAP_value_from_canonical_260, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_260 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_260, + 4, /* Elements count */ + &asn_SPC_value_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SNStatusTransfer_IEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_258, memb_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SNStatusTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_259, memb_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_260, + select_SNStatusTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_260, memb_value_constraint_257 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SNStatusTransfer_IEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SNStatusTransfer_IEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_IEs_specs_257 = { + sizeof(struct SNStatusTransfer_IEs), + offsetof(struct SNStatusTransfer_IEs, _asn_ctx), + asn_MAP_SNStatusTransfer_IEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer_IEs = { + "SNStatusTransfer-IEs", + "SNStatusTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SNStatusTransfer_IEs_tags_257, + sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257) + /sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257[0]), /* 1 */ + asn_DEF_SNStatusTransfer_IEs_tags_257, /* Same as above */ + sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257) + /sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SNStatusTransfer_IEs_257, + 3, /* Elements count */ + &asn_SPC_SNStatusTransfer_IEs_specs_257 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_264[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.SIPTOBearerDeactivationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SIPTOBearerDeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SIPTOBearerDeactivationIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_264[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_264[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_264[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 } /* SIPTOBearerDeactivationIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_264 = { + sizeof(struct UEContextRelease_IEs__value), + offsetof(struct UEContextRelease_IEs__value, _asn_ctx), + offsetof(struct UEContextRelease_IEs__value, present), + sizeof(((struct UEContextRelease_IEs__value *)0)->present), + asn_MAP_value_tag2el_264, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_264, + asn_MAP_value_from_canonical_264, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_264 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_264, + 4, /* Elements count */ + &asn_SPC_value_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEContextRelease_IEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_262, memb_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UEContextRelease_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_263, memb_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_264, + select_UEContextRelease_IEs_value_type, + { 0, &asn_PER_memb_value_constr_264, memb_value_constraint_261 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEContextRelease_IEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEContextRelease_IEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_IEs_specs_261 = { + sizeof(struct UEContextRelease_IEs), + offsetof(struct UEContextRelease_IEs, _asn_ctx), + asn_MAP_UEContextRelease_IEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEContextRelease_IEs = { + "UEContextRelease-IEs", + "UEContextRelease-IEs", + &asn_OP_SEQUENCE, + asn_DEF_UEContextRelease_IEs_tags_261, + sizeof(asn_DEF_UEContextRelease_IEs_tags_261) + /sizeof(asn_DEF_UEContextRelease_IEs_tags_261[0]), /* 1 */ + asn_DEF_UEContextRelease_IEs_tags_261, /* Same as above */ + sizeof(asn_DEF_UEContextRelease_IEs_tags_261) + /sizeof(asn_DEF_UEContextRelease_IEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEContextRelease_IEs_261, + 3, /* Elements count */ + &asn_SPC_UEContextRelease_IEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_268[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_268[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_268 = { + sizeof(struct HandoverCancel_IEs__value), + offsetof(struct HandoverCancel_IEs__value, _asn_ctx), + offsetof(struct HandoverCancel_IEs__value, present), + sizeof(((struct HandoverCancel_IEs__value *)0)->present), + asn_MAP_value_tag2el_268, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_268, + asn_MAP_value_from_canonical_268, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_268 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_268, + 3, /* Elements count */ + &asn_SPC_value_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverCancel_IEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_266, memb_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverCancel_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_267, memb_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_268, + select_HandoverCancel_IEs_value_type, + { 0, &asn_PER_memb_value_constr_268, memb_value_constraint_265 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverCancel_IEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverCancel_IEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_IEs_specs_265 = { + sizeof(struct HandoverCancel_IEs), + offsetof(struct HandoverCancel_IEs, _asn_ctx), + asn_MAP_HandoverCancel_IEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverCancel_IEs = { + "HandoverCancel-IEs", + "HandoverCancel-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverCancel_IEs_tags_265, + sizeof(asn_DEF_HandoverCancel_IEs_tags_265) + /sizeof(asn_DEF_HandoverCancel_IEs_tags_265[0]), /* 1 */ + asn_DEF_HandoverCancel_IEs_tags_265, /* Same as above */ + sizeof(asn_DEF_HandoverCancel_IEs_tags_265) + /sizeof(asn_DEF_HandoverCancel_IEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverCancel_IEs_265, + 3, /* Elements count */ + &asn_SPC_HandoverCancel_IEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_272[] = { 0, 3, 4, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_272[] = { 0, 4, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_272 = { + sizeof(struct ErrorIndication_IEs__value), + offsetof(struct ErrorIndication_IEs__value, _asn_ctx), + offsetof(struct ErrorIndication_IEs__value, present), + sizeof(((struct ErrorIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_272, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_272, + asn_MAP_value_from_canonical_272, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_272 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_272, + 5, /* Elements count */ + &asn_SPC_value_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_270, memb_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ErrorIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_271, memb_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_272, + select_ErrorIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_272, memb_value_constraint_269 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_269 = { + sizeof(struct ErrorIndication_IEs), + offsetof(struct ErrorIndication_IEs, _asn_ctx), + asn_MAP_ErrorIndication_IEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { + "ErrorIndication-IEs", + "ErrorIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_IEs_tags_269, + sizeof(asn_DEF_ErrorIndication_IEs_tags_269) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_269[0]), /* 1 */ + asn_DEF_ErrorIndication_IEs_tags_269, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_IEs_tags_269) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_IEs_269, + 3, /* Elements count */ + &asn_SPC_ErrorIndication_IEs_specs_269 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_276[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_276[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_276 = { + sizeof(struct ResetRequest_IEs__value), + offsetof(struct ResetRequest_IEs__value, _asn_ctx), + offsetof(struct ResetRequest_IEs__value, present), + sizeof(((struct ResetRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_276, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_276 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_276, + 1, /* Elements count */ + &asn_SPC_value_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetRequest_IEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_274, memb_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_275, memb_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_276, + select_ResetRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_276, memb_value_constraint_273 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_IEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_IEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_IEs_specs_273 = { + sizeof(struct ResetRequest_IEs), + offsetof(struct ResetRequest_IEs, _asn_ctx), + asn_MAP_ResetRequest_IEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest_IEs = { + "ResetRequest-IEs", + "ResetRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_IEs_tags_273, + sizeof(asn_DEF_ResetRequest_IEs_tags_273) + /sizeof(asn_DEF_ResetRequest_IEs_tags_273[0]), /* 1 */ + asn_DEF_ResetRequest_IEs_tags_273, /* Same as above */ + sizeof(asn_DEF_ResetRequest_IEs_tags_273) + /sizeof(asn_DEF_ResetRequest_IEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_IEs_273, + 3, /* Elements count */ + &asn_SPC_ResetRequest_IEs_specs_273 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_280[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_280[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_280 = { + sizeof(struct ResetResponse_IEs__value), + offsetof(struct ResetResponse_IEs__value, _asn_ctx), + offsetof(struct ResetResponse_IEs__value, present), + sizeof(((struct ResetResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_280, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_280 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_280, + 1, /* Elements count */ + &asn_SPC_value_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetResponse_IEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_278, memb_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_279, memb_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_280, + select_ResetResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_280, memb_value_constraint_277 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_IEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_IEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_IEs_specs_277 = { + sizeof(struct ResetResponse_IEs), + offsetof(struct ResetResponse_IEs, _asn_ctx), + asn_MAP_ResetResponse_IEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse_IEs = { + "ResetResponse-IEs", + "ResetResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_IEs_tags_277, + sizeof(asn_DEF_ResetResponse_IEs_tags_277) + /sizeof(asn_DEF_ResetResponse_IEs_tags_277[0]), /* 1 */ + asn_DEF_ResetResponse_IEs_tags_277, /* Same as above */ + sizeof(asn_DEF_ResetResponse_IEs_tags_277) + /sizeof(asn_DEF_ResetResponse_IEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_IEs_277, + 3, /* Elements count */ + &asn_SPC_ResetResponse_IEs_specs_277 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_284[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_284[] = { 3, 0, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_284[] = { 1, 2, 3, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_284[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* GUGroupIDList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_284 = { + sizeof(struct X2SetupRequest_IEs__value), + offsetof(struct X2SetupRequest_IEs__value, _asn_ctx), + offsetof(struct X2SetupRequest_IEs__value, present), + sizeof(((struct X2SetupRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_284, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_284, + asn_MAP_value_from_canonical_284, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_284 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_284, + 4, /* Elements count */ + &asn_SPC_value_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupRequest_IEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_282, memb_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_283, memb_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_284, + select_X2SetupRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_284, memb_value_constraint_281 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupRequest_IEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupRequest_IEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_IEs_specs_281 = { + sizeof(struct X2SetupRequest_IEs), + offsetof(struct X2SetupRequest_IEs, _asn_ctx), + asn_MAP_X2SetupRequest_IEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupRequest_IEs = { + "X2SetupRequest-IEs", + "X2SetupRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupRequest_IEs_tags_281, + sizeof(asn_DEF_X2SetupRequest_IEs_tags_281) + /sizeof(asn_DEF_X2SetupRequest_IEs_tags_281[0]), /* 1 */ + asn_DEF_X2SetupRequest_IEs_tags_281, /* Same as above */ + sizeof(asn_DEF_X2SetupRequest_IEs_tags_281) + /sizeof(asn_DEF_X2SetupRequest_IEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupRequest_IEs_281, + 3, /* Elements count */ + &asn_SPC_X2SetupRequest_IEs_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_288[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_288[] = { 4, 0, 1, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_288[] = { 1, 2, 3, 4, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_288[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 2 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 1 }, /* GUGroupIDList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_288 = { + sizeof(struct X2SetupResponse_IEs__value), + offsetof(struct X2SetupResponse_IEs__value, _asn_ctx), + offsetof(struct X2SetupResponse_IEs__value, present), + sizeof(((struct X2SetupResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_288, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_288, + asn_MAP_value_from_canonical_288, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_288 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_288, + 5, /* Elements count */ + &asn_SPC_value_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupResponse_IEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_286, memb_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_287, memb_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_288, + select_X2SetupResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_288, memb_value_constraint_285 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupResponse_IEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupResponse_IEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_IEs_specs_285 = { + sizeof(struct X2SetupResponse_IEs), + offsetof(struct X2SetupResponse_IEs, _asn_ctx), + asn_MAP_X2SetupResponse_IEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupResponse_IEs = { + "X2SetupResponse-IEs", + "X2SetupResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupResponse_IEs_tags_285, + sizeof(asn_DEF_X2SetupResponse_IEs_tags_285) + /sizeof(asn_DEF_X2SetupResponse_IEs_tags_285[0]), /* 1 */ + asn_DEF_X2SetupResponse_IEs_tags_285, /* Same as above */ + sizeof(asn_DEF_X2SetupResponse_IEs_tags_285) + /sizeof(asn_DEF_X2SetupResponse_IEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupResponse_IEs_285, + 3, /* Elements count */ + &asn_SPC_X2SetupResponse_IEs_specs_285 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_292[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_292[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_292[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_292[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_292 = { + sizeof(struct X2SetupFailure_IEs__value), + offsetof(struct X2SetupFailure_IEs__value, _asn_ctx), + offsetof(struct X2SetupFailure_IEs__value, present), + sizeof(((struct X2SetupFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_292, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_292, + asn_MAP_value_from_canonical_292, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_292 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_292, + 3, /* Elements count */ + &asn_SPC_value_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupFailure_IEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_290, memb_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_291, memb_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_292, + select_X2SetupFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_292, memb_value_constraint_289 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupFailure_IEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupFailure_IEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_IEs_specs_289 = { + sizeof(struct X2SetupFailure_IEs), + offsetof(struct X2SetupFailure_IEs, _asn_ctx), + asn_MAP_X2SetupFailure_IEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupFailure_IEs = { + "X2SetupFailure-IEs", + "X2SetupFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupFailure_IEs_tags_289, + sizeof(asn_DEF_X2SetupFailure_IEs_tags_289) + /sizeof(asn_DEF_X2SetupFailure_IEs_tags_289[0]), /* 1 */ + asn_DEF_X2SetupFailure_IEs_tags_289, /* Same as above */ + sizeof(asn_DEF_X2SetupFailure_IEs_tags_289) + /sizeof(asn_DEF_X2SetupFailure_IEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupFailure_IEs_289, + 3, /* Elements count */ + &asn_SPC_X2SetupFailure_IEs_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_296[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs__value, choice.CellInformation_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellInformation-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_296[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellInformation-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_296 = { + sizeof(struct LoadInformation_IEs__value), + offsetof(struct LoadInformation_IEs__value, _asn_ctx), + offsetof(struct LoadInformation_IEs__value, present), + sizeof(((struct LoadInformation_IEs__value *)0)->present), + asn_MAP_value_tag2el_296, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_296 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_296, + 1, /* Elements count */ + &asn_SPC_value_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LoadInformation_IEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_294, memb_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_LoadInformation_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_295, memb_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_296, + select_LoadInformation_IEs_value_type, + { 0, &asn_PER_memb_value_constr_296, memb_value_constraint_293 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_LoadInformation_IEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LoadInformation_IEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_IEs_specs_293 = { + sizeof(struct LoadInformation_IEs), + offsetof(struct LoadInformation_IEs, _asn_ctx), + asn_MAP_LoadInformation_IEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LoadInformation_IEs = { + "LoadInformation-IEs", + "LoadInformation-IEs", + &asn_OP_SEQUENCE, + asn_DEF_LoadInformation_IEs_tags_293, + sizeof(asn_DEF_LoadInformation_IEs_tags_293) + /sizeof(asn_DEF_LoadInformation_IEs_tags_293[0]), /* 1 */ + asn_DEF_LoadInformation_IEs_tags_293, /* Same as above */ + sizeof(asn_DEF_LoadInformation_IEs_tags_293) + /sizeof(asn_DEF_LoadInformation_IEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LoadInformation_IEs_293, + 3, /* Elements count */ + &asn_SPC_LoadInformation_IEs_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_300[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.ServedCellsToModify), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCellsToModify" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.Old_ECGIs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Old_ECGIs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Old-ECGIs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.CoverageModificationList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoverageModificationList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CoverageModificationList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_300[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* ServedCellsToModify */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* Old-ECGIs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* GUGroupIDList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* CoverageModificationList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_300 = { + sizeof(struct ENBConfigurationUpdate_IEs__value), + offsetof(struct ENBConfigurationUpdate_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdate_IEs__value, present), + sizeof(((struct ENBConfigurationUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_300, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_300 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_300, + 5, /* Elements count */ + &asn_SPC_value_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_IEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_298, memb_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_299, memb_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_300, + select_ENBConfigurationUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_300, memb_value_constraint_297 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdate_IEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdate_IEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_IEs_specs_297 = { + sizeof(struct ENBConfigurationUpdate_IEs), + offsetof(struct ENBConfigurationUpdate_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdate_IEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate_IEs = { + "ENBConfigurationUpdate-IEs", + "ENBConfigurationUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdate_IEs_tags_297, + sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297) + /sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdate_IEs_tags_297, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297) + /sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdate_IEs_297, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdate_IEs_specs_297 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_304[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_304[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_304 = { + sizeof(struct ENBConfigurationUpdateAcknowledge_IEs__value), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, present), + sizeof(((struct ENBConfigurationUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_304, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_304 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_304, + 1, /* Elements count */ + &asn_SPC_value_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_302, memb_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_303, memb_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_304, + select_ENBConfigurationUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_304, memb_value_constraint_301 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateAcknowledge_IEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301 = { + sizeof(struct ENBConfigurationUpdateAcknowledge_IEs), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdateAcknowledge_IEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs = { + "ENBConfigurationUpdateAcknowledge-IEs", + "ENBConfigurationUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301, + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_308[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_308[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_308[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_308[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_308 = { + sizeof(struct ENBConfigurationUpdateFailure_IEs__value), + offsetof(struct ENBConfigurationUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdateFailure_IEs__value, present), + sizeof(((struct ENBConfigurationUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_308, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_308, + asn_MAP_value_from_canonical_308, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_308 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_308, + 3, /* Elements count */ + &asn_SPC_value_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_IEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_306, memb_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_307, memb_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_308, + select_ENBConfigurationUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_308, memb_value_constraint_305 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateFailure_IEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305 = { + sizeof(struct ENBConfigurationUpdateFailure_IEs), + offsetof(struct ENBConfigurationUpdateFailure_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdateFailure_IEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure_IEs = { + "ENBConfigurationUpdateFailure-IEs", + "ENBConfigurationUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305, + sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateFailure_IEs_305, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_312[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.Registration_Request), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Registration_Request, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Registration-Request" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportCharacteristics), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReportCharacteristics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportCharacteristics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.CellToReport_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellToReport-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicity), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.PartialSuccessIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PartialSuccessIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PartialSuccessIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicityRSRPMR), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicityRSRPMR, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicityRSRPMR" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicityCSIR), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicityCSIR, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicityCSIR" + }, +}; +static const unsigned asn_MAP_value_to_canonical_312[] = { 0, 2, 1, 4, 5, 6, 7, 3 }; +static const unsigned asn_MAP_value_from_canonical_312[] = { 0, 2, 1, 7, 3, 4, 5, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_312[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* ReportCharacteristics */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 4 }, /* Registration-Request */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, -1, 3 }, /* ReportingPeriodicity */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -2, 2 }, /* PartialSuccessIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -3, 1 }, /* ReportingPeriodicityRSRPMR */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -4, 0 }, /* ReportingPeriodicityCSIR */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* CellToReport-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_312 = { + sizeof(struct ResourceStatusRequest_IEs__value), + offsetof(struct ResourceStatusRequest_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusRequest_IEs__value, present), + sizeof(((struct ResourceStatusRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_312, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_312, + asn_MAP_value_from_canonical_312, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_312 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_312, + 8, /* Elements count */ + &asn_SPC_value_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusRequest_IEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_310, memb_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_311, memb_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_312, + select_ResourceStatusRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_312, memb_value_constraint_309 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusRequest_IEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusRequest_IEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_IEs_specs_309 = { + sizeof(struct ResourceStatusRequest_IEs), + offsetof(struct ResourceStatusRequest_IEs, _asn_ctx), + asn_MAP_ResourceStatusRequest_IEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest_IEs = { + "ResourceStatusRequest-IEs", + "ResourceStatusRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusRequest_IEs_tags_309, + sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309) + /sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309[0]), /* 1 */ + asn_DEF_ResourceStatusRequest_IEs_tags_309, /* Same as above */ + sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309) + /sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusRequest_IEs_309, + 3, /* Elements count */ + &asn_SPC_ResourceStatusRequest_IEs_specs_309 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_316[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.MeasurementInitiationResult_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementInitiationResult-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_316[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* MeasurementInitiationResult-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_316 = { + sizeof(struct ResourceStatusResponse_IEs__value), + offsetof(struct ResourceStatusResponse_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusResponse_IEs__value, present), + sizeof(((struct ResourceStatusResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_316, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_316 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_316, + 3, /* Elements count */ + &asn_SPC_value_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusResponse_IEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_314, memb_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_315, memb_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_316, + select_ResourceStatusResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_316, memb_value_constraint_313 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusResponse_IEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusResponse_IEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_IEs_specs_313 = { + sizeof(struct ResourceStatusResponse_IEs), + offsetof(struct ResourceStatusResponse_IEs, _asn_ctx), + asn_MAP_ResourceStatusResponse_IEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse_IEs = { + "ResourceStatusResponse-IEs", + "ResourceStatusResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusResponse_IEs_tags_313, + sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313) + /sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313[0]), /* 1 */ + asn_DEF_ResourceStatusResponse_IEs_tags_313, /* Same as above */ + sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313) + /sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusResponse_IEs_313, + 3, /* Elements count */ + &asn_SPC_ResourceStatusResponse_IEs_specs_313 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_320[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.CompleteFailureCauseInformation_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompleteFailureCauseInformation-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_320[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_320[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_320[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CompleteFailureCauseInformation-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_320 = { + sizeof(struct ResourceStatusFailure_IEs__value), + offsetof(struct ResourceStatusFailure_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusFailure_IEs__value, present), + sizeof(((struct ResourceStatusFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_320, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_320, + asn_MAP_value_from_canonical_320, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_320 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_320, + 4, /* Elements count */ + &asn_SPC_value_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusFailure_IEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_318, memb_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_319, memb_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_320, + select_ResourceStatusFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_320, memb_value_constraint_317 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusFailure_IEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusFailure_IEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_IEs_specs_317 = { + sizeof(struct ResourceStatusFailure_IEs), + offsetof(struct ResourceStatusFailure_IEs, _asn_ctx), + asn_MAP_ResourceStatusFailure_IEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure_IEs = { + "ResourceStatusFailure-IEs", + "ResourceStatusFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusFailure_IEs_tags_317, + sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317) + /sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317[0]), /* 1 */ + asn_DEF_ResourceStatusFailure_IEs_tags_317, /* Same as above */ + sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317) + /sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusFailure_IEs_317, + 3, /* Elements count */ + &asn_SPC_ResourceStatusFailure_IEs_specs_317 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_324[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs__value, choice.CellMeasurementResult_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellMeasurementResult-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_324[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CellMeasurementResult-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_324 = { + sizeof(struct ResourceStatusUpdate_IEs__value), + offsetof(struct ResourceStatusUpdate_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusUpdate_IEs__value, present), + sizeof(((struct ResourceStatusUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_324, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_324 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_324, + 2, /* Elements count */ + &asn_SPC_value_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_IEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_322, memb_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_323, memb_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_324, + select_ResourceStatusUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_324, memb_value_constraint_321 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusUpdate_IEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusUpdate_IEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_IEs_specs_321 = { + sizeof(struct ResourceStatusUpdate_IEs), + offsetof(struct ResourceStatusUpdate_IEs, _asn_ctx), + asn_MAP_ResourceStatusUpdate_IEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate_IEs = { + "ResourceStatusUpdate-IEs", + "ResourceStatusUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusUpdate_IEs_tags_321, + sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321) + /sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321[0]), /* 1 */ + asn_DEF_ResourceStatusUpdate_IEs_tags_321, /* Same as above */ + sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321) + /sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusUpdate_IEs_321, + 3, /* Elements count */ + &asn_SPC_ResourceStatusUpdate_IEs_specs_321 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_328[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.MobilityParametersInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityParametersInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityParametersInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_328[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 }, /* MobilityParametersInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_328 = { + sizeof(struct MobilityChangeRequest_IEs__value), + offsetof(struct MobilityChangeRequest_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeRequest_IEs__value, present), + sizeof(((struct MobilityChangeRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_328, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_328 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_328, + 3, /* Elements count */ + &asn_SPC_value_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeRequest_IEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_326, memb_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_327, memb_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_328, + select_MobilityChangeRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_328, memb_value_constraint_325 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeRequest_IEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeRequest_IEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_IEs_specs_325 = { + sizeof(struct MobilityChangeRequest_IEs), + offsetof(struct MobilityChangeRequest_IEs, _asn_ctx), + asn_MAP_MobilityChangeRequest_IEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest_IEs = { + "MobilityChangeRequest-IEs", + "MobilityChangeRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeRequest_IEs_tags_325, + sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325) + /sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325[0]), /* 1 */ + asn_DEF_MobilityChangeRequest_IEs_tags_325, /* Same as above */ + sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325) + /sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeRequest_IEs_325, + 3, /* Elements count */ + &asn_SPC_MobilityChangeRequest_IEs_specs_325 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_332[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_332[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_332 = { + sizeof(struct MobilityChangeAcknowledge_IEs__value), + offsetof(struct MobilityChangeAcknowledge_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeAcknowledge_IEs__value, present), + sizeof(((struct MobilityChangeAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_332, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_332 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_332, + 2, /* Elements count */ + &asn_SPC_value_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_IEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_330, memb_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_331, memb_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_332, + select_MobilityChangeAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_332, memb_value_constraint_329 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeAcknowledge_IEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_IEs_specs_329 = { + sizeof(struct MobilityChangeAcknowledge_IEs), + offsetof(struct MobilityChangeAcknowledge_IEs, _asn_ctx), + asn_MAP_MobilityChangeAcknowledge_IEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge_IEs = { + "MobilityChangeAcknowledge-IEs", + "MobilityChangeAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeAcknowledge_IEs_tags_329, + sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329) + /sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[0]), /* 1 */ + asn_DEF_MobilityChangeAcknowledge_IEs_tags_329, /* Same as above */ + sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329) + /sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeAcknowledge_IEs_329, + 3, /* Elements count */ + &asn_SPC_MobilityChangeAcknowledge_IEs_specs_329 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_336[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.MobilityParametersModificationRange), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityParametersModificationRange, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityParametersModificationRange" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_336[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_336[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_336[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* MobilityParametersModificationRange */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_336 = { + sizeof(struct MobilityChangeFailure_IEs__value), + offsetof(struct MobilityChangeFailure_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeFailure_IEs__value, present), + sizeof(((struct MobilityChangeFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_336, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_336, + asn_MAP_value_from_canonical_336, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_336 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_336, + 4, /* Elements count */ + &asn_SPC_value_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeFailure_IEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_334, memb_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_335, memb_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_336, + select_MobilityChangeFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_336, memb_value_constraint_333 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeFailure_IEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeFailure_IEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_IEs_specs_333 = { + sizeof(struct MobilityChangeFailure_IEs), + offsetof(struct MobilityChangeFailure_IEs, _asn_ctx), + asn_MAP_MobilityChangeFailure_IEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure_IEs = { + "MobilityChangeFailure-IEs", + "MobilityChangeFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeFailure_IEs_tags_333, + sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333) + /sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333[0]), /* 1 */ + asn_DEF_MobilityChangeFailure_IEs_tags_333, /* Same as above */ + sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333) + /sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeFailure_IEs_333, + 3, /* Elements count */ + &asn_SPC_MobilityChangeFailure_IEs_specs_333 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_340[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.PCI), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.ShortMAC_I), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ShortMAC_I, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ShortMAC-I" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.UE_RLF_Report_Container), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.RRCConnSetupIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRCConnSetupIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRCConnSetupIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.RRCConnReestabIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRCConnReestabIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRCConnReestabIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.UE_RLF_Report_Container_for_extended_bands), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container_for_extended_bands, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container-for-extended-bands" + }, +}; +static const unsigned asn_MAP_value_to_canonical_340[] = { 0, 2, 3, 4, 7, 5, 6, 1 }; +static const unsigned asn_MAP_value_from_canonical_340[] = { 0, 7, 1, 2, 3, 5, 6, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_340[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* PCI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 1 }, /* CRNTI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, -1, 0 }, /* ShortMAC-I */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* UE-RLF-Report-Container */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* UE-RLF-Report-Container-for-extended-bands */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* RRCConnSetupIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 0 }, /* RRCConnReestabIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_340 = { + sizeof(struct RLFIndication_IEs__value), + offsetof(struct RLFIndication_IEs__value, _asn_ctx), + offsetof(struct RLFIndication_IEs__value, present), + sizeof(((struct RLFIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_340, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_340, + asn_MAP_value_from_canonical_340, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_340 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_340, + 8, /* Elements count */ + &asn_SPC_value_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RLFIndication_IEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_338, memb_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RLFIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_339, memb_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_340, + select_RLFIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_340, memb_value_constraint_337 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLFIndication_IEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLFIndication_IEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_IEs_specs_337 = { + sizeof(struct RLFIndication_IEs), + offsetof(struct RLFIndication_IEs, _asn_ctx), + asn_MAP_RLFIndication_IEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLFIndication_IEs = { + "RLFIndication-IEs", + "RLFIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RLFIndication_IEs_tags_337, + sizeof(asn_DEF_RLFIndication_IEs_tags_337) + /sizeof(asn_DEF_RLFIndication_IEs_tags_337[0]), /* 1 */ + asn_DEF_RLFIndication_IEs_tags_337, /* Same as above */ + sizeof(asn_DEF_RLFIndication_IEs_tags_337) + /sizeof(asn_DEF_RLFIndication_IEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLFIndication_IEs_337, + 3, /* Elements count */ + &asn_SPC_RLFIndication_IEs_specs_337 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_344[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs__value, choice.ServedCellsToActivate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCellsToActivate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_344[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedCellsToActivate */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_344 = { + sizeof(struct CellActivationRequest_IEs__value), + offsetof(struct CellActivationRequest_IEs__value, _asn_ctx), + offsetof(struct CellActivationRequest_IEs__value, present), + sizeof(((struct CellActivationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_344, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_344 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_344, + 1, /* Elements count */ + &asn_SPC_value_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationRequest_IEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_342, memb_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_343, memb_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_344, + select_CellActivationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_344, memb_value_constraint_341 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationRequest_IEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationRequest_IEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_IEs_specs_341 = { + sizeof(struct CellActivationRequest_IEs), + offsetof(struct CellActivationRequest_IEs, _asn_ctx), + asn_MAP_CellActivationRequest_IEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationRequest_IEs = { + "CellActivationRequest-IEs", + "CellActivationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationRequest_IEs_tags_341, + sizeof(asn_DEF_CellActivationRequest_IEs_tags_341) + /sizeof(asn_DEF_CellActivationRequest_IEs_tags_341[0]), /* 1 */ + asn_DEF_CellActivationRequest_IEs_tags_341, /* Same as above */ + sizeof(asn_DEF_CellActivationRequest_IEs_tags_341) + /sizeof(asn_DEF_CellActivationRequest_IEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationRequest_IEs_341, + 3, /* Elements count */ + &asn_SPC_CellActivationRequest_IEs_specs_341 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_348[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs__value, choice.ActivatedCellList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivatedCellList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_348[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ActivatedCellList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_348 = { + sizeof(struct CellActivationResponse_IEs__value), + offsetof(struct CellActivationResponse_IEs__value, _asn_ctx), + offsetof(struct CellActivationResponse_IEs__value, present), + sizeof(((struct CellActivationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_348, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_348 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_348, + 2, /* Elements count */ + &asn_SPC_value_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationResponse_IEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_346, memb_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_347, memb_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_348, + select_CellActivationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_348, memb_value_constraint_345 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationResponse_IEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationResponse_IEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_IEs_specs_345 = { + sizeof(struct CellActivationResponse_IEs), + offsetof(struct CellActivationResponse_IEs, _asn_ctx), + asn_MAP_CellActivationResponse_IEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationResponse_IEs = { + "CellActivationResponse-IEs", + "CellActivationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationResponse_IEs_tags_345, + sizeof(asn_DEF_CellActivationResponse_IEs_tags_345) + /sizeof(asn_DEF_CellActivationResponse_IEs_tags_345[0]), /* 1 */ + asn_DEF_CellActivationResponse_IEs_tags_345, /* Same as above */ + sizeof(asn_DEF_CellActivationResponse_IEs_tags_345) + /sizeof(asn_DEF_CellActivationResponse_IEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationResponse_IEs_345, + 3, /* Elements count */ + &asn_SPC_CellActivationResponse_IEs_specs_345 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_352[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_352[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_352[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_352[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_352 = { + sizeof(struct CellActivationFailure_IEs__value), + offsetof(struct CellActivationFailure_IEs__value, _asn_ctx), + offsetof(struct CellActivationFailure_IEs__value, present), + sizeof(((struct CellActivationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_352, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_352, + asn_MAP_value_from_canonical_352, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_352 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_352, + 2, /* Elements count */ + &asn_SPC_value_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationFailure_IEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_350, memb_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_351, memb_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_352, + select_CellActivationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_352, memb_value_constraint_349 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationFailure_IEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationFailure_IEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_IEs_specs_349 = { + sizeof(struct CellActivationFailure_IEs), + offsetof(struct CellActivationFailure_IEs, _asn_ctx), + asn_MAP_CellActivationFailure_IEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationFailure_IEs = { + "CellActivationFailure-IEs", + "CellActivationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationFailure_IEs_tags_349, + sizeof(asn_DEF_CellActivationFailure_IEs_tags_349) + /sizeof(asn_DEF_CellActivationFailure_IEs_tags_349[0]), /* 1 */ + asn_DEF_CellActivationFailure_IEs_tags_349, /* Same as above */ + sizeof(asn_DEF_CellActivationFailure_IEs_tags_349) + /sizeof(asn_DEF_CellActivationFailure_IEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationFailure_IEs_349, + 3, /* Elements count */ + &asn_SPC_CellActivationFailure_IEs_specs_349 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_356[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_356[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_356 = { + sizeof(struct X2Release_IEs__value), + offsetof(struct X2Release_IEs__value, _asn_ctx), + offsetof(struct X2Release_IEs__value, present), + sizeof(((struct X2Release_IEs__value *)0)->present), + asn_MAP_value_tag2el_356, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_356 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_356, + 1, /* Elements count */ + &asn_SPC_value_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2Release_IEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_354, memb_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2Release_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_355, memb_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_356, + select_X2Release_IEs_value_type, + { 0, &asn_PER_memb_value_constr_356, memb_value_constraint_353 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2Release_IEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2Release_IEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2Release_IEs_specs_353 = { + sizeof(struct X2Release_IEs), + offsetof(struct X2Release_IEs, _asn_ctx), + asn_MAP_X2Release_IEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2Release_IEs = { + "X2Release-IEs", + "X2Release-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2Release_IEs_tags_353, + sizeof(asn_DEF_X2Release_IEs_tags_353) + /sizeof(asn_DEF_X2Release_IEs_tags_353[0]), /* 1 */ + asn_DEF_X2Release_IEs_tags_353, /* Same as above */ + sizeof(asn_DEF_X2Release_IEs_tags_353) + /sizeof(asn_DEF_X2Release_IEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2Release_IEs_353, + 3, /* Elements count */ + &asn_SPC_X2Release_IEs_specs_353 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_360[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs__value, choice.RNL_Header), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RNL_Header, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RNL-Header" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs__value, choice.X2AP_Message), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_X2AP_Message, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2AP-Message" + }, +}; +static const unsigned asn_MAP_value_to_canonical_360[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_360[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_360[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* X2AP-Message */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RNL-Header */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_360 = { + sizeof(struct X2APMessageTransfer_IEs__value), + offsetof(struct X2APMessageTransfer_IEs__value, _asn_ctx), + offsetof(struct X2APMessageTransfer_IEs__value, present), + sizeof(((struct X2APMessageTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_360, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_360, + asn_MAP_value_from_canonical_360, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_360 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_360, + 2, /* Elements count */ + &asn_SPC_value_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2APMessageTransfer_IEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_358, memb_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2APMessageTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_359, memb_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_360, + select_X2APMessageTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_360, memb_value_constraint_357 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2APMessageTransfer_IEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2APMessageTransfer_IEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_IEs_specs_357 = { + sizeof(struct X2APMessageTransfer_IEs), + offsetof(struct X2APMessageTransfer_IEs, _asn_ctx), + asn_MAP_X2APMessageTransfer_IEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer_IEs = { + "X2APMessageTransfer-IEs", + "X2APMessageTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2APMessageTransfer_IEs_tags_357, + sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357) + /sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357[0]), /* 1 */ + asn_DEF_X2APMessageTransfer_IEs_tags_357, /* Same as above */ + sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357) + /sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2APMessageTransfer_IEs_357, + 3, /* Elements count */ + &asn_SPC_X2APMessageTransfer_IEs_specs_357 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_364[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.SeNBSecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_SeNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBSecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UEAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.E_RABs_ToBeAdded_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, +}; +static const unsigned asn_MAP_value_to_canonical_364[] = { 0, 8, 2, 4, 6, 7, 1, 3, 5, 9 }; +static const unsigned asn_MAP_value_from_canonical_364[] = { 0, 6, 2, 7, 3, 8, 4, 5, 1, 9 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_364[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* SeNBSecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* UEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 1 }, /* E-RABs-ToBeAdded-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -3, 0 } /* ExpectedUEBehaviour */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_364 = { + sizeof(struct SeNBAdditionRequest_IEs__value), + offsetof(struct SeNBAdditionRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequest_IEs__value, present), + sizeof(((struct SeNBAdditionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_364, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_364, + asn_MAP_value_from_canonical_364, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_364 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_364, + 10, /* Elements count */ + &asn_SPC_value_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_IEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_362, memb_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_363, memb_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_364, + select_SeNBAdditionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_364, memb_value_constraint_361 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequest_IEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequest_IEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_IEs_specs_361 = { + sizeof(struct SeNBAdditionRequest_IEs), + offsetof(struct SeNBAdditionRequest_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequest_IEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest_IEs = { + "SeNBAdditionRequest-IEs", + "SeNBAdditionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequest_IEs_tags_361, + sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361) + /sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361[0]), /* 1 */ + asn_DEF_SeNBAdditionRequest_IEs_tags_361, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361) + /sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequest_IEs_361, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequest_IEs_specs_361 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_368[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.TransportLayerAddress), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, +}; +static const unsigned asn_MAP_value_to_canonical_368[] = { 0, 6, 5, 3, 1, 2, 4, 7 }; +static const unsigned asn_MAP_value_from_canonical_368[] = { 0, 4, 5, 3, 6, 2, 1, 7 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_368[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, 0, 0 }, /* TransportLayerAddress */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* E-RABs-Admitted-ToBeAdded-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_368 = { + sizeof(struct SeNBAdditionRequestAcknowledge_IEs__value), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, present), + sizeof(((struct SeNBAdditionRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_368, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_368, + asn_MAP_value_from_canonical_368, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_368 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_368, + 8, /* Elements count */ + &asn_SPC_value_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_366, memb_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_367, memb_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_368, + select_SeNBAdditionRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_368, memb_value_constraint_365 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestAcknowledge_IEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365 = { + sizeof(struct SeNBAdditionRequestAcknowledge_IEs), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequestAcknowledge_IEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs = { + "SeNBAdditionRequestAcknowledge-IEs", + "SeNBAdditionRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365, + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_372[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_372[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_372[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_372[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_372 = { + sizeof(struct SeNBAdditionRequestReject_IEs__value), + offsetof(struct SeNBAdditionRequestReject_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequestReject_IEs__value, present), + sizeof(((struct SeNBAdditionRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_372, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_372, + asn_MAP_value_from_canonical_372, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_372 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_372, + 4, /* Elements count */ + &asn_SPC_value_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_IEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_370, memb_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_371, memb_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_372, + select_SeNBAdditionRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_372, memb_value_constraint_369 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestReject_IEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_IEs_specs_369 = { + sizeof(struct SeNBAdditionRequestReject_IEs), + offsetof(struct SeNBAdditionRequestReject_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequestReject_IEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject_IEs = { + "SeNBAdditionRequestReject-IEs", + "SeNBAdditionRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestReject_IEs_tags_369, + sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369) + /sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestReject_IEs_tags_369, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369) + /sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestReject_IEs_369, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequestReject_IEs_specs_369 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_376[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.ResponseInformationSeNBReconfComp), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResponseInformationSeNBReconfComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResponseInformationSeNBReconfComp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_376[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_376[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_376[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* success */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_376 = { + sizeof(struct SeNBReconfigurationComplete_IEs__value), + offsetof(struct SeNBReconfigurationComplete_IEs__value, _asn_ctx), + offsetof(struct SeNBReconfigurationComplete_IEs__value, present), + sizeof(((struct SeNBReconfigurationComplete_IEs__value *)0)->present), + asn_MAP_value_tag2el_376, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_376, + asn_MAP_value_from_canonical_376, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_376 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_376, + 3, /* Elements count */ + &asn_SPC_value_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_IEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_374, memb_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReconfigurationComplete_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_375, memb_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_376, + select_SeNBReconfigurationComplete_IEs_value_type, + { 0, &asn_PER_memb_value_constr_376, memb_value_constraint_373 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReconfigurationComplete_IEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_IEs_specs_373 = { + sizeof(struct SeNBReconfigurationComplete_IEs), + offsetof(struct SeNBReconfigurationComplete_IEs, _asn_ctx), + asn_MAP_SeNBReconfigurationComplete_IEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete_IEs = { + "SeNBReconfigurationComplete-IEs", + "SeNBReconfigurationComplete-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReconfigurationComplete_IEs_tags_373, + sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373) + /sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[0]), /* 1 */ + asn_DEF_SeNBReconfigurationComplete_IEs_tags_373, /* Same as above */ + sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373) + /sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReconfigurationComplete_IEs_373, + 3, /* Elements count */ + &asn_SPC_SeNBReconfigurationComplete_IEs_specs_373 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_380[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.SCGChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_ContextInformationSeNBModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSeNBModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformationSeNBModReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_380[] = { 0, 7, 3, 5, 2, 6, 4, 1 }; +static const unsigned asn_MAP_value_from_canonical_380[] = { 0, 7, 4, 2, 6, 3, 5, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_380[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 7, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, -1, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 1 }, /* SCGChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* UE-ContextInformationSeNBModReq */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_380 = { + sizeof(struct SeNBModificationRequest_IEs__value), + offsetof(struct SeNBModificationRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequest_IEs__value, present), + sizeof(((struct SeNBModificationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_380, + 11, /* Count of tags in the map */ + asn_MAP_value_to_canonical_380, + asn_MAP_value_from_canonical_380, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_380 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_380, + 8, /* Elements count */ + &asn_SPC_value_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequest_IEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_378, memb_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_379, memb_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_380, + select_SeNBModificationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_380, memb_value_constraint_377 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequest_IEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequest_IEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_IEs_specs_377 = { + sizeof(struct SeNBModificationRequest_IEs), + offsetof(struct SeNBModificationRequest_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequest_IEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest_IEs = { + "SeNBModificationRequest-IEs", + "SeNBModificationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequest_IEs_tags_377, + sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377) + /sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377[0]), /* 1 */ + asn_DEF_SeNBModificationRequest_IEs_tags_377, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377) + /sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequest_IEs_377, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequest_IEs_specs_377 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_384[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeModified_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_384[] = { 0, 7, 5, 1, 2, 3, 4, 6 }; +static const unsigned asn_MAP_value_from_canonical_384[] = { 0, 3, 4, 5, 6, 2, 7, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_384[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 7, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 4 }, /* E-RABs-Admitted-ToBeAdded-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 3 }, /* E-RABs-Admitted-ToBeModified-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 2 }, /* E-RABs-Admitted-ToBeReleased-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 1 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -4, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_384 = { + sizeof(struct SeNBModificationRequestAcknowledge_IEs__value), + offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, present), + sizeof(((struct SeNBModificationRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_384, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_384, + asn_MAP_value_from_canonical_384, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_384 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_384, + 8, /* Elements count */ + &asn_SPC_value_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_IEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_382, memb_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_383, memb_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_384, + select_SeNBModificationRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_384, memb_value_constraint_381 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestAcknowledge_IEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381 = { + sizeof(struct SeNBModificationRequestAcknowledge_IEs), + offsetof(struct SeNBModificationRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequestAcknowledge_IEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge_IEs = { + "SeNBModificationRequestAcknowledge-IEs", + "SeNBModificationRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381, + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[0]), /* 1 */ + asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestAcknowledge_IEs_381, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_388[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_388[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_388[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_388[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_388 = { + sizeof(struct SeNBModificationRequestReject_IEs__value), + offsetof(struct SeNBModificationRequestReject_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequestReject_IEs__value, present), + sizeof(((struct SeNBModificationRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_388, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_388, + asn_MAP_value_from_canonical_388, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_388 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_388, + 4, /* Elements count */ + &asn_SPC_value_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_IEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_386, memb_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_387, memb_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_388, + select_SeNBModificationRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_388, memb_value_constraint_385 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestReject_IEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestReject_IEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_IEs_specs_385 = { + sizeof(struct SeNBModificationRequestReject_IEs), + offsetof(struct SeNBModificationRequestReject_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequestReject_IEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject_IEs = { + "SeNBModificationRequestReject-IEs", + "SeNBModificationRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestReject_IEs_tags_385, + sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385) + /sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385[0]), /* 1 */ + asn_DEF_SeNBModificationRequestReject_IEs_tags_385, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385) + /sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestReject_IEs_385, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequestReject_IEs_specs_385 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_392[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.SCGChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.E_RABs_ToBeReleased_ModReqd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqd" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_392[] = { 0, 5, 4, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_392[] = { 0, 5, 3, 4, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_392[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* SCGChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* E-RABs-ToBeReleased-ModReqd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_392 = { + sizeof(struct SeNBModificationRequired_IEs__value), + offsetof(struct SeNBModificationRequired_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequired_IEs__value, present), + sizeof(((struct SeNBModificationRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_392, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_392, + asn_MAP_value_from_canonical_392, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_392 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_392, + 6, /* Elements count */ + &asn_SPC_value_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequired_IEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_390, memb_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_391, memb_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_392, + select_SeNBModificationRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_392, memb_value_constraint_389 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequired_IEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequired_IEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_IEs_specs_389 = { + sizeof(struct SeNBModificationRequired_IEs), + offsetof(struct SeNBModificationRequired_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequired_IEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired_IEs = { + "SeNBModificationRequired-IEs", + "SeNBModificationRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequired_IEs_tags_389, + sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389) + /sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389[0]), /* 1 */ + asn_DEF_SeNBModificationRequired_IEs_tags_389, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389) + /sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequired_IEs_389, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequired_IEs_specs_389 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_396[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_396[] = { 0, 3, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_396[] = { 0, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_396[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_396 = { + sizeof(struct SeNBModificationConfirm_IEs__value), + offsetof(struct SeNBModificationConfirm_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationConfirm_IEs__value, present), + sizeof(((struct SeNBModificationConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_396, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_396, + asn_MAP_value_from_canonical_396, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_396 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_396, + 4, /* Elements count */ + &asn_SPC_value_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_IEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_394, memb_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_395, memb_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_396, + select_SeNBModificationConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_396, memb_value_constraint_393 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationConfirm_IEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationConfirm_IEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_IEs_specs_393 = { + sizeof(struct SeNBModificationConfirm_IEs), + offsetof(struct SeNBModificationConfirm_IEs, _asn_ctx), + asn_MAP_SeNBModificationConfirm_IEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm_IEs = { + "SeNBModificationConfirm-IEs", + "SeNBModificationConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationConfirm_IEs_tags_393, + sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393) + /sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393[0]), /* 1 */ + asn_DEF_SeNBModificationConfirm_IEs_tags_393, /* Same as above */ + sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393) + /sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationConfirm_IEs_393, + 3, /* Elements count */ + &asn_SPC_SeNBModificationConfirm_IEs_specs_393 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_400[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_400[] = { 0, 4, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_400[] = { 0, 4, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_400[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_400 = { + sizeof(struct SeNBModificationRefuse_IEs__value), + offsetof(struct SeNBModificationRefuse_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRefuse_IEs__value, present), + sizeof(((struct SeNBModificationRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_400, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_400, + asn_MAP_value_from_canonical_400, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_400 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_400, + 5, /* Elements count */ + &asn_SPC_value_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_IEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_398, memb_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_399, memb_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_400, + select_SeNBModificationRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_400, memb_value_constraint_397 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRefuse_IEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRefuse_IEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_IEs_specs_397 = { + sizeof(struct SeNBModificationRefuse_IEs), + offsetof(struct SeNBModificationRefuse_IEs, _asn_ctx), + asn_MAP_SeNBModificationRefuse_IEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse_IEs = { + "SeNBModificationRefuse-IEs", + "SeNBModificationRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRefuse_IEs_tags_397, + sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397) + /sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397[0]), /* 1 */ + asn_DEF_SeNBModificationRefuse_IEs_tags_397, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397) + /sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRefuse_IEs_397, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRefuse_IEs_specs_397 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_404[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.E_RABs_ToBeReleased_List_RelReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_List_RelReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-List-RelReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.MakeBeforeBreakIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_MakeBeforeBreakIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MakeBeforeBreakIndicator" + }, +}; +static const unsigned asn_MAP_value_to_canonical_404[] = { 0, 4, 3, 5, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_404[] = { 0, 5, 4, 2, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_404[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -1, 0 }, /* MakeBeforeBreakIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* E-RABs-ToBeReleased-List-RelReq */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_404 = { + sizeof(struct SeNBReleaseRequest_IEs__value), + offsetof(struct SeNBReleaseRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseRequest_IEs__value, present), + sizeof(((struct SeNBReleaseRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_404, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_404, + asn_MAP_value_from_canonical_404, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_404 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_404, + 6, /* Elements count */ + &asn_SPC_value_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_IEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_402, memb_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_403, memb_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_404, + select_SeNBReleaseRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_404, memb_value_constraint_401 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequest_IEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequest_IEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_IEs_specs_401 = { + sizeof(struct SeNBReleaseRequest_IEs), + offsetof(struct SeNBReleaseRequest_IEs, _asn_ctx), + asn_MAP_SeNBReleaseRequest_IEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest_IEs = { + "SeNBReleaseRequest-IEs", + "SeNBReleaseRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequest_IEs_tags_401, + sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401) + /sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401[0]), /* 1 */ + asn_DEF_SeNBReleaseRequest_IEs_tags_401, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401) + /sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequest_IEs_401, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseRequest_IEs_specs_401 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_408[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_408[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_408[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_408[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_408 = { + sizeof(struct SeNBReleaseRequired_IEs__value), + offsetof(struct SeNBReleaseRequired_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseRequired_IEs__value, present), + sizeof(((struct SeNBReleaseRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_408, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_408, + asn_MAP_value_from_canonical_408, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_408 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_408, + 3, /* Elements count */ + &asn_SPC_value_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_IEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_406, memb_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_407, memb_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_408, + select_SeNBReleaseRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_408, memb_value_constraint_405 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequired_IEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequired_IEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_IEs_specs_405 = { + sizeof(struct SeNBReleaseRequired_IEs), + offsetof(struct SeNBReleaseRequired_IEs, _asn_ctx), + asn_MAP_SeNBReleaseRequired_IEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired_IEs = { + "SeNBReleaseRequired-IEs", + "SeNBReleaseRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequired_IEs_tags_405, + sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405) + /sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405[0]), /* 1 */ + asn_DEF_SeNBReleaseRequired_IEs_tags_405, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405) + /sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequired_IEs_405, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseRequired_IEs_specs_405 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_412[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.E_RABs_ToBeReleased_List_RelConf), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_List_RelConf, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-List-RelConf" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_412[] = { 0, 3, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_412[] = { 0, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_412[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E-RABs-ToBeReleased-List-RelConf */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_412 = { + sizeof(struct SeNBReleaseConfirm_IEs__value), + offsetof(struct SeNBReleaseConfirm_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseConfirm_IEs__value, present), + sizeof(((struct SeNBReleaseConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_412, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_412, + asn_MAP_value_from_canonical_412, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_412 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_412, + 4, /* Elements count */ + &asn_SPC_value_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_IEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_410, memb_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_411, memb_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_412, + select_SeNBReleaseConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_412, memb_value_constraint_409 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseConfirm_IEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseConfirm_IEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_IEs_specs_409 = { + sizeof(struct SeNBReleaseConfirm_IEs), + offsetof(struct SeNBReleaseConfirm_IEs, _asn_ctx), + asn_MAP_SeNBReleaseConfirm_IEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm_IEs = { + "SeNBReleaseConfirm-IEs", + "SeNBReleaseConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseConfirm_IEs_tags_409, + sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409) + /sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409[0]), /* 1 */ + asn_DEF_SeNBReleaseConfirm_IEs_tags_409, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409) + /sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseConfirm_IEs_409, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseConfirm_IEs_specs_409 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_416[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.E_RABs_SubjectToCounterCheck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheck_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToCounterCheck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_416[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_416[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_416[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* E-RABs-SubjectToCounterCheck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_416 = { + sizeof(struct SeNBCounterCheckRequest_IEs__value), + offsetof(struct SeNBCounterCheckRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBCounterCheckRequest_IEs__value, present), + sizeof(((struct SeNBCounterCheckRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_416, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_416, + asn_MAP_value_from_canonical_416, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_416 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_416, + 3, /* Elements count */ + &asn_SPC_value_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_IEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_414, memb_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBCounterCheckRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_415, memb_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_416, + select_SeNBCounterCheckRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_416, memb_value_constraint_413 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBCounterCheckRequest_IEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_IEs_specs_413 = { + sizeof(struct SeNBCounterCheckRequest_IEs), + offsetof(struct SeNBCounterCheckRequest_IEs, _asn_ctx), + asn_MAP_SeNBCounterCheckRequest_IEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest_IEs = { + "SeNBCounterCheckRequest-IEs", + "SeNBCounterCheckRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBCounterCheckRequest_IEs_tags_413, + sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413) + /sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[0]), /* 1 */ + asn_DEF_SeNBCounterCheckRequest_IEs_tags_413, /* Same as above */ + sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413) + /sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBCounterCheckRequest_IEs_413, + 3, /* Elements count */ + &asn_SPC_SeNBCounterCheckRequest_IEs_specs_413 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_420[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs__value, choice.X2BenefitValue), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_X2BenefitValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2BenefitValue" + }, +}; +static const unsigned asn_MAP_value_to_canonical_420[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_420[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_420[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* X2BenefitValue */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_420 = { + sizeof(struct X2RemovalRequest_IEs__value), + offsetof(struct X2RemovalRequest_IEs__value, _asn_ctx), + offsetof(struct X2RemovalRequest_IEs__value, present), + sizeof(((struct X2RemovalRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_420, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_420, + asn_MAP_value_from_canonical_420, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_420 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_420, + 2, /* Elements count */ + &asn_SPC_value_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalRequest_IEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_418, memb_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_419, memb_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_420, + select_X2RemovalRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_420, memb_value_constraint_417 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalRequest_IEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalRequest_IEs_tag2el_417[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_IEs_specs_417 = { + sizeof(struct X2RemovalRequest_IEs), + offsetof(struct X2RemovalRequest_IEs, _asn_ctx), + asn_MAP_X2RemovalRequest_IEs_tag2el_417, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest_IEs = { + "X2RemovalRequest-IEs", + "X2RemovalRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalRequest_IEs_tags_417, + sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417) + /sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417[0]), /* 1 */ + asn_DEF_X2RemovalRequest_IEs_tags_417, /* Same as above */ + sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417) + /sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalRequest_IEs_417, + 3, /* Elements count */ + &asn_SPC_X2RemovalRequest_IEs_specs_417 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_424[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_424[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_424 = { + sizeof(struct X2RemovalResponse_IEs__value), + offsetof(struct X2RemovalResponse_IEs__value, _asn_ctx), + offsetof(struct X2RemovalResponse_IEs__value, present), + sizeof(((struct X2RemovalResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_424, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_424 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_424, + 2, /* Elements count */ + &asn_SPC_value_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalResponse_IEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_422, memb_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_423, memb_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_424, + select_X2RemovalResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_424, memb_value_constraint_421 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalResponse_IEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalResponse_IEs_tag2el_421[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_IEs_specs_421 = { + sizeof(struct X2RemovalResponse_IEs), + offsetof(struct X2RemovalResponse_IEs, _asn_ctx), + asn_MAP_X2RemovalResponse_IEs_tag2el_421, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse_IEs = { + "X2RemovalResponse-IEs", + "X2RemovalResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalResponse_IEs_tags_421, + sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421) + /sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421[0]), /* 1 */ + asn_DEF_X2RemovalResponse_IEs_tags_421, /* Same as above */ + sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421) + /sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalResponse_IEs_421, + 3, /* Elements count */ + &asn_SPC_X2RemovalResponse_IEs_specs_421 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_428[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_428[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_428[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_428[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_428 = { + sizeof(struct X2RemovalFailure_IEs__value), + offsetof(struct X2RemovalFailure_IEs__value, _asn_ctx), + offsetof(struct X2RemovalFailure_IEs__value, present), + sizeof(((struct X2RemovalFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_428, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_428, + asn_MAP_value_from_canonical_428, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_428 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_428, + 2, /* Elements count */ + &asn_SPC_value_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalFailure_IEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_426, memb_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_427, memb_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_428, + select_X2RemovalFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_428, memb_value_constraint_425 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalFailure_IEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalFailure_IEs_tag2el_425[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_IEs_specs_425 = { + sizeof(struct X2RemovalFailure_IEs), + offsetof(struct X2RemovalFailure_IEs, _asn_ctx), + asn_MAP_X2RemovalFailure_IEs_tag2el_425, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure_IEs = { + "X2RemovalFailure-IEs", + "X2RemovalFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalFailure_IEs_tags_425, + sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425) + /sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425[0]), /* 1 */ + asn_DEF_X2RemovalFailure_IEs_tags_425, /* Same as above */ + sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425) + /sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalFailure_IEs_425, + 3, /* Elements count */ + &asn_SPC_X2RemovalFailure_IEs_specs_425 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_432[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.ResumeID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResumeID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResumeID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.ShortMAC_I), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ShortMAC_I, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ShortMAC-I" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.EUTRANCellIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_EUTRANCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRANCellIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.PCI), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PCI" + }, +}; +static const unsigned asn_MAP_value_to_canonical_432[] = { 0, 1, 6, 3, 4, 5, 2 }; +static const unsigned asn_MAP_value_from_canonical_432[] = { 0, 1, 6, 3, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_432[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* PCI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 2 }, /* ShortMAC-I */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 4, -1, 1 }, /* EUTRANCellIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, -2, 0 }, /* CRNTI */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* non-truncated */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* truncated */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_432 = { + sizeof(struct RetrieveUEContextRequest_IEs__value), + offsetof(struct RetrieveUEContextRequest_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextRequest_IEs__value, present), + sizeof(((struct RetrieveUEContextRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_432, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_432, + asn_MAP_value_from_canonical_432, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_432 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_432, + 7, /* Elements count */ + &asn_SPC_value_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_IEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_430, memb_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_431, memb_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_432, + select_RetrieveUEContextRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_432, memb_value_constraint_429 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextRequest_IEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextRequest_IEs_tag2el_429[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_IEs_specs_429 = { + sizeof(struct RetrieveUEContextRequest_IEs), + offsetof(struct RetrieveUEContextRequest_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextRequest_IEs_tag2el_429, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest_IEs = { + "RetrieveUEContextRequest-IEs", + "RetrieveUEContextRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextRequest_IEs_tags_429, + sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429) + /sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429[0]), /* 1 */ + asn_DEF_RetrieveUEContextRequest_IEs_tags_429, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429) + /sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextRequest_IEs_429, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextRequest_IEs_specs_429 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_436[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_ContextInformationRetrieve), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationRetrieve, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformationRetrieve" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.AerialUEsubscriptionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_AerialUEsubscriptionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AerialUEsubscriptionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.Subscription_Based_UE_DifferentiationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Subscription-Based-UE-DifferentiationInfo" + }, +}; +static const unsigned asn_MAP_value_to_canonical_436[] = { 0, 1, 6, 5, 11, 2, 3, 4, 7, 8, 9, 10, 12 }; +static const unsigned asn_MAP_value_from_canonical_436[] = { 0, 1, 5, 6, 7, 3, 2, 8, 9, 10, 11, 4, 12 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_436[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 6, 0, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -1, 0 }, /* AerialUEsubscriptionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 7 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 6 }, /* UE-ContextInformationRetrieve */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 5 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 4 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 3 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -5, 2 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -6, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -7, 0 } /* Subscription-Based-UE-DifferentiationInfo */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_436 = { + sizeof(struct RetrieveUEContextResponse_IEs__value), + offsetof(struct RetrieveUEContextResponse_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextResponse_IEs__value, present), + sizeof(((struct RetrieveUEContextResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_436, + 13, /* Count of tags in the map */ + asn_MAP_value_to_canonical_436, + asn_MAP_value_from_canonical_436, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_436 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_436, + 13, /* Elements count */ + &asn_SPC_value_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_IEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_434, memb_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_435, memb_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_436, + select_RetrieveUEContextResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_436, memb_value_constraint_433 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextResponse_IEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextResponse_IEs_tag2el_433[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_IEs_specs_433 = { + sizeof(struct RetrieveUEContextResponse_IEs), + offsetof(struct RetrieveUEContextResponse_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextResponse_IEs_tag2el_433, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse_IEs = { + "RetrieveUEContextResponse-IEs", + "RetrieveUEContextResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextResponse_IEs_tags_433, + sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433) + /sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433[0]), /* 1 */ + asn_DEF_RetrieveUEContextResponse_IEs_tags_433, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433) + /sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextResponse_IEs_433, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextResponse_IEs_specs_433 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_440[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_440[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_440[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_440[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_440 = { + sizeof(struct RetrieveUEContextFailure_IEs__value), + offsetof(struct RetrieveUEContextFailure_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextFailure_IEs__value, present), + sizeof(((struct RetrieveUEContextFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_440, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_440, + asn_MAP_value_from_canonical_440, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_440 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_440, + 4, /* Elements count */ + &asn_SPC_value_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_IEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_438, memb_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_439, memb_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_440, + select_RetrieveUEContextFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_440, memb_value_constraint_437 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextFailure_IEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextFailure_IEs_tag2el_437[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_IEs_specs_437 = { + sizeof(struct RetrieveUEContextFailure_IEs), + offsetof(struct RetrieveUEContextFailure_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextFailure_IEs_tag2el_437, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure_IEs = { + "RetrieveUEContextFailure-IEs", + "RetrieveUEContextFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextFailure_IEs_tags_437, + sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437) + /sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437[0]), /* 1 */ + asn_DEF_RetrieveUEContextFailure_IEs_tags_437, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437) + /sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextFailure_IEs_437, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextFailure_IEs_specs_437 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_444[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.NRUESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRUESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SgNBSecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_SgNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBSecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UEAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.E_RABs_ToBeAdded_SgNBAddReqList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBAddReqList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SGNB_Addition_Trigger_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SGNB_Addition_Trigger_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SGNB-Addition-Trigger-Ind" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, +}; +static const unsigned asn_MAP_value_to_canonical_444[] = { 0, 8, 10, 14, 2, 4, 7, 11, 13, 1, 3, 5, 6, 9, 12, 15 }; +static const unsigned asn_MAP_value_from_canonical_444[] = { 0, 9, 4, 10, 5, 11, 12, 6, 1, 13, 2, 7, 14, 8, 3, 15 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_444[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 3 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -1, 2 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 10, -2, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 14, -3, 0 }, /* SubscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* SgNBSecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 13, -1, 0 }, /* SGNB-Addition-Trigger-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 6 }, /* NRUESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 5 }, /* UEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 4 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -3, 3 }, /* E-RABs-ToBeAdded-SgNBAddReqList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -4, 2 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -5, 1 }, /* MeNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -6, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_444 = { + sizeof(struct SgNBAdditionRequest_IEs__value), + offsetof(struct SgNBAdditionRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequest_IEs__value, present), + sizeof(((struct SgNBAdditionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_444, + 16, /* Count of tags in the map */ + asn_MAP_value_to_canonical_444, + asn_MAP_value_from_canonical_444, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_444 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_444, + 16, /* Elements count */ + &asn_SPC_value_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_IEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_442, memb_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_443, memb_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_444, + select_SgNBAdditionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_444, memb_value_constraint_441 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequest_IEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequest_IEs_tag2el_441[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_IEs_specs_441 = { + sizeof(struct SgNBAdditionRequest_IEs), + offsetof(struct SgNBAdditionRequest_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequest_IEs_tag2el_441, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest_IEs = { + "SgNBAdditionRequest-IEs", + "SgNBAdditionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequest_IEs_tags_441, + sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441) + /sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441[0]), /* 1 */ + asn_DEF_SgNBAdditionRequest_IEs_tags_441, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441) + /sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequest_IEs_441, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequest_IEs_specs_441 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_448[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_448[] = { 0, 1, 6, 4, 7, 9, 2, 3, 5, 8 }; +static const unsigned asn_MAP_value_from_canonical_448[] = { 0, 1, 6, 7, 3, 8, 2, 4, 9, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_448[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -3, 0 } /* SgNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_448 = { + sizeof(struct SgNBAdditionRequestAcknowledge_IEs__value), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBAdditionRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_448, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_448, + asn_MAP_value_from_canonical_448, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_448 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_448, + 10, /* Elements count */ + &asn_SPC_value_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_446, memb_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_447, memb_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_448, + select_SgNBAdditionRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_448, memb_value_constraint_445 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestAcknowledge_IEs_tag2el_445[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445 = { + sizeof(struct SgNBAdditionRequestAcknowledge_IEs), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequestAcknowledge_IEs_tag2el_445, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs = { + "SgNBAdditionRequestAcknowledge-IEs", + "SgNBAdditionRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445, + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_452[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_452[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_452[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_452[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_452 = { + sizeof(struct SgNBAdditionRequestReject_IEs__value), + offsetof(struct SgNBAdditionRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequestReject_IEs__value, present), + sizeof(((struct SgNBAdditionRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_452, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_452, + asn_MAP_value_from_canonical_452, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_452 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_452, + 5, /* Elements count */ + &asn_SPC_value_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_IEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_450, memb_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_451, memb_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_452, + select_SgNBAdditionRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_452, memb_value_constraint_449 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestReject_IEs_tag2el_449[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_IEs_specs_449 = { + sizeof(struct SgNBAdditionRequestReject_IEs), + offsetof(struct SgNBAdditionRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequestReject_IEs_tag2el_449, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject_IEs = { + "SgNBAdditionRequestReject-IEs", + "SgNBAdditionRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestReject_IEs_tags_449, + sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449) + /sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestReject_IEs_tags_449, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449) + /sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestReject_IEs_449, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequestReject_IEs_specs_449 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_456[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.ResponseInformationSgNBReconfComp), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResponseInformationSgNBReconfComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResponseInformationSgNBReconfComp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_456[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_456[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_456[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* success-SgNBReconfComp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* reject-by-MeNB-SgNBReconfComp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_456 = { + sizeof(struct SgNBReconfigurationComplete_IEs__value), + offsetof(struct SgNBReconfigurationComplete_IEs__value, _asn_ctx), + offsetof(struct SgNBReconfigurationComplete_IEs__value, present), + sizeof(((struct SgNBReconfigurationComplete_IEs__value *)0)->present), + asn_MAP_value_tag2el_456, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_456, + asn_MAP_value_from_canonical_456, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_456 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_456, + 4, /* Elements count */ + &asn_SPC_value_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_IEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_454, memb_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReconfigurationComplete_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_455, memb_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_456, + select_SgNBReconfigurationComplete_IEs_value_type, + { 0, &asn_PER_memb_value_constr_456, memb_value_constraint_453 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReconfigurationComplete_IEs_tag2el_453[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_IEs_specs_453 = { + sizeof(struct SgNBReconfigurationComplete_IEs), + offsetof(struct SgNBReconfigurationComplete_IEs, _asn_ctx), + asn_MAP_SgNBReconfigurationComplete_IEs_tag2el_453, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete_IEs = { + "SgNBReconfigurationComplete-IEs", + "SgNBReconfigurationComplete-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReconfigurationComplete_IEs_tags_453, + sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453) + /sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[0]), /* 1 */ + asn_DEF_SgNBReconfigurationComplete_IEs_tags_453, /* Same as above */ + sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453) + /sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReconfigurationComplete_IEs_453, + 3, /* Elements count */ + &asn_SPC_SgNBReconfigurationComplete_IEs_specs_453 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_460[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SCGConfigurationQuery), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGConfigurationQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGConfigurationQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_ContextInformation_SgNBModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation_SgNBModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformation-SgNBModReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, +}; +static const unsigned asn_MAP_value_to_canonical_460[] = { 0, 1, 8, 3, 7, 5, 10, 4, 6, 9, 2 }; +static const unsigned asn_MAP_value_from_canonical_460[] = { 0, 1, 10, 3, 7, 5, 8, 4, 2, 9, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_460[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* SCGConfigurationQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, -1, 0 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 2 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -1, 1 }, /* UE-ContextInformation-SgNBModReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -2, 0 }, /* MeNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_460 = { + sizeof(struct SgNBModificationRequest_IEs__value), + offsetof(struct SgNBModificationRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequest_IEs__value, present), + sizeof(((struct SgNBModificationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_460, + 14, /* Count of tags in the map */ + asn_MAP_value_to_canonical_460, + asn_MAP_value_from_canonical_460, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_460 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_460, + 11, /* Elements count */ + &asn_SPC_value_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequest_IEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_458, memb_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_459, memb_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_460, + select_SgNBModificationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_460, memb_value_constraint_457 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequest_IEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequest_IEs_tag2el_457[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_IEs_specs_457 = { + sizeof(struct SgNBModificationRequest_IEs), + offsetof(struct SgNBModificationRequest_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequest_IEs_tag2el_457, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest_IEs = { + "SgNBModificationRequest-IEs", + "SgNBModificationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequest_IEs_tags_457, + sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457) + /sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457[0]), /* 1 */ + asn_DEF_SgNBModificationRequest_IEs_tags_457, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457) + /sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequest_IEs_457, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequest_IEs_specs_457 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_464[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeModified_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_464[] = { 0, 1, 8, 6, 10, 11, 2, 3, 4, 5, 7, 9 }; +static const unsigned asn_MAP_value_from_canonical_464[] = { 0, 1, 6, 7, 8, 9, 3, 10, 2, 11, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_464[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 5 }, /* E-RABs-Admitted-ToBeAdded-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 4 }, /* E-RABs-Admitted-ToBeModified-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 3 }, /* E-RABs-Admitted-ToBeReleased-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -4, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -5, 0 } /* SgNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_464 = { + sizeof(struct SgNBModificationRequestAcknowledge_IEs__value), + offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBModificationRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_464, + 12, /* Count of tags in the map */ + asn_MAP_value_to_canonical_464, + asn_MAP_value_from_canonical_464, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_464 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_464, + 12, /* Elements count */ + &asn_SPC_value_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_IEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_462, memb_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_463, memb_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_464, + select_SgNBModificationRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_464, memb_value_constraint_461 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestAcknowledge_IEs_tag2el_461[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461 = { + sizeof(struct SgNBModificationRequestAcknowledge_IEs), + offsetof(struct SgNBModificationRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequestAcknowledge_IEs_tag2el_461, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge_IEs = { + "SgNBModificationRequestAcknowledge-IEs", + "SgNBModificationRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461, + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[0]), /* 1 */ + asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestAcknowledge_IEs_461, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_468[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_468[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_468[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_468[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_468 = { + sizeof(struct SgNBModificationRequestReject_IEs__value), + offsetof(struct SgNBModificationRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequestReject_IEs__value, present), + sizeof(((struct SgNBModificationRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_468, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_468, + asn_MAP_value_from_canonical_468, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_468 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_468, + 5, /* Elements count */ + &asn_SPC_value_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_IEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_466, memb_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_467, memb_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_468, + select_SgNBModificationRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_468, memb_value_constraint_465 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestReject_IEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestReject_IEs_tag2el_465[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_IEs_specs_465 = { + sizeof(struct SgNBModificationRequestReject_IEs), + offsetof(struct SgNBModificationRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequestReject_IEs_tag2el_465, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject_IEs = { + "SgNBModificationRequestReject-IEs", + "SgNBModificationRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestReject_IEs_tags_465, + sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465) + /sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465[0]), /* 1 */ + asn_DEF_SgNBModificationRequestReject_IEs_tags_465, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465) + /sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestReject_IEs_465, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequestReject_IEs_specs_465 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_472[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.PDCPChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.E_RABs_ToBeReleased_SgNBModReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReqdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.E_RABs_ToBeModified_SgNBModReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReqdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_472[] = { 0, 1, 6, 5, 3, 9, 4, 7, 8, 2 }; +static const unsigned asn_MAP_value_from_canonical_472[] = { 0, 1, 9, 4, 6, 3, 2, 7, 8, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_472[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* PDCPChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 2 }, /* E-RABs-ToBeReleased-SgNBModReqdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -1, 1 }, /* E-RABs-ToBeModified-SgNBModReqdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -2, 0 }, /* SgNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_472 = { + sizeof(struct SgNBModificationRequired_IEs__value), + offsetof(struct SgNBModificationRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequired_IEs__value, present), + sizeof(((struct SgNBModificationRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_472, + 13, /* Count of tags in the map */ + asn_MAP_value_to_canonical_472, + asn_MAP_value_from_canonical_472, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_472 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_472, + 10, /* Elements count */ + &asn_SPC_value_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequired_IEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_470, memb_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_471, memb_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_472, + select_SgNBModificationRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_472, memb_value_constraint_469 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequired_IEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequired_IEs_tag2el_469[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_IEs_specs_469 = { + sizeof(struct SgNBModificationRequired_IEs), + offsetof(struct SgNBModificationRequired_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequired_IEs_tag2el_469, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired_IEs = { + "SgNBModificationRequired-IEs", + "SgNBModificationRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequired_IEs_tags_469, + sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469) + /sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469[0]), /* 1 */ + asn_DEF_SgNBModificationRequired_IEs_tags_469, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469) + /sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequired_IEs_469, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequired_IEs_specs_469 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_476[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.E_RABs_AdmittedToBeModified_SgNBModConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-AdmittedToBeModified-SgNBModConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, +}; +static const unsigned asn_MAP_value_to_canonical_476[] = { 0, 1, 5, 3, 2, 4, 6 }; +static const unsigned asn_MAP_value_from_canonical_476[] = { 0, 1, 4, 3, 5, 2, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_476[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABs-AdmittedToBeModified-SgNBModConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -2, 0 } /* MeNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_476 = { + sizeof(struct SgNBModificationConfirm_IEs__value), + offsetof(struct SgNBModificationConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationConfirm_IEs__value, present), + sizeof(((struct SgNBModificationConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_476, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_476, + asn_MAP_value_from_canonical_476, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_476 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_476, + 7, /* Elements count */ + &asn_SPC_value_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_IEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_474, memb_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_475, memb_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_476, + select_SgNBModificationConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_476, memb_value_constraint_473 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationConfirm_IEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationConfirm_IEs_tag2el_473[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_IEs_specs_473 = { + sizeof(struct SgNBModificationConfirm_IEs), + offsetof(struct SgNBModificationConfirm_IEs, _asn_ctx), + asn_MAP_SgNBModificationConfirm_IEs_tag2el_473, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm_IEs = { + "SgNBModificationConfirm-IEs", + "SgNBModificationConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationConfirm_IEs_tags_473, + sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473) + /sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473[0]), /* 1 */ + asn_DEF_SgNBModificationConfirm_IEs_tags_473, /* Same as above */ + sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473) + /sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationConfirm_IEs_473, + 3, /* Elements count */ + &asn_SPC_SgNBModificationConfirm_IEs_specs_473 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_480[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_480[] = { 0, 1, 5, 3, 4, 2 }; +static const unsigned asn_MAP_value_from_canonical_480[] = { 0, 1, 5, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_480[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_480 = { + sizeof(struct SgNBModificationRefuse_IEs__value), + offsetof(struct SgNBModificationRefuse_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRefuse_IEs__value, present), + sizeof(((struct SgNBModificationRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_480, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_480, + asn_MAP_value_from_canonical_480, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_480 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_480, + 6, /* Elements count */ + &asn_SPC_value_specs_480 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_IEs_477[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_478, memb_id_constraint_477 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_479, memb_criticality_constraint_477 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_480, + select_SgNBModificationRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_480, memb_value_constraint_477 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRefuse_IEs_tags_477[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRefuse_IEs_tag2el_477[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_IEs_specs_477 = { + sizeof(struct SgNBModificationRefuse_IEs), + offsetof(struct SgNBModificationRefuse_IEs, _asn_ctx), + asn_MAP_SgNBModificationRefuse_IEs_tag2el_477, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse_IEs = { + "SgNBModificationRefuse-IEs", + "SgNBModificationRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRefuse_IEs_tags_477, + sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477) + /sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477[0]), /* 1 */ + asn_DEF_SgNBModificationRefuse_IEs_tags_477, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477) + /sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRefuse_IEs_477, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRefuse_IEs_specs_477 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_484[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, +}; +static const unsigned asn_MAP_value_to_canonical_484[] = { 0, 1, 5, 6, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_484[] = { 0, 1, 6, 5, 4, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_484[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* E-RABs-ToBeReleased-SgNBRelReqList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_484 = { + sizeof(struct SgNBReleaseRequest_IEs__value), + offsetof(struct SgNBReleaseRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequest_IEs__value, present), + sizeof(((struct SgNBReleaseRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_484, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_484, + asn_MAP_value_from_canonical_484, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_484 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_484, + 7, /* Elements count */ + &asn_SPC_value_specs_484 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_IEs_481[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_482, memb_id_constraint_481 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_483, memb_criticality_constraint_481 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_484, + select_SgNBReleaseRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_484, memb_value_constraint_481 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequest_IEs_tags_481[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequest_IEs_tag2el_481[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_IEs_specs_481 = { + sizeof(struct SgNBReleaseRequest_IEs), + offsetof(struct SgNBReleaseRequest_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequest_IEs_tag2el_481, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest_IEs = { + "SgNBReleaseRequest-IEs", + "SgNBReleaseRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequest_IEs_tags_481, + sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481) + /sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481[0]), /* 1 */ + asn_DEF_SgNBReleaseRequest_IEs_tags_481, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481) + /sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequest_IEs_481, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequest_IEs_specs_481 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_488[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList" + }, +}; +static const unsigned asn_MAP_value_to_canonical_488[] = { 0, 1, 3, 2, 4 }; +static const unsigned asn_MAP_value_from_canonical_488[] = { 0, 1, 3, 2, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_488[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 } /* E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_488 = { + sizeof(struct SgNBReleaseRequestAcknowledge_IEs__value), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBReleaseRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_488, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_488, + asn_MAP_value_from_canonical_488, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_488 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_488, + 5, /* Elements count */ + &asn_SPC_value_specs_488 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_486, memb_id_constraint_485 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_487, memb_criticality_constraint_485 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_488, + select_SgNBReleaseRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_488, memb_value_constraint_485 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestAcknowledge_IEs_tag2el_485[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485 = { + sizeof(struct SgNBReleaseRequestAcknowledge_IEs), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequestAcknowledge_IEs_tag2el_485, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs = { + "SgNBReleaseRequestAcknowledge-IEs", + "SgNBReleaseRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485, + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_492[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_492[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_492[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_492[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_492 = { + sizeof(struct SgNBReleaseRequestReject_IEs__value), + offsetof(struct SgNBReleaseRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequestReject_IEs__value, present), + sizeof(((struct SgNBReleaseRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_492, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_492, + asn_MAP_value_from_canonical_492, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_492 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_492, + 5, /* Elements count */ + &asn_SPC_value_specs_492 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_IEs_489[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_490, memb_id_constraint_489 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_491, memb_criticality_constraint_489 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_492, + select_SgNBReleaseRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_492, memb_value_constraint_489 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestReject_IEs_tag2el_489[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_IEs_specs_489 = { + sizeof(struct SgNBReleaseRequestReject_IEs), + offsetof(struct SgNBReleaseRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequestReject_IEs_tag2el_489, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject_IEs = { + "SgNBReleaseRequestReject-IEs", + "SgNBReleaseRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestReject_IEs_tags_489, + sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489) + /sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestReject_IEs_tags_489, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489) + /sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestReject_IEs_489, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequestReject_IEs_specs_489 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_496[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqdList" + }, +}; +static const unsigned asn_MAP_value_to_canonical_496[] = { 0, 1, 3, 4, 2 }; +static const unsigned asn_MAP_value_from_canonical_496[] = { 0, 1, 4, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_496[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* E-RABs-ToBeReleased-SgNBRelReqdList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_496 = { + sizeof(struct SgNBReleaseRequired_IEs__value), + offsetof(struct SgNBReleaseRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequired_IEs__value, present), + sizeof(((struct SgNBReleaseRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_496, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_496, + asn_MAP_value_from_canonical_496, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_496 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_496, + 5, /* Elements count */ + &asn_SPC_value_specs_496 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_IEs_493[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_494, memb_id_constraint_493 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_495, memb_criticality_constraint_493 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_496, + select_SgNBReleaseRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_496, memb_value_constraint_493 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequired_IEs_tags_493[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequired_IEs_tag2el_493[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_IEs_specs_493 = { + sizeof(struct SgNBReleaseRequired_IEs), + offsetof(struct SgNBReleaseRequired_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequired_IEs_tag2el_493, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired_IEs = { + "SgNBReleaseRequired-IEs", + "SgNBReleaseRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequired_IEs_tags_493, + sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493) + /sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493[0]), /* 1 */ + asn_DEF_SgNBReleaseRequired_IEs_tags_493, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493) + /sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequired_IEs_493, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequired_IEs_specs_493 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_500[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_500[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_500[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_500[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* E-RABs-ToBeReleased-SgNBRelConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_500 = { + sizeof(struct SgNBReleaseConfirm_IEs__value), + offsetof(struct SgNBReleaseConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseConfirm_IEs__value, present), + sizeof(((struct SgNBReleaseConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_500, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_500, + asn_MAP_value_from_canonical_500, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_500 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_500, + 5, /* Elements count */ + &asn_SPC_value_specs_500 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_IEs_497[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_498, memb_id_constraint_497 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_499, memb_criticality_constraint_497 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_500, + select_SgNBReleaseConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_500, memb_value_constraint_497 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseConfirm_IEs_tags_497[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseConfirm_IEs_tag2el_497[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_IEs_specs_497 = { + sizeof(struct SgNBReleaseConfirm_IEs), + offsetof(struct SgNBReleaseConfirm_IEs, _asn_ctx), + asn_MAP_SgNBReleaseConfirm_IEs_tag2el_497, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm_IEs = { + "SgNBReleaseConfirm-IEs", + "SgNBReleaseConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseConfirm_IEs_tags_497, + sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497) + /sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497[0]), /* 1 */ + asn_DEF_SgNBReleaseConfirm_IEs_tags_497, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497) + /sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseConfirm_IEs_497, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseConfirm_IEs_specs_497 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_504[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.E_RABs_SubjectToSgNBCounterCheck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToSgNBCounterCheck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_504[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_504[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_504[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABs-SubjectToSgNBCounterCheck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_504 = { + sizeof(struct SgNBCounterCheckRequest_IEs__value), + offsetof(struct SgNBCounterCheckRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBCounterCheckRequest_IEs__value, present), + sizeof(((struct SgNBCounterCheckRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_504, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_504, + asn_MAP_value_from_canonical_504, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_504 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_504, + 4, /* Elements count */ + &asn_SPC_value_specs_504 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_IEs_501[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_502, memb_id_constraint_501 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBCounterCheckRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_503, memb_criticality_constraint_501 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_504, + select_SgNBCounterCheckRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_504, memb_value_constraint_501 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBCounterCheckRequest_IEs_tag2el_501[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_IEs_specs_501 = { + sizeof(struct SgNBCounterCheckRequest_IEs), + offsetof(struct SgNBCounterCheckRequest_IEs, _asn_ctx), + asn_MAP_SgNBCounterCheckRequest_IEs_tag2el_501, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest_IEs = { + "SgNBCounterCheckRequest-IEs", + "SgNBCounterCheckRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBCounterCheckRequest_IEs_tags_501, + sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501) + /sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[0]), /* 1 */ + asn_DEF_SgNBCounterCheckRequest_IEs_tags_501, /* Same as above */ + sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501) + /sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBCounterCheckRequest_IEs_501, + 3, /* Elements count */ + &asn_SPC_SgNBCounterCheckRequest_IEs_specs_501 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_508[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_508[] = { 0, 1, 5, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_508[] = { 0, 1, 4, 5, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_508[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_508 = { + sizeof(struct SgNBChangeRequired_IEs__value), + offsetof(struct SgNBChangeRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeRequired_IEs__value, present), + sizeof(((struct SgNBChangeRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_508, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_508, + asn_MAP_value_from_canonical_508, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_508 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_508, + 6, /* Elements count */ + &asn_SPC_value_specs_508 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeRequired_IEs_505[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_506, memb_id_constraint_505 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_507, memb_criticality_constraint_505 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_508, + select_SgNBChangeRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_508, memb_value_constraint_505 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRequired_IEs_tags_505[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRequired_IEs_tag2el_505[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_IEs_specs_505 = { + sizeof(struct SgNBChangeRequired_IEs), + offsetof(struct SgNBChangeRequired_IEs, _asn_ctx), + asn_MAP_SgNBChangeRequired_IEs_tag2el_505, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired_IEs = { + "SgNBChangeRequired-IEs", + "SgNBChangeRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRequired_IEs_tags_505, + sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505) + /sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505[0]), /* 1 */ + asn_DEF_SgNBChangeRequired_IEs_tags_505, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505) + /sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRequired_IEs_505, + 3, /* Elements count */ + &asn_SPC_SgNBChangeRequired_IEs_specs_505 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_512[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.E_RABs_ToBeReleased_SgNBChaConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBChaConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_512[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_512[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_512[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* E-RABs-ToBeReleased-SgNBChaConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_512 = { + sizeof(struct SgNBChangeConfirm_IEs__value), + offsetof(struct SgNBChangeConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeConfirm_IEs__value, present), + sizeof(((struct SgNBChangeConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_512, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_512, + asn_MAP_value_from_canonical_512, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_512 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_512, + 5, /* Elements count */ + &asn_SPC_value_specs_512 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_IEs_509[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_510, memb_id_constraint_509 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_511, memb_criticality_constraint_509 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_512, + select_SgNBChangeConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_512, memb_value_constraint_509 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeConfirm_IEs_tags_509[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeConfirm_IEs_tag2el_509[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_IEs_specs_509 = { + sizeof(struct SgNBChangeConfirm_IEs), + offsetof(struct SgNBChangeConfirm_IEs, _asn_ctx), + asn_MAP_SgNBChangeConfirm_IEs_tag2el_509, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm_IEs = { + "SgNBChangeConfirm-IEs", + "SgNBChangeConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeConfirm_IEs_tags_509, + sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509) + /sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509[0]), /* 1 */ + asn_DEF_SgNBChangeConfirm_IEs_tags_509, /* Same as above */ + sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509) + /sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeConfirm_IEs_509, + 3, /* Elements count */ + &asn_SPC_SgNBChangeConfirm_IEs_specs_509 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_516[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.SplitSRB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SplitSRB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRB" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UENRMeasurement), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UENRMeasurement, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UENRMeasurement" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_516[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_516[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_516[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* SplitSRB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* UENRMeasurement */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_516 = { + sizeof(struct RRCTransfer_IEs__value), + offsetof(struct RRCTransfer_IEs__value, _asn_ctx), + offsetof(struct RRCTransfer_IEs__value, present), + sizeof(((struct RRCTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_516, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_516, + asn_MAP_value_from_canonical_516, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_516 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_516, + 5, /* Elements count */ + &asn_SPC_value_specs_516 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RRCTransfer_IEs_513[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_514, memb_id_constraint_513 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RRCTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_515, memb_criticality_constraint_513 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_516, + select_RRCTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_516, memb_value_constraint_513 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RRCTransfer_IEs_tags_513[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RRCTransfer_IEs_tag2el_513[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_IEs_specs_513 = { + sizeof(struct RRCTransfer_IEs), + offsetof(struct RRCTransfer_IEs, _asn_ctx), + asn_MAP_RRCTransfer_IEs_tag2el_513, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RRCTransfer_IEs = { + "RRCTransfer-IEs", + "RRCTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RRCTransfer_IEs_tags_513, + sizeof(asn_DEF_RRCTransfer_IEs_tags_513) + /sizeof(asn_DEF_RRCTransfer_IEs_tags_513[0]), /* 1 */ + asn_DEF_RRCTransfer_IEs_tags_513, /* Same as above */ + sizeof(asn_DEF_RRCTransfer_IEs_tags_513) + /sizeof(asn_DEF_RRCTransfer_IEs_tags_513[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RRCTransfer_IEs_513, + 3, /* Elements count */ + &asn_SPC_RRCTransfer_IEs_specs_513 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_520[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_520[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_520[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_520[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_520 = { + sizeof(struct SgNBChangeRefuse_IEs__value), + offsetof(struct SgNBChangeRefuse_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeRefuse_IEs__value, present), + sizeof(((struct SgNBChangeRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_520, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_520, + asn_MAP_value_from_canonical_520, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_520 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_520, + 5, /* Elements count */ + &asn_SPC_value_specs_520 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_IEs_517[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_518, memb_id_constraint_517 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_519, memb_criticality_constraint_517 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_520, + select_SgNBChangeRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_520, memb_value_constraint_517 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRefuse_IEs_tags_517[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRefuse_IEs_tag2el_517[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_IEs_specs_517 = { + sizeof(struct SgNBChangeRefuse_IEs), + offsetof(struct SgNBChangeRefuse_IEs, _asn_ctx), + asn_MAP_SgNBChangeRefuse_IEs_tag2el_517, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse_IEs = { + "SgNBChangeRefuse-IEs", + "SgNBChangeRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRefuse_IEs_tags_517, + sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517) + /sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517[0]), /* 1 */ + asn_DEF_SgNBChangeRefuse_IEs_tags_517, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517) + /sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRefuse_IEs_517, + 3, /* Elements count */ + &asn_SPC_SgNBChangeRefuse_IEs_specs_517 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_524[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs__value, choice.InitiatingNodeType_EndcX2Setup), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcX2Setup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcX2Setup" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_524[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_524 = { + sizeof(struct ENDCX2SetupRequest_IEs__value), + offsetof(struct ENDCX2SetupRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupRequest_IEs__value, present), + sizeof(((struct ENDCX2SetupRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_524, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_524 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_524, + 1, /* Elements count */ + &asn_SPC_value_specs_524 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_IEs_521[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_522, memb_id_constraint_521 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_523, memb_criticality_constraint_521 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_524, + select_ENDCX2SetupRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_524, memb_value_constraint_521 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupRequest_IEs_tags_521[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupRequest_IEs_tag2el_521[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_IEs_specs_521 = { + sizeof(struct ENDCX2SetupRequest_IEs), + offsetof(struct ENDCX2SetupRequest_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupRequest_IEs_tag2el_521, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest_IEs = { + "ENDCX2SetupRequest-IEs", + "ENDCX2SetupRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupRequest_IEs_tags_521, + sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521) + /sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521[0]), /* 1 */ + asn_DEF_ENDCX2SetupRequest_IEs_tags_521, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521) + /sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupRequest_IEs_521, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupRequest_IEs_specs_521 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_528[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_528[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedEUTRAcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_528 = { + sizeof(struct ENB_ENDCX2SetupReqIEs__value), + offsetof(struct ENB_ENDCX2SetupReqIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2SetupReqIEs__value, present), + sizeof(((struct ENB_ENDCX2SetupReqIEs__value *)0)->present), + asn_MAP_value_tag2el_528, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_528 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_528, + 2, /* Elements count */ + &asn_SPC_value_specs_528 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqIEs_525[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_526, memb_id_constraint_525 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2SetupReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_527, memb_criticality_constraint_525 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_528, + select_ENB_ENDCX2SetupReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_528, memb_value_constraint_525 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2SetupReqIEs_tag2el_525[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525 = { + sizeof(struct ENB_ENDCX2SetupReqIEs), + offsetof(struct ENB_ENDCX2SetupReqIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2SetupReqIEs_tag2el_525, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqIEs = { + "ENB-ENDCX2SetupReqIEs", + "ENB-ENDCX2SetupReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525, + sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[0]), /* 1 */ + asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2SetupReqIEs_525, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_532[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_532[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_532 = { + sizeof(struct En_gNB_ENDCX2SetupReqIEs__value), + offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, present), + sizeof(((struct En_gNB_ENDCX2SetupReqIEs__value *)0)->present), + asn_MAP_value_tag2el_532, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_532 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_532, + 2, /* Elements count */ + &asn_SPC_value_specs_532 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqIEs_529[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_530, memb_id_constraint_529 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2SetupReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_531, memb_criticality_constraint_529 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_532, + select_En_gNB_ENDCX2SetupReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_532, memb_value_constraint_529 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2SetupReqIEs_tag2el_529[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529 = { + sizeof(struct En_gNB_ENDCX2SetupReqIEs), + offsetof(struct En_gNB_ENDCX2SetupReqIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2SetupReqIEs_tag2el_529, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqIEs = { + "En-gNB-ENDCX2SetupReqIEs", + "En-gNB-ENDCX2SetupReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529, + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2SetupReqIEs_529, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_536[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs__value, choice.RespondingNodeType_EndcX2Setup), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcX2Setup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcX2Setup" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_536[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_536 = { + sizeof(struct ENDCX2SetupResponse_IEs__value), + offsetof(struct ENDCX2SetupResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupResponse_IEs__value, present), + sizeof(((struct ENDCX2SetupResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_536, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_536 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_536, + 1, /* Elements count */ + &asn_SPC_value_specs_536 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_IEs_533[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_534, memb_id_constraint_533 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_535, memb_criticality_constraint_533 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_536, + select_ENDCX2SetupResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_536, memb_value_constraint_533 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupResponse_IEs_tags_533[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupResponse_IEs_tag2el_533[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_IEs_specs_533 = { + sizeof(struct ENDCX2SetupResponse_IEs), + offsetof(struct ENDCX2SetupResponse_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupResponse_IEs_tag2el_533, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse_IEs = { + "ENDCX2SetupResponse-IEs", + "ENDCX2SetupResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupResponse_IEs_tags_533, + sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533) + /sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533[0]), /* 1 */ + asn_DEF_ENDCX2SetupResponse_IEs_tags_533, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533) + /sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupResponse_IEs_533, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupResponse_IEs_specs_533 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_540[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_540[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedEUTRAcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_540 = { + sizeof(struct ENB_ENDCX2SetupReqAckIEs__value), + offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, present), + sizeof(((struct ENB_ENDCX2SetupReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_540, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_540 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_540, + 2, /* Elements count */ + &asn_SPC_value_specs_540 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqAckIEs_537[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_538, memb_id_constraint_537 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2SetupReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_539, memb_criticality_constraint_537 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_540, + select_ENB_ENDCX2SetupReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_540, memb_value_constraint_537 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2SetupReqAckIEs_tag2el_537[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537 = { + sizeof(struct ENB_ENDCX2SetupReqAckIEs), + offsetof(struct ENB_ENDCX2SetupReqAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2SetupReqAckIEs_tag2el_537, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqAckIEs = { + "ENB-ENDCX2SetupReqAckIEs", + "ENB-ENDCX2SetupReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537, + sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[0]), /* 1 */ + asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2SetupReqAckIEs_537, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_544[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_544[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_544 = { + sizeof(struct En_gNB_ENDCX2SetupReqAckIEs__value), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, present), + sizeof(((struct En_gNB_ENDCX2SetupReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_544, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_544 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_544, + 2, /* Elements count */ + &asn_SPC_value_specs_544 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_542, memb_id_constraint_541 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2SetupReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_543, memb_criticality_constraint_541 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_544, + select_En_gNB_ENDCX2SetupReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_544, memb_value_constraint_541 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2SetupReqAckIEs_tag2el_541[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541 = { + sizeof(struct En_gNB_ENDCX2SetupReqAckIEs), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2SetupReqAckIEs_tag2el_541, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs = { + "En-gNB-ENDCX2SetupReqAckIEs", + "En-gNB-ENDCX2SetupReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541, + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_548[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, +}; +static const unsigned asn_MAP_value_to_canonical_548[] = { 2, 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_548[] = { 2, 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_548[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_548 = { + sizeof(struct ENDCX2SetupFailure_IEs__value), + offsetof(struct ENDCX2SetupFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupFailure_IEs__value, present), + sizeof(((struct ENDCX2SetupFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_548, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_548, + asn_MAP_value_from_canonical_548, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_548 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_548, + 3, /* Elements count */ + &asn_SPC_value_specs_548 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_IEs_545[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_546, memb_id_constraint_545 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_547, memb_criticality_constraint_545 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_548, + select_ENDCX2SetupFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_548, memb_value_constraint_545 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupFailure_IEs_tags_545[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupFailure_IEs_tag2el_545[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_IEs_specs_545 = { + sizeof(struct ENDCX2SetupFailure_IEs), + offsetof(struct ENDCX2SetupFailure_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupFailure_IEs_tag2el_545, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure_IEs = { + "ENDCX2SetupFailure-IEs", + "ENDCX2SetupFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupFailure_IEs_tags_545, + sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545) + /sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545[0]), /* 1 */ + asn_DEF_ENDCX2SetupFailure_IEs_tags_545, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545) + /sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupFailure_IEs_545, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupFailure_IEs_specs_545 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_552[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs__value, choice.InitiatingNodeType_EndcConfigUpdate), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcConfigUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcConfigUpdate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_552[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_552 = { + sizeof(struct ENDCConfigurationUpdate_IEs__value), + offsetof(struct ENDCConfigurationUpdate_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdate_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_552, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_552 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_552, + 1, /* Elements count */ + &asn_SPC_value_specs_552 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_IEs_549[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_550, memb_id_constraint_549 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_551, memb_criticality_constraint_549 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_552, + select_ENDCConfigurationUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_552, memb_value_constraint_549 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdate_IEs_tag2el_549[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_IEs_specs_549 = { + sizeof(struct ENDCConfigurationUpdate_IEs), + offsetof(struct ENDCConfigurationUpdate_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdate_IEs_tag2el_549, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate_IEs = { + "ENDCConfigurationUpdate-IEs", + "ENDCConfigurationUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdate_IEs_tags_549, + sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549) + /sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdate_IEs_tags_549, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549) + /sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdate_IEs_549, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdate_IEs_specs_549 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_556[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.CellAssistanceInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_CellAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAssistanceInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsToModifyListENDCConfUpd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsToModifyListENDCConfUpd" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsToDeleteListENDCConfUpd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsToDeleteListENDCConfUpd" + }, +}; +static const unsigned asn_MAP_value_to_canonical_556[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_556[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_556[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* ServedEUTRAcellsENDCX2ManagementList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* ServedEUTRAcellsToModifyListENDCConfUpd */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 }, /* ServedEUTRAcellsToDeleteListENDCConfUpd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* limited-list */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* full-list */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_556 = { + sizeof(struct ENB_ENDCConfigUpdateIEs__value), + offsetof(struct ENB_ENDCConfigUpdateIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCConfigUpdateIEs__value, present), + sizeof(((struct ENB_ENDCConfigUpdateIEs__value *)0)->present), + asn_MAP_value_tag2el_556, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_556, + asn_MAP_value_from_canonical_556, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_556 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_556, + 4, /* Elements count */ + &asn_SPC_value_specs_556 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateIEs_553[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_554, memb_id_constraint_553 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCConfigUpdateIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_555, memb_criticality_constraint_553 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_556, + select_ENB_ENDCConfigUpdateIEs_value_type, + { 0, &asn_PER_memb_value_constr_556, memb_value_constraint_553 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCConfigUpdateIEs_tag2el_553[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553 = { + sizeof(struct ENB_ENDCConfigUpdateIEs), + offsetof(struct ENB_ENDCConfigUpdateIEs, _asn_ctx), + asn_MAP_ENB_ENDCConfigUpdateIEs_tag2el_553, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateIEs = { + "ENB-ENDCConfigUpdateIEs", + "ENB-ENDCConfigUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553, + sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[0]), /* 1 */ + asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCConfigUpdateIEs_553, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_560[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsToModifyENDCConfUpdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsToModifyENDCConfUpdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsToModifyENDCConfUpdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsToDeleteENDCConfUpdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsToDeleteENDCConfUpdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsToDeleteENDCConfUpdList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_560[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* ServedNRcellsENDCX2ManagementList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ServedNRcellsToModifyENDCConfUpdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* ServedNRcellsToDeleteENDCConfUpdList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_560 = { + sizeof(struct En_gNB_ENDCConfigUpdateIEs__value), + offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, present), + sizeof(((struct En_gNB_ENDCConfigUpdateIEs__value *)0)->present), + asn_MAP_value_tag2el_560, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_560 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_560, + 3, /* Elements count */ + &asn_SPC_value_specs_560 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateIEs_557[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_558, memb_id_constraint_557 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCConfigUpdateIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_559, memb_criticality_constraint_557 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_560, + select_En_gNB_ENDCConfigUpdateIEs_value_type, + { 0, &asn_PER_memb_value_constr_560, memb_value_constraint_557 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCConfigUpdateIEs_tag2el_557[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557 = { + sizeof(struct En_gNB_ENDCConfigUpdateIEs), + offsetof(struct En_gNB_ENDCConfigUpdateIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCConfigUpdateIEs_tag2el_557, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateIEs = { + "En-gNB-ENDCConfigUpdateIEs", + "En-gNB-ENDCConfigUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557, + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[0]), /* 1 */ + asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCConfigUpdateIEs_557, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_564[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, choice.RespondingNodeType_EndcConfigUpdate), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcConfigUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcConfigUpdate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_564[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_564 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge_IEs__value), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_564, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_564 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_564, + 1, /* Elements count */ + &asn_SPC_value_specs_564 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_562, memb_id_constraint_561 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_563, memb_criticality_constraint_561 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_564, + select_ENDCConfigurationUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_564, memb_value_constraint_561 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateAcknowledge_IEs_tag2el_561[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge_IEs), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateAcknowledge_IEs_tag2el_561, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs = { + "ENDCConfigurationUpdateAcknowledge-IEs", + "ENDCConfigurationUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561, + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_value_specs_568 = { + sizeof(struct ENB_ENDCConfigUpdateAckIEs__value), + offsetof(struct ENB_ENDCConfigUpdateAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCConfigUpdateAckIEs__value, present), + sizeof(((struct ENB_ENDCConfigUpdateAckIEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_568 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_value_specs_568 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateAckIEs_565[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_566, memb_id_constraint_565 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_567, memb_criticality_constraint_565 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_568, + 0, + { 0, &asn_PER_memb_value_constr_568, memb_value_constraint_565 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCConfigUpdateAckIEs_tag2el_565[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565 = { + sizeof(struct ENB_ENDCConfigUpdateAckIEs), + offsetof(struct ENB_ENDCConfigUpdateAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCConfigUpdateAckIEs_tag2el_565, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateAckIEs = { + "ENB-ENDCConfigUpdateAckIEs", + "ENB-ENDCConfigUpdateAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565, + sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[0]), /* 1 */ + asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCConfigUpdateAckIEs_565, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_572[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_572[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_572 = { + sizeof(struct En_gNB_ENDCConfigUpdateAckIEs__value), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, present), + sizeof(((struct En_gNB_ENDCConfigUpdateAckIEs__value *)0)->present), + asn_MAP_value_tag2el_572, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_572 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_572, + 1, /* Elements count */ + &asn_SPC_value_specs_572 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_570, memb_id_constraint_569 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCConfigUpdateAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_571, memb_criticality_constraint_569 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_572, + select_En_gNB_ENDCConfigUpdateAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_572, memb_value_constraint_569 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCConfigUpdateAckIEs_tag2el_569[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569 = { + sizeof(struct En_gNB_ENDCConfigUpdateAckIEs), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCConfigUpdateAckIEs_tag2el_569, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs = { + "En-gNB-ENDCConfigUpdateAckIEs", + "En-gNB-ENDCConfigUpdateAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569, + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[0]), /* 1 */ + asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_576[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, +}; +static const unsigned asn_MAP_value_to_canonical_576[] = { 2, 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_576[] = { 2, 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_576[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_576 = { + sizeof(struct ENDCConfigurationUpdateFailure_IEs__value), + offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_576, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_576, + asn_MAP_value_from_canonical_576, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_576 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_576, + 3, /* Elements count */ + &asn_SPC_value_specs_576 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_IEs_573[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_574, memb_id_constraint_573 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_575, memb_criticality_constraint_573 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_576, + select_ENDCConfigurationUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_576, memb_value_constraint_573 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateFailure_IEs_tag2el_573[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573 = { + sizeof(struct ENDCConfigurationUpdateFailure_IEs), + offsetof(struct ENDCConfigurationUpdateFailure_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateFailure_IEs_tag2el_573, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure_IEs = { + "ENDCConfigurationUpdateFailure-IEs", + "ENDCConfigurationUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573, + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateFailure_IEs_573, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_580[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs__value, choice.ServedNRCellsToActivate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRCellsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_580[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_580[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_580[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedNRCellsToActivate */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_580 = { + sizeof(struct ENDCCellActivationRequest_IEs__value), + offsetof(struct ENDCCellActivationRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationRequest_IEs__value, present), + sizeof(((struct ENDCCellActivationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_580, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_580, + asn_MAP_value_from_canonical_580, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_580 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_580, + 2, /* Elements count */ + &asn_SPC_value_specs_580 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_IEs_577[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_578, memb_id_constraint_577 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_579, memb_criticality_constraint_577 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_580, + select_ENDCCellActivationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_580, memb_value_constraint_577 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationRequest_IEs_tags_577[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationRequest_IEs_tag2el_577[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_IEs_specs_577 = { + sizeof(struct ENDCCellActivationRequest_IEs), + offsetof(struct ENDCCellActivationRequest_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationRequest_IEs_tag2el_577, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest_IEs = { + "ENDCCellActivationRequest-IEs", + "ENDCCellActivationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationRequest_IEs_tags_577, + sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577) + /sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577[0]), /* 1 */ + asn_DEF_ENDCCellActivationRequest_IEs_tags_577, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577) + /sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationRequest_IEs_577, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationRequest_IEs_specs_577 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_584[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.ActivatedNRCellList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivatedNRCellList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_584[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_584[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_584[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ActivatedNRCellList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_584 = { + sizeof(struct ENDCCellActivationResponse_IEs__value), + offsetof(struct ENDCCellActivationResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationResponse_IEs__value, present), + sizeof(((struct ENDCCellActivationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_584, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_584, + asn_MAP_value_from_canonical_584, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_584 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_584, + 3, /* Elements count */ + &asn_SPC_value_specs_584 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_IEs_581[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_582, memb_id_constraint_581 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_583, memb_criticality_constraint_581 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_584, + select_ENDCCellActivationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_584, memb_value_constraint_581 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationResponse_IEs_tags_581[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationResponse_IEs_tag2el_581[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_IEs_specs_581 = { + sizeof(struct ENDCCellActivationResponse_IEs), + offsetof(struct ENDCCellActivationResponse_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationResponse_IEs_tag2el_581, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse_IEs = { + "ENDCCellActivationResponse-IEs", + "ENDCCellActivationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationResponse_IEs_tags_581, + sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581) + /sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581[0]), /* 1 */ + asn_DEF_ENDCCellActivationResponse_IEs_tags_581, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581) + /sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationResponse_IEs_581, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationResponse_IEs_specs_581 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_588[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_588[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_588[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_588[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_588 = { + sizeof(struct ENDCCellActivationFailure_IEs__value), + offsetof(struct ENDCCellActivationFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationFailure_IEs__value, present), + sizeof(((struct ENDCCellActivationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_588, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_588, + asn_MAP_value_from_canonical_588, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_588 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_588, + 3, /* Elements count */ + &asn_SPC_value_specs_588 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_IEs_585[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_586, memb_id_constraint_585 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_587, memb_criticality_constraint_585 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_588, + select_ENDCCellActivationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_588, memb_value_constraint_585 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationFailure_IEs_tags_585[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationFailure_IEs_tag2el_585[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_IEs_specs_585 = { + sizeof(struct ENDCCellActivationFailure_IEs), + offsetof(struct ENDCCellActivationFailure_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationFailure_IEs_tag2el_585, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure_IEs = { + "ENDCCellActivationFailure-IEs", + "ENDCCellActivationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationFailure_IEs_tags_585, + sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585) + /sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585[0]), /* 1 */ + asn_DEF_ENDCCellActivationFailure_IEs_tags_585, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585) + /sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationFailure_IEs_585, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationFailure_IEs_specs_585 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_592[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.SecondaryRATUsageReportList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecondaryRATUsageReportList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_592[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_592[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_592[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* SecondaryRATUsageReportList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_592 = { + sizeof(struct SecondaryRATDataUsageReport_IEs__value), + offsetof(struct SecondaryRATDataUsageReport_IEs__value, _asn_ctx), + offsetof(struct SecondaryRATDataUsageReport_IEs__value, present), + sizeof(((struct SecondaryRATDataUsageReport_IEs__value *)0)->present), + asn_MAP_value_tag2el_592, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_592, + asn_MAP_value_from_canonical_592, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_592 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_592, + 4, /* Elements count */ + &asn_SPC_value_specs_592 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_IEs_589[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_590, memb_id_constraint_589 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SecondaryRATDataUsageReport_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_591, memb_criticality_constraint_589 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_592, + select_SecondaryRATDataUsageReport_IEs_value_type, + { 0, &asn_PER_memb_value_constr_592, memb_value_constraint_589 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATDataUsageReport_IEs_tag2el_589[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589 = { + sizeof(struct SecondaryRATDataUsageReport_IEs), + offsetof(struct SecondaryRATDataUsageReport_IEs, _asn_ctx), + asn_MAP_SecondaryRATDataUsageReport_IEs_tag2el_589, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport_IEs = { + "SecondaryRATDataUsageReport-IEs", + "SecondaryRATDataUsageReport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589, + sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[0]), /* 1 */ + asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589, /* Same as above */ + sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATDataUsageReport_IEs_589, + 3, /* Elements count */ + &asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_596[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UserPlaneTrafficActivityReport), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UserPlaneTrafficActivityReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UserPlaneTrafficActivityReport" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.ERABActivityNotifyItemList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItemList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ERABActivityNotifyItemList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_596[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_596[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_596[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* UserPlaneTrafficActivityReport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* ERABActivityNotifyItemList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_596 = { + sizeof(struct SgNBActivityNotification_IEs__value), + offsetof(struct SgNBActivityNotification_IEs__value, _asn_ctx), + offsetof(struct SgNBActivityNotification_IEs__value, present), + sizeof(((struct SgNBActivityNotification_IEs__value *)0)->present), + asn_MAP_value_tag2el_596, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_596, + asn_MAP_value_from_canonical_596, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_596 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_596, + 5, /* Elements count */ + &asn_SPC_value_specs_596 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBActivityNotification_IEs_593[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_594, memb_id_constraint_593 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBActivityNotification_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_595, memb_criticality_constraint_593 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_596, + select_SgNBActivityNotification_IEs_value_type, + { 0, &asn_PER_memb_value_constr_596, memb_value_constraint_593 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBActivityNotification_IEs_tags_593[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBActivityNotification_IEs_tag2el_593[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_IEs_specs_593 = { + sizeof(struct SgNBActivityNotification_IEs), + offsetof(struct SgNBActivityNotification_IEs, _asn_ctx), + asn_MAP_SgNBActivityNotification_IEs_tag2el_593, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification_IEs = { + "SgNBActivityNotification-IEs", + "SgNBActivityNotification-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBActivityNotification_IEs_tags_593, + sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593) + /sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593[0]), /* 1 */ + asn_DEF_SgNBActivityNotification_IEs_tags_593, /* Same as above */ + sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593) + /sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBActivityNotification_IEs_593, + 3, /* Elements count */ + &asn_SPC_SgNBActivityNotification_IEs_specs_593 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_600[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs__value, choice.UEsToBeResetList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEsToBeResetList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_600[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* UEsToBeResetList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_600 = { + sizeof(struct ENDCPartialResetRequired_IEs__value), + offsetof(struct ENDCPartialResetRequired_IEs__value, _asn_ctx), + offsetof(struct ENDCPartialResetRequired_IEs__value, present), + sizeof(((struct ENDCPartialResetRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_600, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_600 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_600, + 2, /* Elements count */ + &asn_SPC_value_specs_600 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_IEs_597[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_598, memb_id_constraint_597 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCPartialResetRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_599, memb_criticality_constraint_597 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_600, + select_ENDCPartialResetRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_600, memb_value_constraint_597 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetRequired_IEs_tags_597[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetRequired_IEs_tag2el_597[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_IEs_specs_597 = { + sizeof(struct ENDCPartialResetRequired_IEs), + offsetof(struct ENDCPartialResetRequired_IEs, _asn_ctx), + asn_MAP_ENDCPartialResetRequired_IEs_tag2el_597, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired_IEs = { + "ENDCPartialResetRequired-IEs", + "ENDCPartialResetRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetRequired_IEs_tags_597, + sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597) + /sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597[0]), /* 1 */ + asn_DEF_ENDCPartialResetRequired_IEs_tags_597, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597) + /sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetRequired_IEs_597, + 3, /* Elements count */ + &asn_SPC_ENDCPartialResetRequired_IEs_specs_597 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_604[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs__value, choice.UEsToBeResetList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEsToBeResetList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_604[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UEsToBeResetList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_604 = { + sizeof(struct ENDCPartialResetConfirm_IEs__value), + offsetof(struct ENDCPartialResetConfirm_IEs__value, _asn_ctx), + offsetof(struct ENDCPartialResetConfirm_IEs__value, present), + sizeof(((struct ENDCPartialResetConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_604, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_604 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_604, + 1, /* Elements count */ + &asn_SPC_value_specs_604 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_IEs_601[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_602, memb_id_constraint_601 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCPartialResetConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_603, memb_criticality_constraint_601 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_604, + select_ENDCPartialResetConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_604, memb_value_constraint_601 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetConfirm_IEs_tag2el_601[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_IEs_specs_601 = { + sizeof(struct ENDCPartialResetConfirm_IEs), + offsetof(struct ENDCPartialResetConfirm_IEs, _asn_ctx), + asn_MAP_ENDCPartialResetConfirm_IEs_tag2el_601, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm_IEs = { + "ENDCPartialResetConfirm-IEs", + "ENDCPartialResetConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetConfirm_IEs_tags_601, + sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601) + /sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[0]), /* 1 */ + asn_DEF_ENDCPartialResetConfirm_IEs_tags_601, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601) + /sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetConfirm_IEs_601, + 3, /* Elements count */ + &asn_SPC_ENDCPartialResetConfirm_IEs_specs_601 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_608[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, choice.InitiatingNodeType_EutranrCellResourceCoordination), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EutranrCellResourceCoordination" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_608[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiate-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* initiate-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_608 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest_IEs__value), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, _asn_ctx), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, present), + sizeof(((struct EUTRANRCellResourceCoordinationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_608, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_608 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_608, + 1, /* Elements count */ + &asn_SPC_value_specs_608 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_606, memb_id_constraint_605 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_EUTRANRCellResourceCoordinationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_607, memb_criticality_constraint_605 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_608, + select_EUTRANRCellResourceCoordinationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_608, memb_value_constraint_605 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationRequest_IEs_tag2el_605[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest_IEs), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationRequest_IEs_tag2el_605, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs = { + "EUTRANRCellResourceCoordinationRequest-IEs", + "EUTRANRCellResourceCoordinationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605, + 3, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_612[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofEUTRACellsinEUTRACoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinEUTRACoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinEUTRACoordinationReq" + }, +}; +static const unsigned asn_MAP_value_to_canonical_612[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_612[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_612[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofEUTRACellsinEUTRACoordinationReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_612 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, _asn_ctx), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, present), + sizeof(((struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value *)0)->present), + asn_MAP_value_tag2el_612, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_612, + asn_MAP_value_from_canonical_612, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_612 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_612, + 3, /* Elements count */ + &asn_SPC_value_specs_612 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_610, memb_id_constraint_609 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_611, memb_criticality_constraint_609 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_612, + select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_612, memb_value_constraint_609 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_609[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, _asn_ctx), + asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_609, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs = { + "ENB-EUTRA-NRCellResourceCoordinationReqIEs", + "ENB-EUTRA-NRCellResourceCoordinationReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609, + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[0]), /* 1 */ + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609, /* Same as above */ + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609, + 3, /* Elements count */ + &asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_616[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofEUTRACellsinNRCoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinNRCoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinNRCoordinationReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofNRCellsinNRCoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofNRCellsinNRCoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofNRCellsinNRCoordinationReq" + }, +}; +static const unsigned asn_MAP_value_to_canonical_616[] = { 2, 0, 1, 3 }; +static const unsigned asn_MAP_value_from_canonical_616[] = { 1, 2, 0, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_616[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ListofEUTRACellsinNRCoordinationReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* ListofNRCellsinNRCoordinationReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_616 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, present), + sizeof(((struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value *)0)->present), + asn_MAP_value_tag2el_616, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_616, + asn_MAP_value_from_canonical_616, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_616 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_616, + 4, /* Elements count */ + &asn_SPC_value_specs_616 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_614, memb_id_constraint_613 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_615, memb_criticality_constraint_613 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_616, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_616, memb_value_constraint_613 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_613[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, _asn_ctx), + asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_613, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs = { + "En-gNB-EUTRA-NRCellResourceCoordinationReqIEs", + "En-gNB-EUTRA-NRCellResourceCoordinationReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613, + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[0]), /* 1 */ + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613, /* Same as above */ + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613, + 3, /* Elements count */ + &asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_620[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, choice.RespondingNodeType_EutranrCellResourceCoordination), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EutranrCellResourceCoordination, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EutranrCellResourceCoordination" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_620[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_620 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse_IEs__value), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, _asn_ctx), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, present), + sizeof(((struct EUTRANRCellResourceCoordinationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_620, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_620 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_620, + 1, /* Elements count */ + &asn_SPC_value_specs_620 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_618, memb_id_constraint_617 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_EUTRANRCellResourceCoordinationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_619, memb_criticality_constraint_617 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_620, + select_EUTRANRCellResourceCoordinationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_620, memb_value_constraint_617 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationResponse_IEs_tag2el_617[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse_IEs), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationResponse_IEs_tag2el_617, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs = { + "EUTRANRCellResourceCoordinationResponse-IEs", + "EUTRANRCellResourceCoordinationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617, + 3, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_624[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.ListofEUTRACellsinEUTRACoordinationResp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinEUTRACoordinationResp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinEUTRACoordinationResp" + }, +}; +static const unsigned asn_MAP_value_to_canonical_624[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_624[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_624[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofEUTRACellsinEUTRACoordinationResp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_624 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, present), + sizeof(((struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_624, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_624, + asn_MAP_value_from_canonical_624, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_624 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_624, + 3, /* Elements count */ + &asn_SPC_value_specs_624 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_622, memb_id_constraint_621 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_623, memb_criticality_constraint_621 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_624, + select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_624, memb_value_constraint_621 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_621[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, _asn_ctx), + asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_621, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs = { + "ENB-EUTRA-NRCellResourceCoordinationReqAckIEs", + "ENB-EUTRA-NRCellResourceCoordinationReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621, + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[0]), /* 1 */ + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621, /* Same as above */ + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621, + 3, /* Elements count */ + &asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_628[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.ListofNRCellsinNRCoordinationResp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofNRCellsinNRCoordinationResp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofNRCellsinNRCoordinationResp" + }, +}; +static const unsigned asn_MAP_value_to_canonical_628[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_628[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_628[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofNRCellsinNRCoordinationResp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_628 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, present), + sizeof(((struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_628, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_628, + asn_MAP_value_from_canonical_628, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_628 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_628, + 3, /* Elements count */ + &asn_SPC_value_specs_628 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_626, memb_id_constraint_625 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_627, memb_criticality_constraint_625 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_628, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_628, memb_value_constraint_625 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_625[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_625, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs = { + "En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs", + "En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625, + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[0]), /* 1 */ + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625, /* Same as above */ + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625, + 3, /* Elements count */ + &asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_632[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs__value, choice.InitiatingNodeType_EndcX2Removal), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcX2Removal, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcX2Removal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_632[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_632 = { + sizeof(struct ENDCX2RemovalRequest_IEs__value), + offsetof(struct ENDCX2RemovalRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalRequest_IEs__value, present), + sizeof(((struct ENDCX2RemovalRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_632, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_632 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_632, + 1, /* Elements count */ + &asn_SPC_value_specs_632 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_IEs_629[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_630, memb_id_constraint_629 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_631, memb_criticality_constraint_629 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_632, + select_ENDCX2RemovalRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_632, memb_value_constraint_629 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalRequest_IEs_tag2el_629[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_IEs_specs_629 = { + sizeof(struct ENDCX2RemovalRequest_IEs), + offsetof(struct ENDCX2RemovalRequest_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalRequest_IEs_tag2el_629, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest_IEs = { + "ENDCX2RemovalRequest-IEs", + "ENDCX2RemovalRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalRequest_IEs_tags_629, + sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629) + /sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[0]), /* 1 */ + asn_DEF_ENDCX2RemovalRequest_IEs_tags_629, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629) + /sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalRequest_IEs_629, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalRequest_IEs_specs_629 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_636[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_636[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_636 = { + sizeof(struct ENB_ENDCX2RemovalReqIEs__value), + offsetof(struct ENB_ENDCX2RemovalReqIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2RemovalReqIEs__value, present), + sizeof(((struct ENB_ENDCX2RemovalReqIEs__value *)0)->present), + asn_MAP_value_tag2el_636, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_636 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_636, + 1, /* Elements count */ + &asn_SPC_value_specs_636 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqIEs_633[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_634, memb_id_constraint_633 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2RemovalReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_635, memb_criticality_constraint_633 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_636, + select_ENB_ENDCX2RemovalReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_636, memb_value_constraint_633 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2RemovalReqIEs_tag2el_633[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633 = { + sizeof(struct ENB_ENDCX2RemovalReqIEs), + offsetof(struct ENB_ENDCX2RemovalReqIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2RemovalReqIEs_tag2el_633, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqIEs = { + "ENB-ENDCX2RemovalReqIEs", + "ENB-ENDCX2RemovalReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633, + sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[0]), /* 1 */ + asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2RemovalReqIEs_633, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_640[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_640[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalGNB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_640 = { + sizeof(struct En_gNB_ENDCX2RemovalReqIEs__value), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, present), + sizeof(((struct En_gNB_ENDCX2RemovalReqIEs__value *)0)->present), + asn_MAP_value_tag2el_640, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_640 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_640, + 1, /* Elements count */ + &asn_SPC_value_specs_640 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_638, memb_id_constraint_637 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2RemovalReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_639, memb_criticality_constraint_637 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_640, + select_En_gNB_ENDCX2RemovalReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_640, memb_value_constraint_637 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2RemovalReqIEs_tag2el_637[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637 = { + sizeof(struct En_gNB_ENDCX2RemovalReqIEs), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2RemovalReqIEs_tag2el_637, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs = { + "En-gNB-ENDCX2RemovalReqIEs", + "En-gNB-ENDCX2RemovalReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637, + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_644[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs__value, choice.RespondingNodeType_EndcX2Removal), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcX2Removal, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcX2Removal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_644[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_644 = { + sizeof(struct ENDCX2RemovalResponse_IEs__value), + offsetof(struct ENDCX2RemovalResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalResponse_IEs__value, present), + sizeof(((struct ENDCX2RemovalResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_644, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_644 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_644, + 1, /* Elements count */ + &asn_SPC_value_specs_644 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_IEs_641[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_642, memb_id_constraint_641 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_643, memb_criticality_constraint_641 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_644, + select_ENDCX2RemovalResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_644, memb_value_constraint_641 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalResponse_IEs_tag2el_641[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_IEs_specs_641 = { + sizeof(struct ENDCX2RemovalResponse_IEs), + offsetof(struct ENDCX2RemovalResponse_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalResponse_IEs_tag2el_641, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse_IEs = { + "ENDCX2RemovalResponse-IEs", + "ENDCX2RemovalResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalResponse_IEs_tags_641, + sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641) + /sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[0]), /* 1 */ + asn_DEF_ENDCX2RemovalResponse_IEs_tags_641, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641) + /sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalResponse_IEs_641, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalResponse_IEs_specs_641 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_648[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_648[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_648 = { + sizeof(struct ENB_ENDCX2RemovalReqAckIEs__value), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, present), + sizeof(((struct ENB_ENDCX2RemovalReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_648, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_648 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_648, + 1, /* Elements count */ + &asn_SPC_value_specs_648 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_646, memb_id_constraint_645 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2RemovalReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_647, memb_criticality_constraint_645 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_648, + select_ENB_ENDCX2RemovalReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_648, memb_value_constraint_645 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2RemovalReqAckIEs_tag2el_645[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645 = { + sizeof(struct ENB_ENDCX2RemovalReqAckIEs), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2RemovalReqAckIEs_tag2el_645, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs = { + "ENB-ENDCX2RemovalReqAckIEs", + "ENB-ENDCX2RemovalReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645, + sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[0]), /* 1 */ + asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_652[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_652[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalGNB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_652 = { + sizeof(struct En_gNB_ENDCX2RemovalReqAckIEs__value), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, present), + sizeof(((struct En_gNB_ENDCX2RemovalReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_652, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_652 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_652, + 1, /* Elements count */ + &asn_SPC_value_specs_652 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_650, memb_id_constraint_649 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2RemovalReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_651, memb_criticality_constraint_649 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_652, + select_En_gNB_ENDCX2RemovalReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_652, memb_value_constraint_649 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2RemovalReqAckIEs_tag2el_649[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649 = { + sizeof(struct En_gNB_ENDCX2RemovalReqAckIEs), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2RemovalReqAckIEs_tag2el_649, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs = { + "En-gNB-ENDCX2RemovalReqAckIEs", + "En-gNB-ENDCX2RemovalReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649, + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_656[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_656[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_656[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_656[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_656 = { + sizeof(struct ENDCX2RemovalFailure_IEs__value), + offsetof(struct ENDCX2RemovalFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalFailure_IEs__value, present), + sizeof(((struct ENDCX2RemovalFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_656, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_656, + asn_MAP_value_from_canonical_656, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_656 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_656, + 2, /* Elements count */ + &asn_SPC_value_specs_656 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_IEs_653[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_654, memb_id_constraint_653 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_655, memb_criticality_constraint_653 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_656, + select_ENDCX2RemovalFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_656, memb_value_constraint_653 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalFailure_IEs_tag2el_653[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_IEs_specs_653 = { + sizeof(struct ENDCX2RemovalFailure_IEs), + offsetof(struct ENDCX2RemovalFailure_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalFailure_IEs_tag2el_653, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure_IEs = { + "ENDCX2RemovalFailure-IEs", + "ENDCX2RemovalFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalFailure_IEs_tags_653, + sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653) + /sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[0]), /* 1 */ + asn_DEF_ENDCX2RemovalFailure_IEs_tags_653, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653) + /sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalFailure_IEs_653, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalFailure_IEs_specs_653 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_660[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.E_RABs_DataForwardingAddress_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-DataForwardingAddress-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_660[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABs-DataForwardingAddress-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_660 = { + sizeof(struct DataForwardingAddressIndication_IEs__value), + offsetof(struct DataForwardingAddressIndication_IEs__value, _asn_ctx), + offsetof(struct DataForwardingAddressIndication_IEs__value, present), + sizeof(((struct DataForwardingAddressIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_660, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_660 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_660, + 3, /* Elements count */ + &asn_SPC_value_specs_660 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_IEs_657[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_658, memb_id_constraint_657 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_DataForwardingAddressIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_659, memb_criticality_constraint_657 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_660, + select_DataForwardingAddressIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_660, memb_value_constraint_657 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataForwardingAddressIndication_IEs_tags_657[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataForwardingAddressIndication_IEs_tag2el_657[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_IEs_specs_657 = { + sizeof(struct DataForwardingAddressIndication_IEs), + offsetof(struct DataForwardingAddressIndication_IEs, _asn_ctx), + asn_MAP_DataForwardingAddressIndication_IEs_tag2el_657, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication_IEs = { + "DataForwardingAddressIndication-IEs", + "DataForwardingAddressIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_DataForwardingAddressIndication_IEs_tags_657, + sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657) + /sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657[0]), /* 1 */ + asn_DEF_DataForwardingAddressIndication_IEs_tags_657, /* Same as above */ + sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657) + /sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataForwardingAddressIndication_IEs_657, + 3, /* Elements count */ + &asn_SPC_DataForwardingAddressIndication_IEs_specs_657 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_664[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs__value, choice.GNBOverloadInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_GNBOverloadInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GNBOverloadInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_664[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* GNBOverloadInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_664 = { + sizeof(struct GNBStatusIndicationIEs__value), + offsetof(struct GNBStatusIndicationIEs__value, _asn_ctx), + offsetof(struct GNBStatusIndicationIEs__value, present), + sizeof(((struct GNBStatusIndicationIEs__value *)0)->present), + asn_MAP_value_tag2el_664, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_664 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_664, + 1, /* Elements count */ + &asn_SPC_value_specs_664 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GNBStatusIndicationIEs_661[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_662, memb_id_constraint_661 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_GNBStatusIndicationIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_663, memb_criticality_constraint_661 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_664, + select_GNBStatusIndicationIEs_value_type, + { 0, &asn_PER_memb_value_constr_664, memb_value_constraint_661 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_GNBStatusIndicationIEs_tags_661[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GNBStatusIndicationIEs_tag2el_661[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndicationIEs_specs_661 = { + sizeof(struct GNBStatusIndicationIEs), + offsetof(struct GNBStatusIndicationIEs, _asn_ctx), + asn_MAP_GNBStatusIndicationIEs_tag2el_661, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GNBStatusIndicationIEs = { + "GNBStatusIndicationIEs", + "GNBStatusIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_GNBStatusIndicationIEs_tags_661, + sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661) + /sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661[0]), /* 1 */ + asn_DEF_GNBStatusIndicationIEs_tags_661, /* Same as above */ + sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661) + /sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GNBStatusIndicationIEs_661, + 3, /* Elements count */ + &asn_SPC_GNBStatusIndicationIEs_specs_661 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_668[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs__value, choice.E_RAB_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_668[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RAB-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_668 = { + sizeof(struct E_RAB_ItemIEs__value), + offsetof(struct E_RAB_ItemIEs__value, _asn_ctx), + offsetof(struct E_RAB_ItemIEs__value, present), + sizeof(((struct E_RAB_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_668, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_668 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_668, + 1, /* Elements count */ + &asn_SPC_value_specs_668 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_ItemIEs_665[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_666, memb_id_constraint_665 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RAB_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_667, memb_criticality_constraint_665 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_668, + select_E_RAB_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_668, memb_value_constraint_665 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_ItemIEs_tags_665[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_ItemIEs_tag2el_665[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_ItemIEs_specs_665 = { + sizeof(struct E_RAB_ItemIEs), + offsetof(struct E_RAB_ItemIEs, _asn_ctx), + asn_MAP_E_RAB_ItemIEs_tag2el_665, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_ItemIEs = { + "E-RAB-ItemIEs", + "E-RAB-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_ItemIEs_tags_665, + sizeof(asn_DEF_E_RAB_ItemIEs_tags_665) + /sizeof(asn_DEF_E_RAB_ItemIEs_tags_665[0]), /* 1 */ + asn_DEF_E_RAB_ItemIEs_tags_665, /* Same as above */ + sizeof(asn_DEF_E_RAB_ItemIEs_tags_665) + /sizeof(asn_DEF_E_RAB_ItemIEs_tags_665[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_ItemIEs_665, + 3, /* Elements count */ + &asn_SPC_E_RAB_ItemIEs_specs_665 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_672[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs__value, choice.E_RABUsageReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABUsageReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABUsageReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_672[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABUsageReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_672 = { + sizeof(struct E_RABUsageReport_ItemIEs__value), + offsetof(struct E_RABUsageReport_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABUsageReport_ItemIEs__value, present), + sizeof(((struct E_RABUsageReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_672, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_672 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_672, + 1, /* Elements count */ + &asn_SPC_value_specs_672 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_ItemIEs_669[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_670, memb_id_constraint_669 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RABUsageReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_671, memb_criticality_constraint_669 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_672, + select_E_RABUsageReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_672, memb_value_constraint_669 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_ItemIEs_tags_669[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_ItemIEs_tag2el_669[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_ItemIEs_specs_669 = { + sizeof(struct E_RABUsageReport_ItemIEs), + offsetof(struct E_RABUsageReport_ItemIEs, _asn_ctx), + asn_MAP_E_RABUsageReport_ItemIEs_tag2el_669, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_ItemIEs = { + "E-RABUsageReport-ItemIEs", + "E-RABUsageReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_ItemIEs_tags_669, + sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669) + /sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669[0]), /* 1 */ + asn_DEF_E_RABUsageReport_ItemIEs_tags_669, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669) + /sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_ItemIEs_669, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_ItemIEs_specs_669 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_676[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs__value, choice.SecondaryRATUsageReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecondaryRATUsageReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_676[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* SecondaryRATUsageReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_676 = { + sizeof(struct SecondaryRATUsageReport_ItemIEs__value), + offsetof(struct SecondaryRATUsageReport_ItemIEs__value, _asn_ctx), + offsetof(struct SecondaryRATUsageReport_ItemIEs__value, present), + sizeof(((struct SecondaryRATUsageReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_676, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_676 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_676, + 1, /* Elements count */ + &asn_SPC_value_specs_676 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_ItemIEs_673[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_674, memb_id_constraint_673 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_SecondaryRATUsageReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_675, memb_criticality_constraint_673 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_676, + select_SecondaryRATUsageReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_676, memb_value_constraint_673 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_ItemIEs_tag2el_673[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 = { + sizeof(struct SecondaryRATUsageReport_ItemIEs), + offsetof(struct SecondaryRATUsageReport_ItemIEs, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_ItemIEs_tag2el_673, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_ItemIEs = { + "SecondaryRATUsageReport-ItemIEs", + "SecondaryRATUsageReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673, + sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673) + /sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673) + /sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_ItemIEs_673, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.h new file mode 100644 index 0000000..fa7ef2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Field.h @@ -0,0 +1,4904 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICaction-ToBeSetup-Item.h" +#include "Presence.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "RICaction-Admitted-Item.h" +#include "RICaction-NotAdmitted-Item.h" +#include "RANfunction-Item.h" +#include "RANfunctionID-Item.h" +#include "RANfunctionIDcause-Item.h" +#include "E-RABs-ToBeSetup-Item.h" +#include "E-RABs-Admitted-Item.h" +#include "E-RABs-SubjectToStatusTransfer-Item.h" +#include "CellInformation-Item.h" +#include "CellToReport-Item.h" +#include "MeasurementInitiationResult-Item.h" +#include "MeasurementFailureCause-Item.h" +#include "CompleteFailureCauseInformation-Item.h" +#include "CellMeasurementResult-Item.h" +#include "E-RABs-ToBeAdded-Item.h" +#include "E-RABs-Admitted-ToBeAdded-Item.h" +#include "E-RABs-ToBeAdded-ModReqItem.h" +#include "E-RABs-ToBeModified-ModReqItem.h" +#include "E-RABs-ToBeReleased-ModReqItem.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckItem.h" +#include "E-RABs-Admitted-ToBeModified-ModAckItem.h" +#include "E-RABs-Admitted-ToReleased-ModAckItem.h" +#include "E-RABs-ToBeReleased-ModReqdItem.h" +#include "E-RABs-ToBeReleased-RelReqItem.h" +#include "E-RABs-ToBeReleased-RelConfItem.h" +#include "E-RABs-SubjectToCounterCheckItem.h" +#include "E-RABs-ToBeSetupRetrieve-Item.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h" +#include "E-RABs-Admitted-ToReleased-SgNBModAck-Item.h" +#include "E-RABs-ToBeReleased-SgNBModReqd-Item.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelReqd-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item.h" +#include "E-RABs-SubjectToSgNBCounterCheck-Item.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item.h" +#include "E-RABs-DataForwardingAddress-Item.h" +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "RICsubscription.h" +#include "RICaction-Admitted-List.h" +#include "RICaction-NotAdmitted-List.h" +#include "CriticalityDiagnostics.h" +#include "RICcause.h" +#include "RICactionID.h" +#include "RICindicationSN.h" +#include "RICindicationType.h" +#include "RICindicationHeader.h" +#include "RICindicationMessage.h" +#include "RICcallProcessID.h" +#include "RICcontrolHeader.h" +#include "RICcontrolMessage.h" +#include "RICcontrolAckRequest.h" +#include "RICcontrolStatus.h" +#include "RANfunctions-List.h" +#include "RANfunctionsID-List.h" +#include "RANfunctionsIDcause-List.h" +#include "TimeToWait.h" +#include "UE-X2AP-ID.h" +#include "Cause.h" +#include "ECGI.h" +#include "GUMMEI.h" +#include "UE-ContextInformation.h" +#include "UE-HistoryInformation.h" +#include "TraceActivation.h" +#include "SRVCCOperationPossible.h" +#include "CSGMembershipStatus.h" +#include "MobilityInformation.h" +#include "Masked-IMEISV.h" +#include "UE-HistoryInformationFromTheUE.h" +#include "ExpectedUEBehaviour.h" +#include "ProSeAuthorized.h" +#include "UE-ContextReferenceAtSeNB.h" +#include "UE-X2AP-ID-Extension.h" +#include "V2XServicesAuthorized.h" +#include "UE-ContextReferenceAtWT.h" +#include "NRUESecurityCapabilities.h" +#include "UE-ContextReferenceAtSgNB.h" +#include "AerialUEsubscriptionInformation.h" +#include "Subscription-Based-UE-DifferentiationInfo.h" +#include "E-RABs-Admitted-List.h" +#include "E-RAB-List.h" +#include "TargeteNBtoSource-eNBTransparentContainer.h" +#include "UE-ContextKeptIndicator.h" +#include "HandoverReportType.h" +#include "TargetCellInUTRAN.h" +#include "CRNTI.h" +#include "UE-RLF-Report-Container.h" +#include "UE-RLF-Report-Container-for-extended-bands.h" +#include "E-RABs-SubjectToStatusTransfer-List.h" +#include "SgNB-UE-X2AP-ID.h" +#include "SIPTOBearerDeactivationIndication.h" +#include "GlobalENB-ID.h" +#include "ServedCells.h" +#include "GUGroupIDList.h" +#include "LHN-ID.h" +#include "CellInformation-List.h" +#include "ServedCellsToModify.h" +#include "Old-ECGIs.h" +#include "CoverageModificationList.h" +#include "Measurement-ID.h" +#include "Registration-Request.h" +#include "ReportCharacteristics.h" +#include "CellToReport-List.h" +#include "ReportingPeriodicity.h" +#include "PartialSuccessIndicator.h" +#include "ReportingPeriodicityRSRPMR.h" +#include "ReportingPeriodicityCSIR.h" +#include "MeasurementInitiationResult-List.h" +#include "CompleteFailureCauseInformation-List.h" +#include "CellMeasurementResult-List.h" +#include "MobilityParametersInformation.h" +#include "MobilityParametersModificationRange.h" +#include "PCI.h" +#include "ShortMAC-I.h" +#include "RRCConnSetupIndicator.h" +#include "RRCConnReestabIndicator.h" +#include "ServedCellsToActivate.h" +#include "ActivatedCellList.h" +#include "RNL-Header.h" +#include "X2AP-Message.h" +#include "UESecurityCapabilities.h" +#include "SeNBSecurityKey.h" +#include "UEAggregateMaximumBitRate.h" +#include "PLMN-Identity.h" +#include "E-RABs-ToBeAdded-List.h" +#include "MeNBtoSeNBContainer.h" +#include "E-RABs-Admitted-ToBeAdded-List.h" +#include "SeNBtoMeNBContainer.h" +#include "TransportLayerAddress.h" +#include "TunnelInformation.h" +#include "ResponseInformationSeNBReconfComp.h" +#include "SCGChangeIndication.h" +#include "UE-ContextInformationSeNBModReq.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckList.h" +#include "E-RABs-Admitted-ToBeModified-ModAckList.h" +#include "E-RABs-Admitted-ToBeReleased-ModAckList.h" +#include "E-RABs-ToBeReleased-ModReqd.h" +#include "E-RABs-ToBeReleased-List-RelReq.h" +#include "MakeBeforeBreakIndicator.h" +#include "E-RABs-ToBeReleased-List-RelConf.h" +#include "E-RABs-SubjectToCounterCheck-List.h" +#include "X2BenefitValue.h" +#include "ResumeID.h" +#include "EUTRANCellIdentifier.h" +#include "UE-ContextInformationRetrieve.h" +#include "SgNBSecurityKey.h" +#include "HandoverRestrictionList.h" +#include "E-RABs-ToBeAdded-SgNBAddReqList.h" +#include "MeNBtoSgNBContainer.h" +#include "SplitSRBs.h" +#include "MeNBResourceCoordinationInformation.h" +#include "SGNB-Addition-Trigger-Ind.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h" +#include "SgNBtoMeNBContainer.h" +#include "SgNBResourceCoordinationInformation.h" +#include "RRC-Config-Ind.h" +#include "ResponseInformationSgNBReconfComp.h" +#include "SCGConfigurationQuery.h" +#include "UE-ContextInformation-SgNBModReq.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAckList.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAckList.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAckList.h" +#include "PDCPChangeIndication.h" +#include "E-RABs-ToBeReleased-SgNBModReqdList.h" +#include "E-RABs-ToBeModified-SgNBModReqdList.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConfList.h" +#include "E-RABs-ToBeReleased-SgNBRelReqList.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h" +#include "E-RABs-ToBeReleased-SgNBRelReqdList.h" +#include "E-RABs-ToBeReleased-SgNBRelConfList.h" +#include "E-RABs-SubjectToSgNBCounterCheck-List.h" +#include "GlobalGNB-ID.h" +#include "E-RABs-ToBeReleased-SgNBChaConfList.h" +#include "SplitSRB.h" +#include "UENRMeasurement.h" +#include "InitiatingNodeType-EndcX2Setup.h" +#include "ServedEUTRAcellsENDCX2ManagementList.h" +#include "ServedNRcellsENDCX2ManagementList.h" +#include "RespondingNodeType-EndcX2Setup.h" +#include "InitiatingNodeType-EndcConfigUpdate.h" +#include "CellAssistanceInformation.h" +#include "ServedEUTRAcellsToModifyListENDCConfUpd.h" +#include "ServedEUTRAcellsToDeleteListENDCConfUpd.h" +#include "ServedNRcellsToModifyENDCConfUpdList.h" +#include "ServedNRcellsToDeleteENDCConfUpdList.h" +#include "RespondingNodeType-EndcConfigUpdate.h" +#include "ServedNRCellsToActivate.h" +#include "ActivationID.h" +#include "ActivatedNRCellList.h" +#include "SecondaryRATUsageReportList.h" +#include "UserPlaneTrafficActivityReport.h" +#include "ERABActivityNotifyItemList.h" +#include "UEsToBeResetList.h" +#include "InitiatingNodeType-EutranrCellResourceCoordination.h" +#include "DataTrafficResourceIndication.h" +#include "SpectrumSharingGroupID.h" +#include "ListofEUTRACellsinEUTRACoordinationReq.h" +#include "ListofEUTRACellsinNRCoordinationReq.h" +#include "ListofNRCellsinNRCoordinationReq.h" +#include "RespondingNodeType-EutranrCellResourceCoordination.h" +#include "ListofEUTRACellsinEUTRACoordinationResp.h" +#include "ListofNRCellsinNRCoordinationResp.h" +#include "InitiatingNodeType-EndcX2Removal.h" +#include "RespondingNodeType-EndcX2Removal.h" +#include "E-RABs-DataForwardingAddress-List.h" +#include "GNBOverloadInformation.h" +#include "E-RAB-Item.h" +#include "E-RABUsageReport-Item.h" +#include "SecondaryRATUsageReport-Item.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { + RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item +} RICaction_ToBeSetup_ItemIEs__value_PR; +typedef enum RICaction_Admitted_ItemIEs__value_PR { + RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item +} RICaction_Admitted_ItemIEs__value_PR; +typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { + RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item +} RICaction_NotAdmitted_ItemIEs__value_PR; +typedef enum RANfunction_ItemIEs__value_PR { + RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunction_ItemIEs__value_PR_RANfunction_Item +} RANfunction_ItemIEs__value_PR; +typedef enum RANfunctionID_ItemIEs__value_PR { + RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item +} RANfunctionID_ItemIEs__value_PR; +typedef enum RANfunctionIDcause_ItemIEs__value_PR { + RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item +} RANfunctionIDcause_ItemIEs__value_PR; +typedef enum E_RABs_ToBeSetup_ItemIEs__value_PR { + E_RABs_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetup_ItemIEs__value_PR_E_RABs_ToBeSetup_Item +} E_RABs_ToBeSetup_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ItemIEs__value_PR { + E_RABs_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ItemIEs__value_PR_E_RABs_Admitted_Item +} E_RABs_Admitted_ItemIEs__value_PR; +typedef enum E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR { + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR_E_RABs_SubjectToStatusTransfer_Item +} E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR; +typedef enum CellInformation_ItemIEs__value_PR { + CellInformation_ItemIEs__value_PR_NOTHING, /* No components present */ + CellInformation_ItemIEs__value_PR_CellInformation_Item +} CellInformation_ItemIEs__value_PR; +typedef enum CellToReport_ItemIEs__value_PR { + CellToReport_ItemIEs__value_PR_NOTHING, /* No components present */ + CellToReport_ItemIEs__value_PR_CellToReport_Item +} CellToReport_ItemIEs__value_PR; +typedef enum MeasurementInitiationResult_ItemIEs__value_PR { + MeasurementInitiationResult_ItemIEs__value_PR_NOTHING, /* No components present */ + MeasurementInitiationResult_ItemIEs__value_PR_MeasurementInitiationResult_Item +} MeasurementInitiationResult_ItemIEs__value_PR; +typedef enum MeasurementFailureCause_ItemIEs__value_PR { + MeasurementFailureCause_ItemIEs__value_PR_NOTHING, /* No components present */ + MeasurementFailureCause_ItemIEs__value_PR_MeasurementFailureCause_Item +} MeasurementFailureCause_ItemIEs__value_PR; +typedef enum CompleteFailureCauseInformation_ItemIEs__value_PR { + CompleteFailureCauseInformation_ItemIEs__value_PR_NOTHING, /* No components present */ + CompleteFailureCauseInformation_ItemIEs__value_PR_CompleteFailureCauseInformation_Item +} CompleteFailureCauseInformation_ItemIEs__value_PR; +typedef enum CellMeasurementResult_ItemIEs__value_PR { + CellMeasurementResult_ItemIEs__value_PR_NOTHING, /* No components present */ + CellMeasurementResult_ItemIEs__value_PR_CellMeasurementResult_Item +} CellMeasurementResult_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_ItemIEs__value_PR { + E_RABs_ToBeAdded_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ItemIEs__value_PR_E_RABs_ToBeAdded_Item +} E_RABs_ToBeAdded_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_Item +} E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_ModReqItemIEs__value_PR { + E_RABs_ToBeAdded_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItemIEs__value_PR_E_RABs_ToBeAdded_ModReqItem +} E_RABs_ToBeAdded_ModReqItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_ModReqItemIEs__value_PR { + E_RABs_ToBeModified_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_ModReqItemIEs__value_PR_E_RABs_ToBeModified_ModReqItem +} E_RABs_ToBeModified_ModReqItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_ModReqItemIEs__value_PR { + E_RABs_ToBeReleased_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqItemIEs__value_PR_E_RABs_ToBeReleased_ModReqItem +} E_RABs_ToBeReleased_ModReqItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckItem +} E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckItem +} E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR_E_RABs_Admitted_ToReleased_ModAckItem +} E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_ModReqdItemIEs__value_PR { + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR_E_RABs_ToBeReleased_ModReqdItem +} E_RABs_ToBeReleased_ModReqdItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_RelReqItemIEs__value_PR { + E_RABs_ToBeReleased_RelReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelReqItemIEs__value_PR_E_RABs_ToBeReleased_RelReqItem +} E_RABs_ToBeReleased_RelReqItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_RelConfItemIEs__value_PR { + E_RABs_ToBeReleased_RelConfItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelConfItemIEs__value_PR_E_RABs_ToBeReleased_RelConfItem +} E_RABs_ToBeReleased_RelConfItemIEs__value_PR; +typedef enum E_RABs_SubjectToCounterCheckItemIEs__value_PR { + E_RABs_SubjectToCounterCheckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToCounterCheckItemIEs__value_PR_E_RABs_SubjectToCounterCheckItem +} E_RABs_SubjectToCounterCheckItemIEs__value_PR; +typedef enum E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR { + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR_E_RABs_ToBeSetupRetrieve_Item +} E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR { + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBAddReq_Item +} E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBModReq_Item +} E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeModified_SgNBModReq_Item +} E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBModReq_Item +} E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item +} E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToReleased_SgNBModAck_Item +} E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBModReqd_Item +} E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR { + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR_E_RABs_ToBeModified_SgNBModReqd_Item +} E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR_E_RABs_AdmittedToBeModified_SgNBModConf_Item +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelReq_Item +} E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqd_Item +} E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelConf_Item +} E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR; +typedef enum E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR { + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR_E_RABs_SubjectToSgNBCounterCheck_Item +} E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBChaConf_Item +} E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR; +typedef enum E_RABs_DataForwardingAddress_ItemIEs__value_PR { + E_RABs_DataForwardingAddress_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_DataForwardingAddress_ItemIEs__value_PR_E_RABs_DataForwardingAddress_Item +} E_RABs_DataForwardingAddress_ItemIEs__value_PR; +typedef enum RICsubscriptionRequest_IEs__value_PR { + RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionRequest_IEs__value_PR_RICrequestID, + RICsubscriptionRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionRequest_IEs__value_PR_RICsubscription +} RICsubscriptionRequest_IEs__value_PR; +typedef enum RICsubscriptionResponse_IEs__value_PR { + RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionResponse_IEs__value_PR_RICrequestID, + RICsubscriptionResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, + RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List +} RICsubscriptionResponse_IEs__value_PR; +typedef enum RICsubscriptionFailure_IEs__value_PR { + RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionFailure_IEs__value_PR_RICrequestID, + RICsubscriptionFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List, + RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { + RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteRequest_IEs__value_PR; +typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { + RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteResponse_IEs__value_PR; +typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { + RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionDeleteFailure_IEs__value_PR_RICcause, + RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionDeleteFailure_IEs__value_PR; +typedef enum RICindication_IEs__value_PR { + RICindication_IEs__value_PR_NOTHING, /* No components present */ + RICindication_IEs__value_PR_RICrequestID, + RICindication_IEs__value_PR_RANfunctionID, + RICindication_IEs__value_PR_RICactionID, + RICindication_IEs__value_PR_RICindicationSN, + RICindication_IEs__value_PR_RICindicationType, + RICindication_IEs__value_PR_RICindicationHeader, + RICindication_IEs__value_PR_RICindicationMessage, + RICindication_IEs__value_PR_RICcallProcessID +} RICindication_IEs__value_PR; +typedef enum RICcontrolRequest_IEs__value_PR { + RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolRequest_IEs__value_PR_RICrequestID, + RICcontrolRequest_IEs__value_PR_RANfunctionID, + RICcontrolRequest_IEs__value_PR_RICcallProcessID, + RICcontrolRequest_IEs__value_PR_RICcontrolHeader, + RICcontrolRequest_IEs__value_PR_RICcontrolMessage, + RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest +} RICcontrolRequest_IEs__value_PR; +typedef enum RICcontrolAcknowledge_IEs__value_PR { + RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolAcknowledge_IEs__value_PR_RICrequestID, + RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, + RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus +} RICcontrolAcknowledge_IEs__value_PR; +typedef enum RICcontrolFailure_IEs__value_PR { + RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolFailure_IEs__value_PR_RICrequestID, + RICcontrolFailure_IEs__value_PR_RANfunctionID, + RICcontrolFailure_IEs__value_PR_RICcallProcessID, + RICcontrolFailure_IEs__value_PR_RICcause +} RICcontrolFailure_IEs__value_PR; +typedef enum RICserviceUpdate_IEs__value_PR { + RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List +} RICserviceUpdate_IEs__value_PR; +typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { + RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List +} RICserviceUpdateAcknowledge_IEs__value_PR; +typedef enum RICserviceUpdateFailure_IEs__value_PR { + RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List, + RICserviceUpdateFailure_IEs__value_PR_TimeToWait, + RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} RICserviceUpdateFailure_IEs__value_PR; +typedef enum RICserviceQuery_IEs__value_PR { + RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ + RICserviceQuery_IEs__value_PR_RANfunctionsID_List +} RICserviceQuery_IEs__value_PR; +typedef enum HandoverRequest_IEs__value_PR { + HandoverRequest_IEs__value_PR_NOTHING, /* No components present */ + HandoverRequest_IEs__value_PR_UE_X2AP_ID, + HandoverRequest_IEs__value_PR_Cause, + HandoverRequest_IEs__value_PR_ECGI, + HandoverRequest_IEs__value_PR_GUMMEI, + HandoverRequest_IEs__value_PR_UE_ContextInformation, + HandoverRequest_IEs__value_PR_UE_HistoryInformation, + HandoverRequest_IEs__value_PR_TraceActivation, + HandoverRequest_IEs__value_PR_SRVCCOperationPossible, + HandoverRequest_IEs__value_PR_CSGMembershipStatus, + HandoverRequest_IEs__value_PR_MobilityInformation, + HandoverRequest_IEs__value_PR_Masked_IMEISV, + HandoverRequest_IEs__value_PR_UE_HistoryInformationFromTheUE, + HandoverRequest_IEs__value_PR_ExpectedUEBehaviour, + HandoverRequest_IEs__value_PR_ProSeAuthorized, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtSeNB, + HandoverRequest_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequest_IEs__value_PR_V2XServicesAuthorized, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtWT, + HandoverRequest_IEs__value_PR_NRUESecurityCapabilities, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtSgNB, + HandoverRequest_IEs__value_PR_AerialUEsubscriptionInformation, + HandoverRequest_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo +} HandoverRequest_IEs__value_PR; +typedef enum HandoverRequestAcknowledge_IEs__value_PR { + HandoverRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_List, + HandoverRequestAcknowledge_IEs__value_PR_E_RAB_List, + HandoverRequestAcknowledge_IEs__value_PR_TargeteNBtoSource_eNBTransparentContainer, + HandoverRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverRequestAcknowledge_IEs__value_PR; +typedef enum HandoverPreparationFailure_IEs__value_PR { + HandoverPreparationFailure_IEs__value_PR_NOTHING, /* No components present */ + HandoverPreparationFailure_IEs__value_PR_UE_X2AP_ID, + HandoverPreparationFailure_IEs__value_PR_Cause, + HandoverPreparationFailure_IEs__value_PR_CriticalityDiagnostics, + HandoverPreparationFailure_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverPreparationFailure_IEs__value_PR; +typedef enum HandoverReport_IEs__value_PR { + HandoverReport_IEs__value_PR_NOTHING, /* No components present */ + HandoverReport_IEs__value_PR_HandoverReportType, + HandoverReport_IEs__value_PR_Cause, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_TargetCellInUTRAN, + HandoverReport_IEs__value_PR_CRNTI, + HandoverReport_IEs__value_PR_MobilityInformation, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands +} HandoverReport_IEs__value_PR; +typedef enum SNStatusTransfer_IEs__value_PR { + SNStatusTransfer_IEs__value_PR_NOTHING, /* No components present */ + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_E_RABs_SubjectToStatusTransfer_List, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_SgNB_UE_X2AP_ID +} SNStatusTransfer_IEs__value_PR; +typedef enum UEContextRelease_IEs__value_PR { + UEContextRelease_IEs__value_PR_NOTHING, /* No components present */ + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_SIPTOBearerDeactivationIndication, + UEContextRelease_IEs__value_PR_SgNB_UE_X2AP_ID +} UEContextRelease_IEs__value_PR; +typedef enum HandoverCancel_IEs__value_PR { + HandoverCancel_IEs__value_PR_NOTHING, /* No components present */ + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_Cause, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverCancel_IEs__value_PR; +typedef enum ErrorIndication_IEs__value_PR { + ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_SgNB_UE_X2AP_ID +} ErrorIndication_IEs__value_PR; +typedef enum ResetRequest_IEs__value_PR { + ResetRequest_IEs__value_PR_NOTHING, /* No components present */ + ResetRequest_IEs__value_PR_Cause +} ResetRequest_IEs__value_PR; +typedef enum ResetResponse_IEs__value_PR { + ResetResponse_IEs__value_PR_NOTHING, /* No components present */ + ResetResponse_IEs__value_PR_CriticalityDiagnostics +} ResetResponse_IEs__value_PR; +typedef enum X2SetupRequest_IEs__value_PR { + X2SetupRequest_IEs__value_PR_NOTHING, /* No components present */ + X2SetupRequest_IEs__value_PR_GlobalENB_ID, + X2SetupRequest_IEs__value_PR_ServedCells, + X2SetupRequest_IEs__value_PR_GUGroupIDList, + X2SetupRequest_IEs__value_PR_LHN_ID +} X2SetupRequest_IEs__value_PR; +typedef enum X2SetupResponse_IEs__value_PR { + X2SetupResponse_IEs__value_PR_NOTHING, /* No components present */ + X2SetupResponse_IEs__value_PR_GlobalENB_ID, + X2SetupResponse_IEs__value_PR_ServedCells, + X2SetupResponse_IEs__value_PR_GUGroupIDList, + X2SetupResponse_IEs__value_PR_CriticalityDiagnostics, + X2SetupResponse_IEs__value_PR_LHN_ID +} X2SetupResponse_IEs__value_PR; +typedef enum X2SetupFailure_IEs__value_PR { + X2SetupFailure_IEs__value_PR_NOTHING, /* No components present */ + X2SetupFailure_IEs__value_PR_Cause, + X2SetupFailure_IEs__value_PR_TimeToWait, + X2SetupFailure_IEs__value_PR_CriticalityDiagnostics +} X2SetupFailure_IEs__value_PR; +typedef enum LoadInformation_IEs__value_PR { + LoadInformation_IEs__value_PR_NOTHING, /* No components present */ + LoadInformation_IEs__value_PR_CellInformation_List +} LoadInformation_IEs__value_PR; +typedef enum ENBConfigurationUpdate_IEs__value_PR { + ENBConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdate_IEs__value_PR_ServedCells, + ENBConfigurationUpdate_IEs__value_PR_ServedCellsToModify, + ENBConfigurationUpdate_IEs__value_PR_Old_ECGIs, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_CoverageModificationList +} ENBConfigurationUpdate_IEs__value_PR; +typedef enum ENBConfigurationUpdateAcknowledge_IEs__value_PR { + ENBConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateAcknowledge_IEs__value_PR_CriticalityDiagnostics +} ENBConfigurationUpdateAcknowledge_IEs__value_PR; +typedef enum ENBConfigurationUpdateFailure_IEs__value_PR { + ENBConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateFailure_IEs__value_PR_Cause, + ENBConfigurationUpdateFailure_IEs__value_PR_TimeToWait, + ENBConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} ENBConfigurationUpdateFailure_IEs__value_PR; +typedef enum ResourceStatusRequest_IEs__value_PR { + ResourceStatusRequest_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Registration_Request, + ResourceStatusRequest_IEs__value_PR_ReportCharacteristics, + ResourceStatusRequest_IEs__value_PR_CellToReport_List, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicity, + ResourceStatusRequest_IEs__value_PR_PartialSuccessIndicator, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityRSRPMR, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityCSIR +} ResourceStatusRequest_IEs__value_PR; +typedef enum ResourceStatusResponse_IEs__value_PR { + ResourceStatusResponse_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusResponse_IEs__value_PR_MeasurementInitiationResult_List +} ResourceStatusResponse_IEs__value_PR; +typedef enum ResourceStatusFailure_IEs__value_PR { + ResourceStatusFailure_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Cause, + ResourceStatusFailure_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusFailure_IEs__value_PR_CompleteFailureCauseInformation_List +} ResourceStatusFailure_IEs__value_PR; +typedef enum ResourceStatusUpdate_IEs__value_PR { + ResourceStatusUpdate_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_CellMeasurementResult_List +} ResourceStatusUpdate_IEs__value_PR; +typedef enum MobilityChangeRequest_IEs__value_PR { + MobilityChangeRequest_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_Cause +} MobilityChangeRequest_IEs__value_PR; +typedef enum MobilityChangeAcknowledge_IEs__value_PR { + MobilityChangeAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_CriticalityDiagnostics +} MobilityChangeAcknowledge_IEs__value_PR; +typedef enum MobilityChangeFailure_IEs__value_PR { + MobilityChangeFailure_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_Cause, + MobilityChangeFailure_IEs__value_PR_MobilityParametersModificationRange, + MobilityChangeFailure_IEs__value_PR_CriticalityDiagnostics +} MobilityChangeFailure_IEs__value_PR; +typedef enum RLFIndication_IEs__value_PR { + RLFIndication_IEs__value_PR_NOTHING, /* No components present */ + RLFIndication_IEs__value_PR_PCI, + RLFIndication_IEs__value_PR_ECGI, + RLFIndication_IEs__value_PR_CRNTI, + RLFIndication_IEs__value_PR_ShortMAC_I, + RLFIndication_IEs__value_PR_UE_RLF_Report_Container, + RLFIndication_IEs__value_PR_RRCConnSetupIndicator, + RLFIndication_IEs__value_PR_RRCConnReestabIndicator, + RLFIndication_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands +} RLFIndication_IEs__value_PR; +typedef enum CellActivationRequest_IEs__value_PR { + CellActivationRequest_IEs__value_PR_NOTHING, /* No components present */ + CellActivationRequest_IEs__value_PR_ServedCellsToActivate +} CellActivationRequest_IEs__value_PR; +typedef enum CellActivationResponse_IEs__value_PR { + CellActivationResponse_IEs__value_PR_NOTHING, /* No components present */ + CellActivationResponse_IEs__value_PR_ActivatedCellList, + CellActivationResponse_IEs__value_PR_CriticalityDiagnostics +} CellActivationResponse_IEs__value_PR; +typedef enum CellActivationFailure_IEs__value_PR { + CellActivationFailure_IEs__value_PR_NOTHING, /* No components present */ + CellActivationFailure_IEs__value_PR_Cause, + CellActivationFailure_IEs__value_PR_CriticalityDiagnostics +} CellActivationFailure_IEs__value_PR; +typedef enum X2Release_IEs__value_PR { + X2Release_IEs__value_PR_NOTHING, /* No components present */ + X2Release_IEs__value_PR_GlobalENB_ID +} X2Release_IEs__value_PR; +typedef enum X2APMessageTransfer_IEs__value_PR { + X2APMessageTransfer_IEs__value_PR_NOTHING, /* No components present */ + X2APMessageTransfer_IEs__value_PR_RNL_Header, + X2APMessageTransfer_IEs__value_PR_X2AP_Message +} X2APMessageTransfer_IEs__value_PR; +typedef enum SeNBAdditionRequest_IEs__value_PR { + SeNBAdditionRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UESecurityCapabilities, + SeNBAdditionRequest_IEs__value_PR_SeNBSecurityKey, + SeNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SeNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SeNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_List, + SeNBAdditionRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBAdditionRequest_IEs__value_PR_CSGMembershipStatus, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour +} SeNBAdditionRequest_IEs__value_PR; +typedef enum SeNBAdditionRequestAcknowledge_IEs__value_PR { + SeNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TunnelInformation +} SeNBAdditionRequestAcknowledge_IEs__value_PR; +typedef enum SeNBAdditionRequestReject_IEs__value_PR { + SeNBAdditionRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_Cause, + SeNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBAdditionRequestReject_IEs__value_PR; +typedef enum SeNBReconfigurationComplete_IEs__value_PR { + SeNBReconfigurationComplete_IEs__value_PR_NOTHING, /* No components present */ + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_ResponseInformationSeNBReconfComp, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReconfigurationComplete_IEs__value_PR; +typedef enum SeNBModificationRequest_IEs__value_PR { + SeNBModificationRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_Cause, + SeNBModificationRequest_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequest_IEs__value_PR_PLMN_Identity, + SeNBModificationRequest_IEs__value_PR_UE_ContextInformationSeNBModReq, + SeNBModificationRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRequest_IEs__value_PR_CSGMembershipStatus, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequest_IEs__value_PR; +typedef enum SeNBModificationRequestAcknowledge_IEs__value_PR { + SeNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBModificationRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequestAcknowledge_IEs__value_PR; +typedef enum SeNBModificationRequestReject_IEs__value_PR { + SeNBModificationRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_Cause, + SeNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequestReject_IEs__value_PR; +typedef enum SeNBModificationRequired_IEs__value_PR { + SeNBModificationRequired_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_Cause, + SeNBModificationRequired_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_ModReqd, + SeNBModificationRequired_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequired_IEs__value_PR; +typedef enum SeNBModificationConfirm_IEs__value_PR { + SeNBModificationConfirm_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationConfirm_IEs__value_PR; +typedef enum SeNBModificationRefuse_IEs__value_PR { + SeNBModificationRefuse_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_Cause, + SeNBModificationRefuse_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRefuse_IEs__value_PR; +typedef enum SeNBReleaseRequest_IEs__value_PR { + SeNBReleaseRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_Cause, + SeNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_List_RelReq, + SeNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_MakeBeforeBreakIndicator +} SeNBReleaseRequest_IEs__value_PR; +typedef enum SeNBReleaseRequired_IEs__value_PR { + SeNBReleaseRequired_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_Cause, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReleaseRequired_IEs__value_PR; +typedef enum SeNBReleaseConfirm_IEs__value_PR { + SeNBReleaseConfirm_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_List_RelConf, + SeNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReleaseConfirm_IEs__value_PR; +typedef enum SeNBCounterCheckRequest_IEs__value_PR { + SeNBCounterCheckRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToCounterCheck_List, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBCounterCheckRequest_IEs__value_PR; +typedef enum X2RemovalRequest_IEs__value_PR { + X2RemovalRequest_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalRequest_IEs__value_PR_GlobalENB_ID, + X2RemovalRequest_IEs__value_PR_X2BenefitValue +} X2RemovalRequest_IEs__value_PR; +typedef enum X2RemovalResponse_IEs__value_PR { + X2RemovalResponse_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalResponse_IEs__value_PR_GlobalENB_ID, + X2RemovalResponse_IEs__value_PR_CriticalityDiagnostics +} X2RemovalResponse_IEs__value_PR; +typedef enum X2RemovalFailure_IEs__value_PR { + X2RemovalFailure_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalFailure_IEs__value_PR_Cause, + X2RemovalFailure_IEs__value_PR_CriticalityDiagnostics +} X2RemovalFailure_IEs__value_PR; +typedef enum RetrieveUEContextRequest_IEs__value_PR { + RetrieveUEContextRequest_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextRequest_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextRequest_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextRequest_IEs__value_PR_ResumeID, + RetrieveUEContextRequest_IEs__value_PR_ShortMAC_I, + RetrieveUEContextRequest_IEs__value_PR_EUTRANCellIdentifier, + RetrieveUEContextRequest_IEs__value_PR_CRNTI, + RetrieveUEContextRequest_IEs__value_PR_PCI +} RetrieveUEContextRequest_IEs__value_PR; +typedef enum RetrieveUEContextResponse_IEs__value_PR { + RetrieveUEContextResponse_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_GUMMEI, + RetrieveUEContextResponse_IEs__value_PR_UE_ContextInformationRetrieve, + RetrieveUEContextResponse_IEs__value_PR_TraceActivation, + RetrieveUEContextResponse_IEs__value_PR_SRVCCOperationPossible, + RetrieveUEContextResponse_IEs__value_PR_Masked_IMEISV, + RetrieveUEContextResponse_IEs__value_PR_ExpectedUEBehaviour, + RetrieveUEContextResponse_IEs__value_PR_ProSeAuthorized, + RetrieveUEContextResponse_IEs__value_PR_CriticalityDiagnostics, + RetrieveUEContextResponse_IEs__value_PR_V2XServicesAuthorized, + RetrieveUEContextResponse_IEs__value_PR_AerialUEsubscriptionInformation, + RetrieveUEContextResponse_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo +} RetrieveUEContextResponse_IEs__value_PR; +typedef enum RetrieveUEContextFailure_IEs__value_PR { + RetrieveUEContextFailure_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextFailure_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextFailure_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextFailure_IEs__value_PR_Cause, + RetrieveUEContextFailure_IEs__value_PR_CriticalityDiagnostics +} RetrieveUEContextFailure_IEs__value_PR; +typedef enum SgNBAdditionRequest_IEs__value_PR { + SgNBAdditionRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequest_IEs__value_PR_NRUESecurityCapabilities, + SgNBAdditionRequest_IEs__value_PR_SgNBSecurityKey, + SgNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SgNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SgNBAdditionRequest_IEs__value_PR_HandoverRestrictionList, + SgNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_SgNBAddReqList, + SgNBAdditionRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBAdditionRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour, + SgNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBAdditionRequest_IEs__value_PR_SplitSRBs, + SgNBAdditionRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBAdditionRequest_IEs__value_PR_SGNB_Addition_Trigger_Ind, + SgNBAdditionRequest_IEs__value_PR_SubscriberProfileIDforRFP, + SgNBAdditionRequest_IEs__value_PR_ECGI +} SgNBAdditionRequest_IEs__value_PR; +typedef enum SgNBAdditionRequestAcknowledge_IEs__value_PR { + SgNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, + SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBAdditionRequestAcknowledge_IEs__value_PR_RRC_Config_Ind +} SgNBAdditionRequestAcknowledge_IEs__value_PR; +typedef enum SgNBAdditionRequestReject_IEs__value_PR { + SgNBAdditionRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequestReject_IEs__value_PR_Cause, + SgNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBAdditionRequestReject_IEs__value_PR; +typedef enum SgNBReconfigurationComplete_IEs__value_PR { + SgNBReconfigurationComplete_IEs__value_PR_NOTHING, /* No components present */ + SgNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SgNBReconfigurationComplete_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReconfigurationComplete_IEs__value_PR_ResponseInformationSgNBReconfComp, + SgNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReconfigurationComplete_IEs__value_PR; +typedef enum SgNBModificationRequest_IEs__value_PR { + SgNBModificationRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_Cause, + SgNBModificationRequest_IEs__value_PR_PLMN_Identity, + SgNBModificationRequest_IEs__value_PR_HandoverRestrictionList, + SgNBModificationRequest_IEs__value_PR_SCGConfigurationQuery, + SgNBModificationRequest_IEs__value_PR_UE_ContextInformation_SgNBModReq, + SgNBModificationRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBModificationRequest_IEs__value_PR_SplitSRBs +} SgNBModificationRequest_IEs__value_PR; +typedef enum SgNBModificationRequestAcknowledge_IEs__value_PR { + SgNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_RRC_Config_Ind +} SgNBModificationRequestAcknowledge_IEs__value_PR; +typedef enum SgNBModificationRequestReject_IEs__value_PR { + SgNBModificationRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestReject_IEs__value_PR_Cause, + SgNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBModificationRequestReject_IEs__value_PR; +typedef enum SgNBModificationRequired_IEs__value_PR { + SgNBModificationRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequired_IEs__value_PR_Cause, + SgNBModificationRequired_IEs__value_PR_PDCPChangeIndication, + SgNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_SgNBModReqdList, + SgNBModificationRequired_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequired_IEs__value_PR_E_RABs_ToBeModified_SgNBModReqdList, + SgNBModificationRequired_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequired_IEs__value_PR_RRC_Config_Ind +} SgNBModificationRequired_IEs__value_PR; +typedef enum SgNBModificationConfirm_IEs__value_PR { + SgNBModificationConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBModificationConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationConfirm_IEs__value_PR_E_RABs_AdmittedToBeModified_SgNBModConfList, + SgNBModificationConfirm_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationConfirm_IEs__value_PR_MeNBResourceCoordinationInformation +} SgNBModificationConfirm_IEs__value_PR; +typedef enum SgNBModificationRefuse_IEs__value_PR { + SgNBModificationRefuse_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRefuse_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRefuse_IEs__value_PR_Cause, + SgNBModificationRefuse_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBModificationRefuse_IEs__value_PR; +typedef enum SgNBReleaseRequest_IEs__value_PR { + SgNBReleaseRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequest_IEs__value_PR_Cause, + SgNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqList, + SgNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SgNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequest_IEs__value_PR_MeNBtoSgNBContainer +} SgNBReleaseRequest_IEs__value_PR; +typedef enum SgNBReleaseRequestAcknowledge_IEs__value_PR { + SgNBReleaseRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList +} SgNBReleaseRequestAcknowledge_IEs__value_PR; +typedef enum SgNBReleaseRequestReject_IEs__value_PR { + SgNBReleaseRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequestReject_IEs__value_PR_Cause, + SgNBReleaseRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReleaseRequestReject_IEs__value_PR; +typedef enum SgNBReleaseRequired_IEs__value_PR { + SgNBReleaseRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequired_IEs__value_PR_Cause, + SgNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequired_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqdList +} SgNBReleaseRequired_IEs__value_PR; +typedef enum SgNBReleaseConfirm_IEs__value_PR { + SgNBReleaseConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelConfList, + SgNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReleaseConfirm_IEs__value_PR; +typedef enum SgNBCounterCheckRequest_IEs__value_PR { + SgNBCounterCheckRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SgNBCounterCheckRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToSgNBCounterCheck_List, + SgNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBCounterCheckRequest_IEs__value_PR; +typedef enum SgNBChangeRequired_IEs__value_PR { + SgNBChangeRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeRequired_IEs__value_PR_UE_X2AP_ID, + SgNBChangeRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeRequired_IEs__value_PR_GlobalGNB_ID, + SgNBChangeRequired_IEs__value_PR_Cause, + SgNBChangeRequired_IEs__value_PR_SgNBtoMeNBContainer, + SgNBChangeRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeRequired_IEs__value_PR; +typedef enum SgNBChangeConfirm_IEs__value_PR { + SgNBChangeConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBChangeConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeConfirm_IEs__value_PR_E_RABs_ToBeReleased_SgNBChaConfList, + SgNBChangeConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBChangeConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeConfirm_IEs__value_PR; +typedef enum RRCTransfer_IEs__value_PR { + RRCTransfer_IEs__value_PR_NOTHING, /* No components present */ + RRCTransfer_IEs__value_PR_UE_X2AP_ID, + RRCTransfer_IEs__value_PR_SgNB_UE_X2AP_ID, + RRCTransfer_IEs__value_PR_SplitSRB, + RRCTransfer_IEs__value_PR_UENRMeasurement, + RRCTransfer_IEs__value_PR_UE_X2AP_ID_Extension +} RRCTransfer_IEs__value_PR; +typedef enum SgNBChangeRefuse_IEs__value_PR { + SgNBChangeRefuse_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeRefuse_IEs__value_PR_UE_X2AP_ID, + SgNBChangeRefuse_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeRefuse_IEs__value_PR_Cause, + SgNBChangeRefuse_IEs__value_PR_CriticalityDiagnostics, + SgNBChangeRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeRefuse_IEs__value_PR; +typedef enum ENDCX2SetupRequest_IEs__value_PR { + ENDCX2SetupRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupRequest_IEs__value_PR_InitiatingNodeType_EndcX2Setup +} ENDCX2SetupRequest_IEs__value_PR; +typedef enum ENB_ENDCX2SetupReqIEs__value_PR { + ENB_ENDCX2SetupReqIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2SetupReqIEs__value_PR_GlobalENB_ID, + ENB_ENDCX2SetupReqIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList +} ENB_ENDCX2SetupReqIEs__value_PR; +typedef enum En_gNB_ENDCX2SetupReqIEs__value_PR { + En_gNB_ENDCX2SetupReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2SetupReqIEs__value_PR_GlobalGNB_ID, + En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCX2SetupReqIEs__value_PR; +typedef enum ENDCX2SetupResponse_IEs__value_PR { + ENDCX2SetupResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupResponse_IEs__value_PR_RespondingNodeType_EndcX2Setup +} ENDCX2SetupResponse_IEs__value_PR; +typedef enum ENB_ENDCX2SetupReqAckIEs__value_PR { + ENB_ENDCX2SetupReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2SetupReqAckIEs__value_PR_GlobalENB_ID, + ENB_ENDCX2SetupReqAckIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList +} ENB_ENDCX2SetupReqAckIEs__value_PR; +typedef enum En_gNB_ENDCX2SetupReqAckIEs__value_PR { + En_gNB_ENDCX2SetupReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2SetupReqAckIEs__value_PR_GlobalGNB_ID, + En_gNB_ENDCX2SetupReqAckIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCX2SetupReqAckIEs__value_PR; +typedef enum ENDCX2SetupFailure_IEs__value_PR { + ENDCX2SetupFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupFailure_IEs__value_PR_Cause, + ENDCX2SetupFailure_IEs__value_PR_CriticalityDiagnostics, + ENDCX2SetupFailure_IEs__value_PR_TimeToWait +} ENDCX2SetupFailure_IEs__value_PR; +typedef enum ENDCConfigurationUpdate_IEs__value_PR { + ENDCConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdate_IEs__value_PR_InitiatingNodeType_EndcConfigUpdate +} ENDCConfigurationUpdate_IEs__value_PR; +typedef enum ENB_ENDCConfigUpdateIEs__value_PR { + ENB_ENDCConfigUpdateIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCConfigUpdateIEs__value_PR_CellAssistanceInformation, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToModifyListENDCConfUpd, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToDeleteListENDCConfUpd +} ENB_ENDCConfigUpdateIEs__value_PR; +typedef enum En_gNB_ENDCConfigUpdateIEs__value_PR { + En_gNB_ENDCConfigUpdateIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsENDCX2ManagementList, + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToModifyENDCConfUpdList, + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToDeleteENDCConfUpdList +} En_gNB_ENDCConfigUpdateIEs__value_PR; +typedef enum ENDCConfigurationUpdateAcknowledge_IEs__value_PR { + ENDCConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdateAcknowledge_IEs__value_PR_RespondingNodeType_EndcConfigUpdate +} ENDCConfigurationUpdateAcknowledge_IEs__value_PR; +typedef enum ENB_ENDCConfigUpdateAckIEs__value_PR { + ENB_ENDCConfigUpdateAckIEs__value_PR_NOTHING /* No components present */ + +} ENB_ENDCConfigUpdateAckIEs__value_PR; +typedef enum En_gNB_ENDCConfigUpdateAckIEs__value_PR { + En_gNB_ENDCConfigUpdateAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCConfigUpdateAckIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCConfigUpdateAckIEs__value_PR; +typedef enum ENDCConfigurationUpdateFailure_IEs__value_PR { + ENDCConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdateFailure_IEs__value_PR_Cause, + ENDCConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics, + ENDCConfigurationUpdateFailure_IEs__value_PR_TimeToWait +} ENDCConfigurationUpdateFailure_IEs__value_PR; +typedef enum ENDCCellActivationRequest_IEs__value_PR { + ENDCCellActivationRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationRequest_IEs__value_PR_ServedNRCellsToActivate, + ENDCCellActivationRequest_IEs__value_PR_ActivationID +} ENDCCellActivationRequest_IEs__value_PR; +typedef enum ENDCCellActivationResponse_IEs__value_PR { + ENDCCellActivationResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationResponse_IEs__value_PR_ActivatedNRCellList, + ENDCCellActivationResponse_IEs__value_PR_ActivationID, + ENDCCellActivationResponse_IEs__value_PR_CriticalityDiagnostics +} ENDCCellActivationResponse_IEs__value_PR; +typedef enum ENDCCellActivationFailure_IEs__value_PR { + ENDCCellActivationFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationFailure_IEs__value_PR_ActivationID, + ENDCCellActivationFailure_IEs__value_PR_Cause, + ENDCCellActivationFailure_IEs__value_PR_CriticalityDiagnostics +} ENDCCellActivationFailure_IEs__value_PR; +typedef enum SecondaryRATDataUsageReport_IEs__value_PR { + SecondaryRATDataUsageReport_IEs__value_PR_NOTHING, /* No components present */ + SecondaryRATDataUsageReport_IEs__value_PR_UE_X2AP_ID, + SecondaryRATDataUsageReport_IEs__value_PR_SgNB_UE_X2AP_ID, + SecondaryRATDataUsageReport_IEs__value_PR_SecondaryRATUsageReportList, + SecondaryRATDataUsageReport_IEs__value_PR_UE_X2AP_ID_Extension +} SecondaryRATDataUsageReport_IEs__value_PR; +typedef enum SgNBActivityNotification_IEs__value_PR { + SgNBActivityNotification_IEs__value_PR_NOTHING, /* No components present */ + SgNBActivityNotification_IEs__value_PR_UE_X2AP_ID, + SgNBActivityNotification_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBActivityNotification_IEs__value_PR_UserPlaneTrafficActivityReport, + SgNBActivityNotification_IEs__value_PR_ERABActivityNotifyItemList, + SgNBActivityNotification_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBActivityNotification_IEs__value_PR; +typedef enum ENDCPartialResetRequired_IEs__value_PR { + ENDCPartialResetRequired_IEs__value_PR_NOTHING, /* No components present */ + ENDCPartialResetRequired_IEs__value_PR_UEsToBeResetList, + ENDCPartialResetRequired_IEs__value_PR_Cause +} ENDCPartialResetRequired_IEs__value_PR; +typedef enum ENDCPartialResetConfirm_IEs__value_PR { + ENDCPartialResetConfirm_IEs__value_PR_NOTHING, /* No components present */ + ENDCPartialResetConfirm_IEs__value_PR_UEsToBeResetList +} ENDCPartialResetConfirm_IEs__value_PR; +typedef enum EUTRANRCellResourceCoordinationRequest_IEs__value_PR { + EUTRANRCellResourceCoordinationRequest_IEs__value_PR_NOTHING, /* No components present */ + EUTRANRCellResourceCoordinationRequest_IEs__value_PR_InitiatingNodeType_EutranrCellResourceCoordination +} EUTRANRCellResourceCoordinationRequest_IEs__value_PR; +typedef enum ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR { + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_NOTHING, /* No components present */ + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_DataTrafficResourceIndication, + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_SpectrumSharingGroupID, + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofEUTRACellsinEUTRACoordinationReq +} ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR; +typedef enum En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR { + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_DataTrafficResourceIndication, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofEUTRACellsinNRCoordinationReq, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_SpectrumSharingGroupID, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofNRCellsinNRCoordinationReq +} En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR; +typedef enum EUTRANRCellResourceCoordinationResponse_IEs__value_PR { + EUTRANRCellResourceCoordinationResponse_IEs__value_PR_NOTHING, /* No components present */ + EUTRANRCellResourceCoordinationResponse_IEs__value_PR_RespondingNodeType_EutranrCellResourceCoordination +} EUTRANRCellResourceCoordinationResponse_IEs__value_PR; +typedef enum ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR { + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_DataTrafficResourceIndication, + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_SpectrumSharingGroupID, + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_ListofEUTRACellsinEUTRACoordinationResp +} ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR; +typedef enum En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR { + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_DataTrafficResourceIndication, + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_SpectrumSharingGroupID, + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_ListofNRCellsinNRCoordinationResp +} En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR; +typedef enum ENDCX2RemovalRequest_IEs__value_PR { + ENDCX2RemovalRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalRequest_IEs__value_PR_InitiatingNodeType_EndcX2Removal +} ENDCX2RemovalRequest_IEs__value_PR; +typedef enum ENB_ENDCX2RemovalReqIEs__value_PR { + ENB_ENDCX2RemovalReqIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2RemovalReqIEs__value_PR_GlobalENB_ID +} ENB_ENDCX2RemovalReqIEs__value_PR; +typedef enum En_gNB_ENDCX2RemovalReqIEs__value_PR { + En_gNB_ENDCX2RemovalReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2RemovalReqIEs__value_PR_GlobalGNB_ID +} En_gNB_ENDCX2RemovalReqIEs__value_PR; +typedef enum ENDCX2RemovalResponse_IEs__value_PR { + ENDCX2RemovalResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalResponse_IEs__value_PR_RespondingNodeType_EndcX2Removal +} ENDCX2RemovalResponse_IEs__value_PR; +typedef enum ENB_ENDCX2RemovalReqAckIEs__value_PR { + ENB_ENDCX2RemovalReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2RemovalReqAckIEs__value_PR_GlobalENB_ID +} ENB_ENDCX2RemovalReqAckIEs__value_PR; +typedef enum En_gNB_ENDCX2RemovalReqAckIEs__value_PR { + En_gNB_ENDCX2RemovalReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2RemovalReqAckIEs__value_PR_GlobalGNB_ID +} En_gNB_ENDCX2RemovalReqAckIEs__value_PR; +typedef enum ENDCX2RemovalFailure_IEs__value_PR { + ENDCX2RemovalFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalFailure_IEs__value_PR_Cause, + ENDCX2RemovalFailure_IEs__value_PR_CriticalityDiagnostics +} ENDCX2RemovalFailure_IEs__value_PR; +typedef enum DataForwardingAddressIndication_IEs__value_PR { + DataForwardingAddressIndication_IEs__value_PR_NOTHING, /* No components present */ + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID, + DataForwardingAddressIndication_IEs__value_PR_E_RABs_DataForwardingAddress_List +} DataForwardingAddressIndication_IEs__value_PR; +typedef enum GNBStatusIndicationIEs__value_PR { + GNBStatusIndicationIEs__value_PR_NOTHING, /* No components present */ + GNBStatusIndicationIEs__value_PR_GNBOverloadInformation +} GNBStatusIndicationIEs__value_PR; +typedef enum E_RAB_ItemIEs__value_PR { + E_RAB_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RAB_ItemIEs__value_PR_E_RAB_Item +} E_RAB_ItemIEs__value_PR; +typedef enum E_RABUsageReport_ItemIEs__value_PR { + E_RABUsageReport_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABUsageReport_ItemIEs__value_PR_E_RABUsageReport_Item +} E_RABUsageReport_ItemIEs__value_PR; +typedef enum SecondaryRATUsageReport_ItemIEs__value_PR { + SecondaryRATUsageReport_ItemIEs__value_PR_NOTHING, /* No components present */ + SecondaryRATUsageReport_ItemIEs__value_PR_SecondaryRATUsageReport_Item +} SecondaryRATUsageReport_ItemIEs__value_PR; + +/* ProtocolIE-Field */ +typedef struct RICaction_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeSetup_ItemIEs__value { + RICaction_ToBeSetup_ItemIEs__value_PR present; + union RICaction_ToBeSetup_ItemIEs__value_u { + RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_ItemIEs_t; +typedef struct RICaction_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_Admitted_ItemIEs__value { + RICaction_Admitted_ItemIEs__value_PR present; + union RICaction_Admitted_ItemIEs__value_u { + RICaction_Admitted_Item_t RICaction_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_ItemIEs_t; +typedef struct RICaction_NotAdmitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_NotAdmitted_ItemIEs__value { + RICaction_NotAdmitted_ItemIEs__value_PR present; + union RICaction_NotAdmitted_ItemIEs__value_u { + RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_ItemIEs_t; +typedef struct RANfunction_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunction_ItemIEs__value { + RANfunction_ItemIEs__value_PR present; + union RANfunction_ItemIEs__value_u { + RANfunction_Item_t RANfunction_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_ItemIEs_t; +typedef struct RANfunctionID_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionID_ItemIEs__value { + RANfunctionID_ItemIEs__value_PR present; + union RANfunctionID_ItemIEs__value_u { + RANfunctionID_Item_t RANfunctionID_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_ItemIEs_t; +typedef struct RANfunctionIDcause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionIDcause_ItemIEs__value { + RANfunctionIDcause_ItemIEs__value_PR present; + union RANfunctionIDcause_ItemIEs__value_u { + RANfunctionIDcause_Item_t RANfunctionIDcause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_ItemIEs_t; +typedef struct E_RABs_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetup_ItemIEs__value { + E_RABs_ToBeSetup_ItemIEs__value_PR present; + union E_RABs_ToBeSetup_ItemIEs__value_u { + E_RABs_ToBeSetup_Item_t E_RABs_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ItemIEs_t; +typedef struct E_RABs_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ItemIEs__value { + E_RABs_Admitted_ItemIEs__value_PR present; + union E_RABs_Admitted_ItemIEs__value_u { + E_RABs_Admitted_Item_t E_RABs_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ItemIEs_t; +typedef struct E_RABs_SubjectToStatusTransfer_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToStatusTransfer_ItemIEs__value { + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR present; + union E_RABs_SubjectToStatusTransfer_ItemIEs__value_u { + E_RABs_SubjectToStatusTransfer_Item_t E_RABs_SubjectToStatusTransfer_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_ItemIEs_t; +typedef struct CellInformation_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellInformation_ItemIEs__value { + CellInformation_ItemIEs__value_PR present; + union CellInformation_ItemIEs__value_u { + CellInformation_Item_t CellInformation_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_ItemIEs_t; +typedef struct CellToReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellToReport_ItemIEs__value { + CellToReport_ItemIEs__value_PR present; + union CellToReport_ItemIEs__value_u { + CellToReport_Item_t CellToReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_ItemIEs_t; +typedef struct MeasurementInitiationResult_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementInitiationResult_ItemIEs__value { + MeasurementInitiationResult_ItemIEs__value_PR present; + union MeasurementInitiationResult_ItemIEs__value_u { + MeasurementInitiationResult_Item_t MeasurementInitiationResult_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_ItemIEs_t; +typedef struct MeasurementFailureCause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementFailureCause_ItemIEs__value { + MeasurementFailureCause_ItemIEs__value_PR present; + union MeasurementFailureCause_ItemIEs__value_u { + MeasurementFailureCause_Item_t MeasurementFailureCause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_ItemIEs_t; +typedef struct CompleteFailureCauseInformation_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompleteFailureCauseInformation_ItemIEs__value { + CompleteFailureCauseInformation_ItemIEs__value_PR present; + union CompleteFailureCauseInformation_ItemIEs__value_u { + CompleteFailureCauseInformation_Item_t CompleteFailureCauseInformation_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_ItemIEs_t; +typedef struct CellMeasurementResult_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellMeasurementResult_ItemIEs__value { + CellMeasurementResult_ItemIEs__value_PR present; + union CellMeasurementResult_ItemIEs__value_u { + CellMeasurementResult_Item_t CellMeasurementResult_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ItemIEs__value { + E_RABs_ToBeAdded_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_ItemIEs__value_u { + E_RABs_ToBeAdded_Item_t E_RABs_ToBeAdded_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_Item_t E_RABs_Admitted_ToBeAdded_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItemIEs__value { + E_RABs_ToBeAdded_ModReqItemIEs__value_PR present; + union E_RABs_ToBeAdded_ModReqItemIEs__value_u { + E_RABs_ToBeAdded_ModReqItem_t E_RABs_ToBeAdded_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItemIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItemIEs__value { + E_RABs_ToBeModified_ModReqItemIEs__value_PR present; + union E_RABs_ToBeModified_ModReqItemIEs__value_u { + E_RABs_ToBeModified_ModReqItem_t E_RABs_ToBeModified_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItemIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItemIEs__value { + E_RABs_ToBeReleased_ModReqItemIEs__value_PR present; + union E_RABs_ToBeReleased_ModReqItemIEs__value_u { + E_RABs_ToBeReleased_ModReqItem_t E_RABs_ToBeReleased_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value { + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_ModAckItem_t E_RABs_Admitted_ToBeAdded_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItemIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value { + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_u { + E_RABs_Admitted_ToBeModified_ModAckItem_t E_RABs_Admitted_ToBeModified_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value { + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_u { + E_RABs_Admitted_ToReleased_ModAckItem_t E_RABs_Admitted_ToReleased_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItemIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqdItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqdItemIEs__value { + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR present; + union E_RABs_ToBeReleased_ModReqdItemIEs__value_u { + E_RABs_ToBeReleased_ModReqdItem_t E_RABs_ToBeReleased_ModReqdItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqdItemIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItemIEs__value { + E_RABs_ToBeReleased_RelReqItemIEs__value_PR present; + union E_RABs_ToBeReleased_RelReqItemIEs__value_u { + E_RABs_ToBeReleased_RelReqItem_t E_RABs_ToBeReleased_RelReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItemIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItemIEs__value { + E_RABs_ToBeReleased_RelConfItemIEs__value_PR present; + union E_RABs_ToBeReleased_RelConfItemIEs__value_u { + E_RABs_ToBeReleased_RelConfItem_t E_RABs_ToBeReleased_RelConfItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItemIEs_t; +typedef struct E_RABs_SubjectToCounterCheckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToCounterCheckItemIEs__value { + E_RABs_SubjectToCounterCheckItemIEs__value_PR present; + union E_RABs_SubjectToCounterCheckItemIEs__value_u { + E_RABs_SubjectToCounterCheckItem_t E_RABs_SubjectToCounterCheckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheckItemIEs_t; +typedef struct E_RABs_ToBeSetupRetrieve_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetupRetrieve_ItemIEs__value { + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR present; + union E_RABs_ToBeSetupRetrieve_ItemIEs__value_u { + E_RABs_ToBeSetupRetrieve_Item_t E_RABs_ToBeSetupRetrieve_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetupRetrieve_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value { + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_u { + E_RABs_ToBeAdded_SgNBAddReq_Item_t E_RABs_ToBeAdded_SgNBAddReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value { + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeAdded_SgNBModReq_Item_t E_RABs_ToBeAdded_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value { + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeModified_SgNBModReq_Item_t E_RABs_ToBeModified_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value { + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBModReq_Item_t E_RABs_ToBeReleased_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_t E_RABs_Admitted_ToBeAdded_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_t E_RABs_Admitted_ToBeModified_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToReleased_SgNBModAck_Item_t E_RABs_Admitted_ToReleased_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value { + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBModReqd_Item_t E_RABs_ToBeReleased_SgNBModReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value { + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR present; + union E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_u { + E_RABs_ToBeModified_SgNBModReqd_Item_t E_RABs_ToBeModified_SgNBModReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_ItemIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_u { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_t E_RABs_AdmittedToBeModified_SgNBModConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelReq_Item_t E_RABs_ToBeReleased_SgNBRelReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_t E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelReqd_Item_t E_RABs_ToBeReleased_SgNBRelReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelConf_Item_t E_RABs_ToBeReleased_SgNBRelConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_t; +typedef struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value { + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR present; + union E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_u { + E_RABs_SubjectToSgNBCounterCheck_Item_t E_RABs_SubjectToSgNBCounterCheck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value { + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBChaConf_Item_t E_RABs_ToBeReleased_SgNBChaConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_t; +typedef struct E_RABs_DataForwardingAddress_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_DataForwardingAddress_ItemIEs__value { + E_RABs_DataForwardingAddress_ItemIEs__value_PR present; + union E_RABs_DataForwardingAddress_ItemIEs__value_u { + E_RABs_DataForwardingAddress_Item_t E_RABs_DataForwardingAddress_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_ItemIEs_t; +typedef struct RICsubscriptionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionRequest_IEs__value { + RICsubscriptionRequest_IEs__value_PR present; + union RICsubscriptionRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICsubscription_t RICsubscription; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_IEs_t; +typedef struct RICsubscriptionResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionResponse_IEs__value { + RICsubscriptionResponse_IEs__value_PR present; + union RICsubscriptionResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_Admitted_List_t RICaction_Admitted_List; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_IEs_t; +typedef struct RICsubscriptionFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionFailure_IEs__value { + RICsubscriptionFailure_IEs__value_PR present; + union RICsubscriptionFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequest_IEs__value { + RICsubscriptionDeleteRequest_IEs__value_PR present; + union RICsubscriptionDeleteRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_IEs_t; +typedef struct RICsubscriptionDeleteResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteResponse_IEs__value { + RICsubscriptionDeleteResponse_IEs__value_PR present; + union RICsubscriptionDeleteResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_IEs_t; +typedef struct RICsubscriptionDeleteFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteFailure_IEs__value { + RICsubscriptionDeleteFailure_IEs__value_PR present; + union RICsubscriptionDeleteFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcause_t RICcause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_IEs_t; +typedef struct RICindication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICindication_IEs__value { + RICindication_IEs__value_PR present; + union RICindication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactionID_t RICactionID; + RICindicationSN_t RICindicationSN; + RICindicationType_t RICindicationType; + RICindicationHeader_t RICindicationHeader; + RICindicationMessage_t RICindicationMessage; + RICcallProcessID_t RICcallProcessID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_IEs_t; +typedef struct RICcontrolRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolRequest_IEs__value { + RICcontrolRequest_IEs__value_PR present; + union RICcontrolRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolHeader_t RICcontrolHeader; + RICcontrolMessage_t RICcontrolMessage; + RICcontrolAckRequest_t RICcontrolAckRequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_IEs_t; +typedef struct RICcontrolAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolAcknowledge_IEs__value { + RICcontrolAcknowledge_IEs__value_PR present; + union RICcontrolAcknowledge_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolStatus_t RICcontrolStatus; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_IEs_t; +typedef struct RICcontrolFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolFailure_IEs__value { + RICcontrolFailure_IEs__value_PR present; + union RICcontrolFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcause_t RICcause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_IEs_t; +typedef struct RICserviceUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdate_IEs__value { + RICserviceUpdate_IEs__value_PR present; + union RICserviceUpdate_IEs__value_u { + RANfunctions_List_t RANfunctions_List; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_IEs_t; +typedef struct RICserviceUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateAcknowledge_IEs__value { + RICserviceUpdateAcknowledge_IEs__value_PR present; + union RICserviceUpdateAcknowledge_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_IEs_t; +typedef struct RICserviceUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateFailure_IEs__value { + RICserviceUpdateFailure_IEs__value_PR present; + union RICserviceUpdateFailure_IEs__value_u { + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_IEs_t; +typedef struct RICserviceQuery_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceQuery_IEs__value { + RICserviceQuery_IEs__value_PR present; + union RICserviceQuery_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_IEs_t; +typedef struct HandoverRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRequest_IEs__value { + HandoverRequest_IEs__value_PR present; + union HandoverRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + ECGI_t ECGI; + GUMMEI_t GUMMEI; + UE_ContextInformation_t UE_ContextInformation; + UE_HistoryInformation_t UE_HistoryInformation; + TraceActivation_t TraceActivation; + SRVCCOperationPossible_t SRVCCOperationPossible; + CSGMembershipStatus_t CSGMembershipStatus; + MobilityInformation_t MobilityInformation; + Masked_IMEISV_t Masked_IMEISV; + UE_HistoryInformationFromTheUE_t UE_HistoryInformationFromTheUE; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + ProSeAuthorized_t ProSeAuthorized; + UE_ContextReferenceAtSeNB_t UE_ContextReferenceAtSeNB; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + V2XServicesAuthorized_t V2XServicesAuthorized; + UE_ContextReferenceAtWT_t UE_ContextReferenceAtWT; + NRUESecurityCapabilities_t NRUESecurityCapabilities; + UE_ContextReferenceAtSgNB_t UE_ContextReferenceAtSgNB; + AerialUEsubscriptionInformation_t AerialUEsubscriptionInformation; + Subscription_Based_UE_DifferentiationInfo_t Subscription_Based_UE_DifferentiationInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequest_IEs_t; +typedef struct HandoverRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRequestAcknowledge_IEs__value { + HandoverRequestAcknowledge_IEs__value_PR present; + union HandoverRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_List_t E_RABs_Admitted_List; + E_RAB_List_t E_RAB_List; + TargeteNBtoSource_eNBTransparentContainer_t TargeteNBtoSource_eNBTransparentContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequestAcknowledge_IEs_t; +typedef struct HandoverPreparationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverPreparationFailure_IEs__value { + HandoverPreparationFailure_IEs__value_PR present; + union HandoverPreparationFailure_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverPreparationFailure_IEs_t; +typedef struct HandoverReport_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverReport_IEs__value { + HandoverReport_IEs__value_PR present; + union HandoverReport_IEs__value_u { + HandoverReportType_t HandoverReportType; + Cause_t Cause; + ECGI_t ECGI; + TargetCellInUTRAN_t TargetCellInUTRAN; + CRNTI_t CRNTI; + MobilityInformation_t MobilityInformation; + UE_RLF_Report_Container_t UE_RLF_Report_Container; + UE_RLF_Report_Container_for_extended_bands_t UE_RLF_Report_Container_for_extended_bands; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverReport_IEs_t; +typedef struct SNStatusTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SNStatusTransfer_IEs__value { + SNStatusTransfer_IEs__value_PR present; + union SNStatusTransfer_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_SubjectToStatusTransfer_List_t E_RABs_SubjectToStatusTransfer_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SNStatusTransfer_IEs_t; +typedef struct UEContextRelease_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEContextRelease_IEs__value { + UEContextRelease_IEs__value_PR present; + union UEContextRelease_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SIPTOBearerDeactivationIndication_t SIPTOBearerDeactivationIndication; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEContextRelease_IEs_t; +typedef struct HandoverCancel_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverCancel_IEs__value { + HandoverCancel_IEs__value_PR present; + union HandoverCancel_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverCancel_IEs_t; +typedef struct ErrorIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ErrorIndication_IEs__value { + ErrorIndication_IEs__value_PR present; + union ErrorIndication_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_IEs_t; +typedef struct ResetRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetRequest_IEs__value { + ResetRequest_IEs__value_PR present; + union ResetRequest_IEs__value_u { + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_IEs_t; +typedef struct ResetResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetResponse_IEs__value { + ResetResponse_IEs__value_PR present; + union ResetResponse_IEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_IEs_t; +typedef struct X2SetupRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupRequest_IEs__value { + X2SetupRequest_IEs__value_PR present; + union X2SetupRequest_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedCells_t ServedCells; + GUGroupIDList_t GUGroupIDList; + LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupRequest_IEs_t; +typedef struct X2SetupResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupResponse_IEs__value { + X2SetupResponse_IEs__value_PR present; + union X2SetupResponse_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedCells_t ServedCells; + GUGroupIDList_t GUGroupIDList; + CriticalityDiagnostics_t CriticalityDiagnostics; + LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupResponse_IEs_t; +typedef struct X2SetupFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupFailure_IEs__value { + X2SetupFailure_IEs__value_PR present; + union X2SetupFailure_IEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupFailure_IEs_t; +typedef struct LoadInformation_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LoadInformation_IEs__value { + LoadInformation_IEs__value_PR present; + union LoadInformation_IEs__value_u { + CellInformation_List_t CellInformation_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LoadInformation_IEs_t; +typedef struct ENBConfigurationUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdate_IEs__value { + ENBConfigurationUpdate_IEs__value_PR present; + union ENBConfigurationUpdate_IEs__value_u { + ServedCells_t ServedCells; + ServedCellsToModify_t ServedCellsToModify; + Old_ECGIs_t Old_ECGIs; + GUGroupIDList_t GUGroupIDList; + CoverageModificationList_t CoverageModificationList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdate_IEs_t; +typedef struct ENBConfigurationUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdateAcknowledge_IEs__value { + ENBConfigurationUpdateAcknowledge_IEs__value_PR present; + union ENBConfigurationUpdateAcknowledge_IEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateAcknowledge_IEs_t; +typedef struct ENBConfigurationUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdateFailure_IEs__value { + ENBConfigurationUpdateFailure_IEs__value_PR present; + union ENBConfigurationUpdateFailure_IEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateFailure_IEs_t; +typedef struct ResourceStatusRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusRequest_IEs__value { + ResourceStatusRequest_IEs__value_PR present; + union ResourceStatusRequest_IEs__value_u { + Measurement_ID_t Measurement_ID; + Registration_Request_t Registration_Request; + ReportCharacteristics_t ReportCharacteristics; + CellToReport_List_t CellToReport_List; + ReportingPeriodicity_t ReportingPeriodicity; + PartialSuccessIndicator_t PartialSuccessIndicator; + ReportingPeriodicityRSRPMR_t ReportingPeriodicityRSRPMR; + ReportingPeriodicityCSIR_t ReportingPeriodicityCSIR; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusRequest_IEs_t; +typedef struct ResourceStatusResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusResponse_IEs__value { + ResourceStatusResponse_IEs__value_PR present; + union ResourceStatusResponse_IEs__value_u { + Measurement_ID_t Measurement_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + MeasurementInitiationResult_List_t MeasurementInitiationResult_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusResponse_IEs_t; +typedef struct ResourceStatusFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusFailure_IEs__value { + ResourceStatusFailure_IEs__value_PR present; + union ResourceStatusFailure_IEs__value_u { + Measurement_ID_t Measurement_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + CompleteFailureCauseInformation_List_t CompleteFailureCauseInformation_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusFailure_IEs_t; +typedef struct ResourceStatusUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusUpdate_IEs__value { + ResourceStatusUpdate_IEs__value_PR present; + union ResourceStatusUpdate_IEs__value_u { + Measurement_ID_t Measurement_ID; + CellMeasurementResult_List_t CellMeasurementResult_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusUpdate_IEs_t; +typedef struct MobilityChangeRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeRequest_IEs__value { + MobilityChangeRequest_IEs__value_PR present; + union MobilityChangeRequest_IEs__value_u { + ECGI_t ECGI; + MobilityParametersInformation_t MobilityParametersInformation; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeRequest_IEs_t; +typedef struct MobilityChangeAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeAcknowledge_IEs__value { + MobilityChangeAcknowledge_IEs__value_PR present; + union MobilityChangeAcknowledge_IEs__value_u { + ECGI_t ECGI; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeAcknowledge_IEs_t; +typedef struct MobilityChangeFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeFailure_IEs__value { + MobilityChangeFailure_IEs__value_PR present; + union MobilityChangeFailure_IEs__value_u { + ECGI_t ECGI; + Cause_t Cause; + MobilityParametersModificationRange_t MobilityParametersModificationRange; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeFailure_IEs_t; +typedef struct RLFIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RLFIndication_IEs__value { + RLFIndication_IEs__value_PR present; + union RLFIndication_IEs__value_u { + PCI_t PCI; + ECGI_t ECGI; + CRNTI_t CRNTI; + ShortMAC_I_t ShortMAC_I; + UE_RLF_Report_Container_t UE_RLF_Report_Container; + RRCConnSetupIndicator_t RRCConnSetupIndicator; + RRCConnReestabIndicator_t RRCConnReestabIndicator; + UE_RLF_Report_Container_for_extended_bands_t UE_RLF_Report_Container_for_extended_bands; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLFIndication_IEs_t; +typedef struct CellActivationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationRequest_IEs__value { + CellActivationRequest_IEs__value_PR present; + union CellActivationRequest_IEs__value_u { + ServedCellsToActivate_t ServedCellsToActivate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationRequest_IEs_t; +typedef struct CellActivationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationResponse_IEs__value { + CellActivationResponse_IEs__value_PR present; + union CellActivationResponse_IEs__value_u { + ActivatedCellList_t ActivatedCellList; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationResponse_IEs_t; +typedef struct CellActivationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationFailure_IEs__value { + CellActivationFailure_IEs__value_PR present; + union CellActivationFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationFailure_IEs_t; +typedef struct X2Release_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2Release_IEs__value { + X2Release_IEs__value_PR present; + union X2Release_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2Release_IEs_t; +typedef struct X2APMessageTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2APMessageTransfer_IEs__value { + X2APMessageTransfer_IEs__value_PR present; + union X2APMessageTransfer_IEs__value_u { + RNL_Header_t RNL_Header; + X2AP_Message_t X2AP_Message; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2APMessageTransfer_IEs_t; +typedef struct SeNBAdditionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequest_IEs__value { + SeNBAdditionRequest_IEs__value_PR present; + union SeNBAdditionRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UESecurityCapabilities_t UESecurityCapabilities; + SeNBSecurityKey_t SeNBSecurityKey; + UEAggregateMaximumBitRate_t UEAggregateMaximumBitRate; + PLMN_Identity_t PLMN_Identity; + E_RABs_ToBeAdded_List_t E_RABs_ToBeAdded_List; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CSGMembershipStatus_t CSGMembershipStatus; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequest_IEs_t; +typedef struct SeNBAdditionRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequestAcknowledge_IEs__value { + SeNBAdditionRequestAcknowledge_IEs__value_PR present; + union SeNBAdditionRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_List_t E_RABs_Admitted_ToBeAdded_List; + E_RAB_List_t E_RAB_List; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + TransportLayerAddress_t TransportLayerAddress; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + TunnelInformation_t TunnelInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestAcknowledge_IEs_t; +typedef struct SeNBAdditionRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequestReject_IEs__value { + SeNBAdditionRequestReject_IEs__value_PR present; + union SeNBAdditionRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestReject_IEs_t; +typedef struct SeNBReconfigurationComplete_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReconfigurationComplete_IEs__value { + SeNBReconfigurationComplete_IEs__value_PR present; + union SeNBReconfigurationComplete_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + ResponseInformationSeNBReconfComp_t ResponseInformationSeNBReconfComp; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReconfigurationComplete_IEs_t; +typedef struct SeNBModificationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequest_IEs__value { + SeNBModificationRequest_IEs__value_PR present; + union SeNBModificationRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + SCGChangeIndication_t SCGChangeIndication; + PLMN_Identity_t PLMN_Identity; + UE_ContextInformationSeNBModReq_t UE_ContextInformationSeNBModReq; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CSGMembershipStatus_t CSGMembershipStatus; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequest_IEs_t; +typedef struct SeNBModificationRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequestAcknowledge_IEs__value { + SeNBModificationRequestAcknowledge_IEs__value_PR present; + union SeNBModificationRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_ModAckList_t E_RABs_Admitted_ToBeAdded_ModAckList; + E_RABs_Admitted_ToBeModified_ModAckList_t E_RABs_Admitted_ToBeModified_ModAckList; + E_RABs_Admitted_ToBeReleased_ModAckList_t E_RABs_Admitted_ToBeReleased_ModAckList; + E_RAB_List_t E_RAB_List; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestAcknowledge_IEs_t; +typedef struct SeNBModificationRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequestReject_IEs__value { + SeNBModificationRequestReject_IEs__value_PR present; + union SeNBModificationRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestReject_IEs_t; +typedef struct SeNBModificationRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequired_IEs__value { + SeNBModificationRequired_IEs__value_PR present; + union SeNBModificationRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + SCGChangeIndication_t SCGChangeIndication; + E_RABs_ToBeReleased_ModReqd_t E_RABs_ToBeReleased_ModReqd; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequired_IEs_t; +typedef struct SeNBModificationConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationConfirm_IEs__value { + SeNBModificationConfirm_IEs__value_PR present; + union SeNBModificationConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationConfirm_IEs_t; +typedef struct SeNBModificationRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRefuse_IEs__value { + SeNBModificationRefuse_IEs__value_PR present; + union SeNBModificationRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRefuse_IEs_t; +typedef struct SeNBReleaseRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseRequest_IEs__value { + SeNBReleaseRequest_IEs__value_PR present; + union SeNBReleaseRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + E_RABs_ToBeReleased_List_RelReq_t E_RABs_ToBeReleased_List_RelReq; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MakeBeforeBreakIndicator_t MakeBeforeBreakIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequest_IEs_t; +typedef struct SeNBReleaseRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseRequired_IEs__value { + SeNBReleaseRequired_IEs__value_PR present; + union SeNBReleaseRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequired_IEs_t; +typedef struct SeNBReleaseConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseConfirm_IEs__value { + SeNBReleaseConfirm_IEs__value_PR present; + union SeNBReleaseConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_ToBeReleased_List_RelConf_t E_RABs_ToBeReleased_List_RelConf; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseConfirm_IEs_t; +typedef struct SeNBCounterCheckRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBCounterCheckRequest_IEs__value { + SeNBCounterCheckRequest_IEs__value_PR present; + union SeNBCounterCheckRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_SubjectToCounterCheck_List_t E_RABs_SubjectToCounterCheck_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBCounterCheckRequest_IEs_t; +typedef struct X2RemovalRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalRequest_IEs__value { + X2RemovalRequest_IEs__value_PR present; + union X2RemovalRequest_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + X2BenefitValue_t X2BenefitValue; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalRequest_IEs_t; +typedef struct X2RemovalResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalResponse_IEs__value { + X2RemovalResponse_IEs__value_PR present; + union X2RemovalResponse_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalResponse_IEs_t; +typedef struct X2RemovalFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalFailure_IEs__value { + X2RemovalFailure_IEs__value_PR present; + union X2RemovalFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalFailure_IEs_t; +typedef struct RetrieveUEContextRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextRequest_IEs__value { + RetrieveUEContextRequest_IEs__value_PR present; + union RetrieveUEContextRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + ResumeID_t ResumeID; + ShortMAC_I_t ShortMAC_I; + EUTRANCellIdentifier_t EUTRANCellIdentifier; + CRNTI_t CRNTI; + PCI_t PCI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextRequest_IEs_t; +typedef struct RetrieveUEContextResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextResponse_IEs__value { + RetrieveUEContextResponse_IEs__value_PR present; + union RetrieveUEContextResponse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + GUMMEI_t GUMMEI; + UE_ContextInformationRetrieve_t UE_ContextInformationRetrieve; + TraceActivation_t TraceActivation; + SRVCCOperationPossible_t SRVCCOperationPossible; + Masked_IMEISV_t Masked_IMEISV; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + ProSeAuthorized_t ProSeAuthorized; + CriticalityDiagnostics_t CriticalityDiagnostics; + V2XServicesAuthorized_t V2XServicesAuthorized; + AerialUEsubscriptionInformation_t AerialUEsubscriptionInformation; + Subscription_Based_UE_DifferentiationInfo_t Subscription_Based_UE_DifferentiationInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextResponse_IEs_t; +typedef struct RetrieveUEContextFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextFailure_IEs__value { + RetrieveUEContextFailure_IEs__value_PR present; + union RetrieveUEContextFailure_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextFailure_IEs_t; +typedef struct SgNBAdditionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequest_IEs__value { + SgNBAdditionRequest_IEs__value_PR present; + union SgNBAdditionRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + NRUESecurityCapabilities_t NRUESecurityCapabilities; + SgNBSecurityKey_t SgNBSecurityKey; + UEAggregateMaximumBitRate_t UEAggregateMaximumBitRate; + PLMN_Identity_t PLMN_Identity; + HandoverRestrictionList_t HandoverRestrictionList; + E_RABs_ToBeAdded_SgNBAddReqList_t E_RABs_ToBeAdded_SgNBAddReqList; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SplitSRBs_t SplitSRBs; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + SGNB_Addition_Trigger_Ind_t SGNB_Addition_Trigger_Ind; + SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + ECGI_t ECGI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequest_IEs_t; +typedef struct SgNBAdditionRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequestAcknowledge_IEs__value { + SgNBAdditionRequestAcknowledge_IEs__value_PR present; + union SgNBAdditionRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList; + E_RAB_List_t E_RAB_List; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SplitSRBs_t SplitSRBs; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestAcknowledge_IEs_t; +typedef struct SgNBAdditionRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequestReject_IEs__value { + SgNBAdditionRequestReject_IEs__value_PR present; + union SgNBAdditionRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestReject_IEs_t; +typedef struct SgNBReconfigurationComplete_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReconfigurationComplete_IEs__value { + SgNBReconfigurationComplete_IEs__value_PR present; + union SgNBReconfigurationComplete_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + ResponseInformationSgNBReconfComp_t ResponseInformationSgNBReconfComp; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReconfigurationComplete_IEs_t; +typedef struct SgNBModificationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequest_IEs__value { + SgNBModificationRequest_IEs__value_PR present; + union SgNBModificationRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + PLMN_Identity_t PLMN_Identity; + HandoverRestrictionList_t HandoverRestrictionList; + SCGConfigurationQuery_t SCGConfigurationQuery; + UE_ContextInformation_SgNBModReq_t UE_ContextInformation_SgNBModReq; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + SplitSRBs_t SplitSRBs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequest_IEs_t; +typedef struct SgNBModificationRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequestAcknowledge_IEs__value { + SgNBModificationRequestAcknowledge_IEs__value_PR present; + union SgNBModificationRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_SgNBModAckList_t E_RABs_Admitted_ToBeAdded_SgNBModAckList; + E_RABs_Admitted_ToBeModified_SgNBModAckList_t E_RABs_Admitted_ToBeModified_SgNBModAckList; + E_RABs_Admitted_ToBeReleased_SgNBModAckList_t E_RABs_Admitted_ToBeReleased_SgNBModAckList; + E_RAB_List_t E_RAB_List; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + SplitSRBs_t SplitSRBs; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestAcknowledge_IEs_t; +typedef struct SgNBModificationRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequestReject_IEs__value { + SgNBModificationRequestReject_IEs__value_PR present; + union SgNBModificationRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestReject_IEs_t; +typedef struct SgNBModificationRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequired_IEs__value { + SgNBModificationRequired_IEs__value_PR present; + union SgNBModificationRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + PDCPChangeIndication_t PDCPChangeIndication; + E_RABs_ToBeReleased_SgNBModReqdList_t E_RABs_ToBeReleased_SgNBModReqdList; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_ToBeModified_SgNBModReqdList_t E_RABs_ToBeModified_SgNBModReqdList; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequired_IEs_t; +typedef struct SgNBModificationConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationConfirm_IEs__value { + SgNBModificationConfirm_IEs__value_PR present; + union SgNBModificationConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_AdmittedToBeModified_SgNBModConfList_t E_RABs_AdmittedToBeModified_SgNBModConfList; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationConfirm_IEs_t; +typedef struct SgNBModificationRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRefuse_IEs__value { + SgNBModificationRefuse_IEs__value_PR present; + union SgNBModificationRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRefuse_IEs_t; +typedef struct SgNBReleaseRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequest_IEs__value { + SgNBReleaseRequest_IEs__value_PR present; + union SgNBReleaseRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + E_RABs_ToBeReleased_SgNBRelReqList_t E_RABs_ToBeReleased_SgNBRelReqList; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequest_IEs_t; +typedef struct SgNBReleaseRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequestAcknowledge_IEs__value { + SgNBReleaseRequestAcknowledge_IEs__value_PR present; + union SgNBReleaseRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_t E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestAcknowledge_IEs_t; +typedef struct SgNBReleaseRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequestReject_IEs__value { + SgNBReleaseRequestReject_IEs__value_PR present; + union SgNBReleaseRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestReject_IEs_t; +typedef struct SgNBReleaseRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequired_IEs__value { + SgNBReleaseRequired_IEs__value_PR present; + union SgNBReleaseRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_ToBeReleased_SgNBRelReqdList_t E_RABs_ToBeReleased_SgNBRelReqdList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequired_IEs_t; +typedef struct SgNBReleaseConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseConfirm_IEs__value { + SgNBReleaseConfirm_IEs__value_PR present; + union SgNBReleaseConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_ToBeReleased_SgNBRelConfList_t E_RABs_ToBeReleased_SgNBRelConfList; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseConfirm_IEs_t; +typedef struct SgNBCounterCheckRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBCounterCheckRequest_IEs__value { + SgNBCounterCheckRequest_IEs__value_PR present; + union SgNBCounterCheckRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_SubjectToSgNBCounterCheck_List_t E_RABs_SubjectToSgNBCounterCheck_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBCounterCheckRequest_IEs_t; +typedef struct SgNBChangeRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeRequired_IEs__value { + SgNBChangeRequired_IEs__value_PR present; + union SgNBChangeRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + GlobalGNB_ID_t GlobalGNB_ID; + Cause_t Cause; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRequired_IEs_t; +typedef struct SgNBChangeConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeConfirm_IEs__value { + SgNBChangeConfirm_IEs__value_PR present; + union SgNBChangeConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_ToBeReleased_SgNBChaConfList_t E_RABs_ToBeReleased_SgNBChaConfList; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeConfirm_IEs_t; +typedef struct RRCTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RRCTransfer_IEs__value { + RRCTransfer_IEs__value_PR present; + union RRCTransfer_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + SplitSRB_t SplitSRB; + UENRMeasurement_t UENRMeasurement; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RRCTransfer_IEs_t; +typedef struct SgNBChangeRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeRefuse_IEs__value { + SgNBChangeRefuse_IEs__value_PR present; + union SgNBChangeRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRefuse_IEs_t; +typedef struct ENDCX2SetupRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupRequest_IEs__value { + ENDCX2SetupRequest_IEs__value_PR present; + union ENDCX2SetupRequest_IEs__value_u { + InitiatingNodeType_EndcX2Setup_t InitiatingNodeType_EndcX2Setup; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupRequest_IEs_t; +typedef struct ENB_ENDCX2SetupReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2SetupReqIEs__value { + ENB_ENDCX2SetupReqIEs__value_PR present; + union ENB_ENDCX2SetupReqIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2SetupReqIEs_t; +typedef struct En_gNB_ENDCX2SetupReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2SetupReqIEs__value { + En_gNB_ENDCX2SetupReqIEs__value_PR present; + union En_gNB_ENDCX2SetupReqIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2SetupReqIEs_t; +typedef struct ENDCX2SetupResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupResponse_IEs__value { + ENDCX2SetupResponse_IEs__value_PR present; + union ENDCX2SetupResponse_IEs__value_u { + RespondingNodeType_EndcX2Setup_t RespondingNodeType_EndcX2Setup; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupResponse_IEs_t; +typedef struct ENB_ENDCX2SetupReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2SetupReqAckIEs__value { + ENB_ENDCX2SetupReqAckIEs__value_PR present; + union ENB_ENDCX2SetupReqAckIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2SetupReqAckIEs_t; +typedef struct En_gNB_ENDCX2SetupReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2SetupReqAckIEs__value { + En_gNB_ENDCX2SetupReqAckIEs__value_PR present; + union En_gNB_ENDCX2SetupReqAckIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2SetupReqAckIEs_t; +typedef struct ENDCX2SetupFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupFailure_IEs__value { + ENDCX2SetupFailure_IEs__value_PR present; + union ENDCX2SetupFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + TimeToWait_t TimeToWait; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupFailure_IEs_t; +typedef struct ENDCConfigurationUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdate_IEs__value { + ENDCConfigurationUpdate_IEs__value_PR present; + union ENDCConfigurationUpdate_IEs__value_u { + InitiatingNodeType_EndcConfigUpdate_t InitiatingNodeType_EndcConfigUpdate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdate_IEs_t; +typedef struct ENB_ENDCConfigUpdateIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCConfigUpdateIEs__value { + ENB_ENDCConfigUpdateIEs__value_PR present; + union ENB_ENDCConfigUpdateIEs__value_u { + CellAssistanceInformation_t CellAssistanceInformation; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + ServedEUTRAcellsToModifyListENDCConfUpd_t ServedEUTRAcellsToModifyListENDCConfUpd; + ServedEUTRAcellsToDeleteListENDCConfUpd_t ServedEUTRAcellsToDeleteListENDCConfUpd; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCConfigUpdateIEs_t; +typedef struct En_gNB_ENDCConfigUpdateIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCConfigUpdateIEs__value { + En_gNB_ENDCConfigUpdateIEs__value_PR present; + union En_gNB_ENDCConfigUpdateIEs__value_u { + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + ServedNRcellsToModifyENDCConfUpdList_t ServedNRcellsToModifyENDCConfUpdList; + ServedNRcellsToDeleteENDCConfUpdList_t ServedNRcellsToDeleteENDCConfUpdList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCConfigUpdateIEs_t; +typedef struct ENDCConfigurationUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdateAcknowledge_IEs__value { + ENDCConfigurationUpdateAcknowledge_IEs__value_PR present; + union ENDCConfigurationUpdateAcknowledge_IEs__value_u { + RespondingNodeType_EndcConfigUpdate_t RespondingNodeType_EndcConfigUpdate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateAcknowledge_IEs_t; +typedef struct ENB_ENDCConfigUpdateAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCConfigUpdateAckIEs__value { + ENB_ENDCConfigUpdateAckIEs__value_PR present; + union ENB_ENDCConfigUpdateAckIEs__value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCConfigUpdateAckIEs_t; +typedef struct En_gNB_ENDCConfigUpdateAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCConfigUpdateAckIEs__value { + En_gNB_ENDCConfigUpdateAckIEs__value_PR present; + union En_gNB_ENDCConfigUpdateAckIEs__value_u { + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCConfigUpdateAckIEs_t; +typedef struct ENDCConfigurationUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdateFailure_IEs__value { + ENDCConfigurationUpdateFailure_IEs__value_PR present; + union ENDCConfigurationUpdateFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + TimeToWait_t TimeToWait; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateFailure_IEs_t; +typedef struct ENDCCellActivationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationRequest_IEs__value { + ENDCCellActivationRequest_IEs__value_PR present; + union ENDCCellActivationRequest_IEs__value_u { + ServedNRCellsToActivate_t ServedNRCellsToActivate; + ActivationID_t ActivationID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationRequest_IEs_t; +typedef struct ENDCCellActivationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationResponse_IEs__value { + ENDCCellActivationResponse_IEs__value_PR present; + union ENDCCellActivationResponse_IEs__value_u { + ActivatedNRCellList_t ActivatedNRCellList; + ActivationID_t ActivationID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationResponse_IEs_t; +typedef struct ENDCCellActivationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationFailure_IEs__value { + ENDCCellActivationFailure_IEs__value_PR present; + union ENDCCellActivationFailure_IEs__value_u { + ActivationID_t ActivationID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationFailure_IEs_t; +typedef struct SecondaryRATDataUsageReport_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATDataUsageReport_IEs__value { + SecondaryRATDataUsageReport_IEs__value_PR present; + union SecondaryRATDataUsageReport_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + SecondaryRATUsageReportList_t SecondaryRATUsageReportList; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATDataUsageReport_IEs_t; +typedef struct SgNBActivityNotification_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBActivityNotification_IEs__value { + SgNBActivityNotification_IEs__value_PR present; + union SgNBActivityNotification_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + UserPlaneTrafficActivityReport_t UserPlaneTrafficActivityReport; + ERABActivityNotifyItemList_t ERABActivityNotifyItemList; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBActivityNotification_IEs_t; +typedef struct ENDCPartialResetRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCPartialResetRequired_IEs__value { + ENDCPartialResetRequired_IEs__value_PR present; + union ENDCPartialResetRequired_IEs__value_u { + UEsToBeResetList_t UEsToBeResetList; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetRequired_IEs_t; +typedef struct ENDCPartialResetConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCPartialResetConfirm_IEs__value { + ENDCPartialResetConfirm_IEs__value_PR present; + union ENDCPartialResetConfirm_IEs__value_u { + UEsToBeResetList_t UEsToBeResetList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetConfirm_IEs_t; +typedef struct EUTRANRCellResourceCoordinationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EUTRANRCellResourceCoordinationRequest_IEs__value { + EUTRANRCellResourceCoordinationRequest_IEs__value_PR present; + union EUTRANRCellResourceCoordinationRequest_IEs__value_u { + InitiatingNodeType_EutranrCellResourceCoordination_t InitiatingNodeType_EutranrCellResourceCoordination; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationRequest_IEs_t; +typedef struct ENB_EUTRA_NRCellResourceCoordinationReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value { + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR present; + union ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofEUTRACellsinEUTRACoordinationReq_t ListofEUTRACellsinEUTRACoordinationReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_EUTRA_NRCellResourceCoordinationReqIEs_t; +typedef struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value { + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR present; + union En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + ListofEUTRACellsinNRCoordinationReq_t ListofEUTRACellsinNRCoordinationReq; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofNRCellsinNRCoordinationReq_t ListofNRCellsinNRCoordinationReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_t; +typedef struct EUTRANRCellResourceCoordinationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EUTRANRCellResourceCoordinationResponse_IEs__value { + EUTRANRCellResourceCoordinationResponse_IEs__value_PR present; + union EUTRANRCellResourceCoordinationResponse_IEs__value_u { + RespondingNodeType_EutranrCellResourceCoordination_t RespondingNodeType_EutranrCellResourceCoordination; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationResponse_IEs_t; +typedef struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value { + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR present; + union ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofEUTRACellsinEUTRACoordinationResp_t ListofEUTRACellsinEUTRACoordinationResp; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_t; +typedef struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value { + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR present; + union En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofNRCellsinNRCoordinationResp_t ListofNRCellsinNRCoordinationResp; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_t; +typedef struct ENDCX2RemovalRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalRequest_IEs__value { + ENDCX2RemovalRequest_IEs__value_PR present; + union ENDCX2RemovalRequest_IEs__value_u { + InitiatingNodeType_EndcX2Removal_t InitiatingNodeType_EndcX2Removal; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalRequest_IEs_t; +typedef struct ENB_ENDCX2RemovalReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2RemovalReqIEs__value { + ENB_ENDCX2RemovalReqIEs__value_PR present; + union ENB_ENDCX2RemovalReqIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2RemovalReqIEs_t; +typedef struct En_gNB_ENDCX2RemovalReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2RemovalReqIEs__value { + En_gNB_ENDCX2RemovalReqIEs__value_PR present; + union En_gNB_ENDCX2RemovalReqIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2RemovalReqIEs_t; +typedef struct ENDCX2RemovalResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalResponse_IEs__value { + ENDCX2RemovalResponse_IEs__value_PR present; + union ENDCX2RemovalResponse_IEs__value_u { + RespondingNodeType_EndcX2Removal_t RespondingNodeType_EndcX2Removal; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalResponse_IEs_t; +typedef struct ENB_ENDCX2RemovalReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2RemovalReqAckIEs__value { + ENB_ENDCX2RemovalReqAckIEs__value_PR present; + union ENB_ENDCX2RemovalReqAckIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2RemovalReqAckIEs_t; +typedef struct En_gNB_ENDCX2RemovalReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2RemovalReqAckIEs__value { + En_gNB_ENDCX2RemovalReqAckIEs__value_PR present; + union En_gNB_ENDCX2RemovalReqAckIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2RemovalReqAckIEs_t; +typedef struct ENDCX2RemovalFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalFailure_IEs__value { + ENDCX2RemovalFailure_IEs__value_PR present; + union ENDCX2RemovalFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalFailure_IEs_t; +typedef struct DataForwardingAddressIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DataForwardingAddressIndication_IEs__value { + DataForwardingAddressIndication_IEs__value_PR present; + union DataForwardingAddressIndication_IEs__value_u { + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_DataForwardingAddress_List_t E_RABs_DataForwardingAddress_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataForwardingAddressIndication_IEs_t; +typedef struct GNBStatusIndicationIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GNBStatusIndicationIEs__value { + GNBStatusIndicationIEs__value_PR present; + union GNBStatusIndicationIEs__value_u { + GNBOverloadInformation_t GNBOverloadInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNBStatusIndicationIEs_t; +typedef struct E_RAB_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_ItemIEs__value { + E_RAB_ItemIEs__value_PR present; + union E_RAB_ItemIEs__value_u { + E_RAB_Item_t E_RAB_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_ItemIEs_t; +typedef struct E_RABUsageReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABUsageReport_ItemIEs__value { + E_RABUsageReport_ItemIEs__value_PR present; + union E_RABUsageReport_ItemIEs__value_u { + E_RABUsageReport_Item_t E_RABUsageReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReport_ItemIEs_t; +typedef struct SecondaryRATUsageReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATUsageReport_ItemIEs__value { + SecondaryRATUsageReport_ItemIEs__value_PR present; + union SecondaryRATUsageReport_ItemIEs__value_u { + SecondaryRATUsageReport_Item_t SecondaryRATUsageReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReport_ItemIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ItemIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ItemIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_ItemIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_CellInformation_ItemIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_ItemIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_CellToReport_ItemIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_ItemIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_ItemIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_ItemIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_ItemIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_ItemIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_ItemIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ItemIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_185; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_189; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_193; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_209; +extern asn_TYPE_member_t asn_MBR_RICindication_IEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_213; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_217; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_221; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_225; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_233; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_237; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_IEs_specs_241; +extern asn_TYPE_member_t asn_MBR_HandoverRequest_IEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_IEs_specs_245; +extern asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_IEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_IEs_specs_249; +extern asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_IEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverReport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_IEs_specs_253; +extern asn_TYPE_member_t asn_MBR_HandoverReport_IEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_IEs_specs_257; +extern asn_TYPE_member_t asn_MBR_SNStatusTransfer_IEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEContextRelease_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_IEs_specs_261; +extern asn_TYPE_member_t asn_MBR_UEContextRelease_IEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverCancel_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_IEs_specs_265; +extern asn_TYPE_member_t asn_MBR_HandoverCancel_IEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_269; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_IEs_specs_273; +extern asn_TYPE_member_t asn_MBR_ResetRequest_IEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_IEs_specs_277; +extern asn_TYPE_member_t asn_MBR_ResetResponse_IEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_IEs_specs_281; +extern asn_TYPE_member_t asn_MBR_X2SetupRequest_IEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_IEs_specs_285; +extern asn_TYPE_member_t asn_MBR_X2SetupResponse_IEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_IEs_specs_289; +extern asn_TYPE_member_t asn_MBR_X2SetupFailure_IEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_LoadInformation_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_IEs_specs_293; +extern asn_TYPE_member_t asn_MBR_LoadInformation_IEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_IEs_specs_297; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_IEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_IEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_IEs_specs_309; +extern asn_TYPE_member_t asn_MBR_ResourceStatusRequest_IEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_IEs_specs_313; +extern asn_TYPE_member_t asn_MBR_ResourceStatusResponse_IEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_IEs_specs_317; +extern asn_TYPE_member_t asn_MBR_ResourceStatusFailure_IEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_IEs_specs_321; +extern asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_IEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_IEs_specs_325; +extern asn_TYPE_member_t asn_MBR_MobilityChangeRequest_IEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_IEs_specs_329; +extern asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_IEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_IEs_specs_333; +extern asn_TYPE_member_t asn_MBR_MobilityChangeFailure_IEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_RLFIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_IEs_specs_337; +extern asn_TYPE_member_t asn_MBR_RLFIndication_IEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_IEs_specs_341; +extern asn_TYPE_member_t asn_MBR_CellActivationRequest_IEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_IEs_specs_345; +extern asn_TYPE_member_t asn_MBR_CellActivationResponse_IEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_IEs_specs_349; +extern asn_TYPE_member_t asn_MBR_CellActivationFailure_IEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2Release_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2Release_IEs_specs_353; +extern asn_TYPE_member_t asn_MBR_X2Release_IEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_IEs_specs_357; +extern asn_TYPE_member_t asn_MBR_X2APMessageTransfer_IEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_IEs_specs_361; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_IEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_IEs_specs_369; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_IEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_IEs_specs_373; +extern asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_IEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_IEs_specs_377; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequest_IEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_IEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_IEs_specs_385; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_IEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_IEs_specs_389; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequired_IEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_IEs_specs_393; +extern asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_IEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_IEs_specs_397; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_IEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_IEs_specs_401; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_IEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_IEs_specs_405; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_IEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_IEs_specs_409; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_IEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_IEs_specs_413; +extern asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_IEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_IEs_specs_417; +extern asn_TYPE_member_t asn_MBR_X2RemovalRequest_IEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_IEs_specs_421; +extern asn_TYPE_member_t asn_MBR_X2RemovalResponse_IEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_IEs_specs_425; +extern asn_TYPE_member_t asn_MBR_X2RemovalFailure_IEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_IEs_specs_429; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_IEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_IEs_specs_433; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_IEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_IEs_specs_437; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_IEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_IEs_specs_441; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_IEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_IEs_specs_449; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_IEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_IEs_specs_453; +extern asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_IEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_IEs_specs_457; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequest_IEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_IEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_IEs_specs_465; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_IEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_IEs_specs_469; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequired_IEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_IEs_specs_473; +extern asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_IEs_473[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_IEs_specs_477; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_IEs_477[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_IEs_specs_481; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_IEs_481[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_IEs_specs_489; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_IEs_489[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_IEs_specs_493; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_IEs_493[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_IEs_specs_497; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_IEs_497[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_IEs_specs_501; +extern asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_IEs_501[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_IEs_specs_505; +extern asn_TYPE_member_t asn_MBR_SgNBChangeRequired_IEs_505[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_IEs_specs_509; +extern asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_IEs_509[3]; +extern asn_TYPE_descriptor_t asn_DEF_RRCTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_IEs_specs_513; +extern asn_TYPE_member_t asn_MBR_RRCTransfer_IEs_513[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_IEs_specs_517; +extern asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_IEs_517[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_IEs_specs_521; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_IEs_521[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqIEs_525[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqIEs_529[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_IEs_specs_533; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_IEs_533[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqAckIEs_537[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_IEs_specs_545; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_IEs_545[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_IEs_specs_549; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_IEs_549[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateIEs_553[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateIEs_557[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateAckIEs_565[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_IEs_573[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_IEs_specs_577; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_IEs_577[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_IEs_specs_581; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_IEs_581[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_IEs_specs_585; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_IEs_585[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589; +extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_IEs_589[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_IEs_specs_593; +extern asn_TYPE_member_t asn_MBR_SgNBActivityNotification_IEs_593[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_IEs_specs_597; +extern asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_IEs_597[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_IEs_specs_601; +extern asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_IEs_601[3]; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605; +extern asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609; +extern asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613; +extern asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613[3]; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617; +extern asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621; +extern asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625; +extern asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_IEs_specs_629; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_IEs_629[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqIEs_633[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_IEs_specs_641; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_IEs_641[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_IEs_specs_653; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_IEs_653[3]; +extern asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_IEs_specs_657; +extern asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_IEs_657[3]; +extern asn_TYPE_descriptor_t asn_DEF_GNBStatusIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndicationIEs_specs_661; +extern asn_TYPE_member_t asn_MBR_GNBStatusIndicationIEs_661[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_ItemIEs_specs_665; +extern asn_TYPE_member_t asn_MBR_E_RAB_ItemIEs_665[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_ItemIEs_specs_669; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_ItemIEs_669[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_ItemIEs_673[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c new file mode 100644 index 0000000..a2fd394 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c @@ -0,0 +1,28 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h new file mode 100644 index 0000000..4bc38eb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h @@ -0,0 +1,42 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.c new file mode 100644 index 0000000..3bd7a50 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.h new file mode 100644 index 0000000..63bd418 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-ID.h @@ -0,0 +1,415 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)60001) +#define ProtocolIE_ID_id_RANfunctionDefinition ((ProtocolIE_ID_t)60002) +#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)60003) +#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)60004) +#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)60005) +#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)60006) +#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)60007) +#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)60008) +#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)60009) +#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)60010) +#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)60011) +#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)60012) +#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)60013) +#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)60014) +#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)60015) +#define ProtocolIE_ID_id_RICactionDefinition ((ProtocolIE_ID_t)60016) +#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)60017) +#define ProtocolIE_ID_id_RICactionType ((ProtocolIE_ID_t)60018) +#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)60019) +#define ProtocolIE_ID_id_RICcause ((ProtocolIE_ID_t)60020) +#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)60021) +#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)60022) +#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)60023) +#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)60024) +#define ProtocolIE_ID_id_RICeventTriggerDefinition ((ProtocolIE_ID_t)60025) +#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)60026) +#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)60027) +#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)60028) +#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)60029) +#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)60030) +#define ProtocolIE_ID_id_RICrequestorID ((ProtocolIE_ID_t)60031) +#define ProtocolIE_ID_id_RICrequestSequenceNumber ((ProtocolIE_ID_t)60032) +#define ProtocolIE_ID_id_RICsubscription ((ProtocolIE_ID_t)60033) +#define ProtocolIE_ID_id_RICsubsequentAction ((ProtocolIE_ID_t)60034) +#define ProtocolIE_ID_id_RICsubsequentActionType ((ProtocolIE_ID_t)60035) +#define ProtocolIE_ID_id_RICtimeToWait ((ProtocolIE_ID_t)60036) +#define ProtocolIE_ID_id_E_RABs_Admitted_Item ((ProtocolIE_ID_t)0) +#define ProtocolIE_ID_id_E_RABs_Admitted_List ((ProtocolIE_ID_t)1) +#define ProtocolIE_ID_id_E_RAB_Item ((ProtocolIE_ID_t)2) +#define ProtocolIE_ID_id_E_RABs_NotAdmitted_List ((ProtocolIE_ID_t)3) +#define ProtocolIE_ID_id_E_RABs_ToBeSetup_Item ((ProtocolIE_ID_t)4) +#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)5) +#define ProtocolIE_ID_id_CellInformation ((ProtocolIE_ID_t)6) +#define ProtocolIE_ID_id_CellInformation_Item ((ProtocolIE_ID_t)7) +#define ProtocolIE_ID_id_New_eNB_UE_X2AP_ID ((ProtocolIE_ID_t)9) +#define ProtocolIE_ID_id_Old_eNB_UE_X2AP_ID ((ProtocolIE_ID_t)10) +#define ProtocolIE_ID_id_TargetCell_ID ((ProtocolIE_ID_t)11) +#define ProtocolIE_ID_id_TargeteNBtoSource_eNBTransparentContainer ((ProtocolIE_ID_t)12) +#define ProtocolIE_ID_id_TraceActivation ((ProtocolIE_ID_t)13) +#define ProtocolIE_ID_id_UE_ContextInformation ((ProtocolIE_ID_t)14) +#define ProtocolIE_ID_id_UE_HistoryInformation ((ProtocolIE_ID_t)15) +#define ProtocolIE_ID_id_UE_X2AP_ID ((ProtocolIE_ID_t)16) +#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)17) +#define ProtocolIE_ID_id_E_RABs_SubjectToStatusTransfer_List ((ProtocolIE_ID_t)18) +#define ProtocolIE_ID_id_E_RABs_SubjectToStatusTransfer_Item ((ProtocolIE_ID_t)19) +#define ProtocolIE_ID_id_ServedCells ((ProtocolIE_ID_t)20) +#define ProtocolIE_ID_id_GlobalENB_ID ((ProtocolIE_ID_t)21) +#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)22) +#define ProtocolIE_ID_id_GUMMEI_ID ((ProtocolIE_ID_t)23) +#define ProtocolIE_ID_id_GUGroupIDList ((ProtocolIE_ID_t)24) +#define ProtocolIE_ID_id_ServedCellsToAdd ((ProtocolIE_ID_t)25) +#define ProtocolIE_ID_id_ServedCellsToModify ((ProtocolIE_ID_t)26) +#define ProtocolIE_ID_id_ServedCellsToDelete ((ProtocolIE_ID_t)27) +#define ProtocolIE_ID_id_Registration_Request ((ProtocolIE_ID_t)28) +#define ProtocolIE_ID_id_CellToReport ((ProtocolIE_ID_t)29) +#define ProtocolIE_ID_id_ReportingPeriodicity ((ProtocolIE_ID_t)30) +#define ProtocolIE_ID_id_CellToReport_Item ((ProtocolIE_ID_t)31) +#define ProtocolIE_ID_id_CellMeasurementResult ((ProtocolIE_ID_t)32) +#define ProtocolIE_ID_id_CellMeasurementResult_Item ((ProtocolIE_ID_t)33) +#define ProtocolIE_ID_id_GUGroupIDToAddList ((ProtocolIE_ID_t)34) +#define ProtocolIE_ID_id_GUGroupIDToDeleteList ((ProtocolIE_ID_t)35) +#define ProtocolIE_ID_id_SRVCCOperationPossible ((ProtocolIE_ID_t)36) +#define ProtocolIE_ID_id_Measurement_ID ((ProtocolIE_ID_t)37) +#define ProtocolIE_ID_id_ReportCharacteristics ((ProtocolIE_ID_t)38) +#define ProtocolIE_ID_id_ENB1_Measurement_ID ((ProtocolIE_ID_t)39) +#define ProtocolIE_ID_id_ENB2_Measurement_ID ((ProtocolIE_ID_t)40) +#define ProtocolIE_ID_id_Number_of_Antennaports ((ProtocolIE_ID_t)41) +#define ProtocolIE_ID_id_CompositeAvailableCapacityGroup ((ProtocolIE_ID_t)42) +#define ProtocolIE_ID_id_ENB1_Cell_ID ((ProtocolIE_ID_t)43) +#define ProtocolIE_ID_id_ENB2_Cell_ID ((ProtocolIE_ID_t)44) +#define ProtocolIE_ID_id_ENB2_Proposed_Mobility_Parameters ((ProtocolIE_ID_t)45) +#define ProtocolIE_ID_id_ENB1_Mobility_Parameters ((ProtocolIE_ID_t)46) +#define ProtocolIE_ID_id_ENB2_Mobility_Parameters_Modification_Range ((ProtocolIE_ID_t)47) +#define ProtocolIE_ID_id_FailureCellPCI ((ProtocolIE_ID_t)48) +#define ProtocolIE_ID_id_Re_establishmentCellECGI ((ProtocolIE_ID_t)49) +#define ProtocolIE_ID_id_FailureCellCRNTI ((ProtocolIE_ID_t)50) +#define ProtocolIE_ID_id_ShortMAC_I ((ProtocolIE_ID_t)51) +#define ProtocolIE_ID_id_SourceCellECGI ((ProtocolIE_ID_t)52) +#define ProtocolIE_ID_id_FailureCellECGI ((ProtocolIE_ID_t)53) +#define ProtocolIE_ID_id_HandoverReportType ((ProtocolIE_ID_t)54) +#define ProtocolIE_ID_id_PRACH_Configuration ((ProtocolIE_ID_t)55) +#define ProtocolIE_ID_id_MBSFN_Subframe_Info ((ProtocolIE_ID_t)56) +#define ProtocolIE_ID_id_ServedCellsToActivate ((ProtocolIE_ID_t)57) +#define ProtocolIE_ID_id_ActivatedCellList ((ProtocolIE_ID_t)58) +#define ProtocolIE_ID_id_DeactivationIndication ((ProtocolIE_ID_t)59) +#define ProtocolIE_ID_id_UE_RLF_Report_Container ((ProtocolIE_ID_t)60) +#define ProtocolIE_ID_id_ABSInformation ((ProtocolIE_ID_t)61) +#define ProtocolIE_ID_id_InvokeIndication ((ProtocolIE_ID_t)62) +#define ProtocolIE_ID_id_ABS_Status ((ProtocolIE_ID_t)63) +#define ProtocolIE_ID_id_PartialSuccessIndicator ((ProtocolIE_ID_t)64) +#define ProtocolIE_ID_id_MeasurementInitiationResult_List ((ProtocolIE_ID_t)65) +#define ProtocolIE_ID_id_MeasurementInitiationResult_Item ((ProtocolIE_ID_t)66) +#define ProtocolIE_ID_id_MeasurementFailureCause_Item ((ProtocolIE_ID_t)67) +#define ProtocolIE_ID_id_CompleteFailureCauseInformation_List ((ProtocolIE_ID_t)68) +#define ProtocolIE_ID_id_CompleteFailureCauseInformation_Item ((ProtocolIE_ID_t)69) +#define ProtocolIE_ID_id_CSG_Id ((ProtocolIE_ID_t)70) +#define ProtocolIE_ID_id_CSGMembershipStatus ((ProtocolIE_ID_t)71) +#define ProtocolIE_ID_id_MDTConfiguration ((ProtocolIE_ID_t)72) +#define ProtocolIE_ID_id_ManagementBasedMDTallowed ((ProtocolIE_ID_t)74) +#define ProtocolIE_ID_id_RRCConnSetupIndicator ((ProtocolIE_ID_t)75) +#define ProtocolIE_ID_id_NeighbourTAC ((ProtocolIE_ID_t)76) +#define ProtocolIE_ID_id_Time_UE_StayedInCell_EnhancedGranularity ((ProtocolIE_ID_t)77) +#define ProtocolIE_ID_id_RRCConnReestabIndicator ((ProtocolIE_ID_t)78) +#define ProtocolIE_ID_id_MBMS_Service_Area_List ((ProtocolIE_ID_t)79) +#define ProtocolIE_ID_id_HO_cause ((ProtocolIE_ID_t)80) +#define ProtocolIE_ID_id_TargetCellInUTRAN ((ProtocolIE_ID_t)81) +#define ProtocolIE_ID_id_MobilityInformation ((ProtocolIE_ID_t)82) +#define ProtocolIE_ID_id_SourceCellCRNTI ((ProtocolIE_ID_t)83) +#define ProtocolIE_ID_id_MultibandInfoList ((ProtocolIE_ID_t)84) +#define ProtocolIE_ID_id_M3Configuration ((ProtocolIE_ID_t)85) +#define ProtocolIE_ID_id_M4Configuration ((ProtocolIE_ID_t)86) +#define ProtocolIE_ID_id_M5Configuration ((ProtocolIE_ID_t)87) +#define ProtocolIE_ID_id_MDT_Location_Info ((ProtocolIE_ID_t)88) +#define ProtocolIE_ID_id_ManagementBasedMDTPLMNList ((ProtocolIE_ID_t)89) +#define ProtocolIE_ID_id_SignallingBasedMDTPLMNList ((ProtocolIE_ID_t)90) +#define ProtocolIE_ID_id_ReceiveStatusOfULPDCPSDUsExtended ((ProtocolIE_ID_t)91) +#define ProtocolIE_ID_id_ULCOUNTValueExtended ((ProtocolIE_ID_t)92) +#define ProtocolIE_ID_id_DLCOUNTValueExtended ((ProtocolIE_ID_t)93) +#define ProtocolIE_ID_id_eARFCNExtension ((ProtocolIE_ID_t)94) +#define ProtocolIE_ID_id_UL_EARFCNExtension ((ProtocolIE_ID_t)95) +#define ProtocolIE_ID_id_DL_EARFCNExtension ((ProtocolIE_ID_t)96) +#define ProtocolIE_ID_id_AdditionalSpecialSubframe_Info ((ProtocolIE_ID_t)97) +#define ProtocolIE_ID_id_Masked_IMEISV ((ProtocolIE_ID_t)98) +#define ProtocolIE_ID_id_IntendedULDLConfiguration ((ProtocolIE_ID_t)99) +#define ProtocolIE_ID_id_ExtendedULInterferenceOverloadInfo ((ProtocolIE_ID_t)100) +#define ProtocolIE_ID_id_RNL_Header ((ProtocolIE_ID_t)101) +#define ProtocolIE_ID_id_x2APMessage ((ProtocolIE_ID_t)102) +#define ProtocolIE_ID_id_ProSeAuthorized ((ProtocolIE_ID_t)103) +#define ProtocolIE_ID_id_ExpectedUEBehaviour ((ProtocolIE_ID_t)104) +#define ProtocolIE_ID_id_UE_HistoryInformationFromTheUE ((ProtocolIE_ID_t)105) +#define ProtocolIE_ID_id_DynamicDLTransmissionInformation ((ProtocolIE_ID_t)106) +#define ProtocolIE_ID_id_UE_RLF_Report_Container_for_extended_bands ((ProtocolIE_ID_t)107) +#define ProtocolIE_ID_id_CoMPInformation ((ProtocolIE_ID_t)108) +#define ProtocolIE_ID_id_ReportingPeriodicityRSRPMR ((ProtocolIE_ID_t)109) +#define ProtocolIE_ID_id_RSRPMRList ((ProtocolIE_ID_t)110) +#define ProtocolIE_ID_id_MeNB_UE_X2AP_ID ((ProtocolIE_ID_t)111) +#define ProtocolIE_ID_id_SeNB_UE_X2AP_ID ((ProtocolIE_ID_t)112) +#define ProtocolIE_ID_id_UE_SecurityCapabilities ((ProtocolIE_ID_t)113) +#define ProtocolIE_ID_id_SeNBSecurityKey ((ProtocolIE_ID_t)114) +#define ProtocolIE_ID_id_SeNBUEAggregateMaximumBitRate ((ProtocolIE_ID_t)115) +#define ProtocolIE_ID_id_ServingPLMN ((ProtocolIE_ID_t)116) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_List ((ProtocolIE_ID_t)117) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_Item ((ProtocolIE_ID_t)118) +#define ProtocolIE_ID_id_MeNBtoSeNBContainer ((ProtocolIE_ID_t)119) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_List ((ProtocolIE_ID_t)120) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_Item ((ProtocolIE_ID_t)121) +#define ProtocolIE_ID_id_SeNBtoMeNBContainer ((ProtocolIE_ID_t)122) +#define ProtocolIE_ID_id_ResponseInformationSeNBReconfComp ((ProtocolIE_ID_t)123) +#define ProtocolIE_ID_id_UE_ContextInformationSeNBModReq ((ProtocolIE_ID_t)124) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_ModReqItem ((ProtocolIE_ID_t)125) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_ModReqItem ((ProtocolIE_ID_t)126) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqItem ((ProtocolIE_ID_t)127) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_ModAckList ((ProtocolIE_ID_t)128) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_ModAckList ((ProtocolIE_ID_t)129) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_ModAckList ((ProtocolIE_ID_t)130) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_ModAckItem ((ProtocolIE_ID_t)131) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_ModAckItem ((ProtocolIE_ID_t)132) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_ModAckItem ((ProtocolIE_ID_t)133) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqd ((ProtocolIE_ID_t)134) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqdItem ((ProtocolIE_ID_t)135) +#define ProtocolIE_ID_id_SCGChangeIndication ((ProtocolIE_ID_t)136) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_List_RelReq ((ProtocolIE_ID_t)137) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_RelReqItem ((ProtocolIE_ID_t)138) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_List_RelConf ((ProtocolIE_ID_t)139) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_RelConfItem ((ProtocolIE_ID_t)140) +#define ProtocolIE_ID_id_E_RABs_SubjectToCounterCheck_List ((ProtocolIE_ID_t)141) +#define ProtocolIE_ID_id_E_RABs_SubjectToCounterCheckItem ((ProtocolIE_ID_t)142) +#define ProtocolIE_ID_id_CoverageModificationList ((ProtocolIE_ID_t)143) +#define ProtocolIE_ID_id_ReportingPeriodicityCSIR ((ProtocolIE_ID_t)145) +#define ProtocolIE_ID_id_CSIReportList ((ProtocolIE_ID_t)146) +#define ProtocolIE_ID_id_UEID ((ProtocolIE_ID_t)147) +#define ProtocolIE_ID_id_enhancedRNTP ((ProtocolIE_ID_t)148) +#define ProtocolIE_ID_id_ProSeUEtoNetworkRelaying ((ProtocolIE_ID_t)149) +#define ProtocolIE_ID_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 ((ProtocolIE_ID_t)150) +#define ProtocolIE_ID_id_ULCOUNTValuePDCP_SNlength18 ((ProtocolIE_ID_t)151) +#define ProtocolIE_ID_id_DLCOUNTValuePDCP_SNlength18 ((ProtocolIE_ID_t)152) +#define ProtocolIE_ID_id_UE_ContextReferenceAtSeNB ((ProtocolIE_ID_t)153) +#define ProtocolIE_ID_id_UE_ContextKeptIndicator ((ProtocolIE_ID_t)154) +#define ProtocolIE_ID_id_New_eNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)155) +#define ProtocolIE_ID_id_Old_eNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)156) +#define ProtocolIE_ID_id_MeNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)157) +#define ProtocolIE_ID_id_SeNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)158) +#define ProtocolIE_ID_id_LHN_ID ((ProtocolIE_ID_t)159) +#define ProtocolIE_ID_id_FreqBandIndicatorPriority ((ProtocolIE_ID_t)160) +#define ProtocolIE_ID_id_M6Configuration ((ProtocolIE_ID_t)161) +#define ProtocolIE_ID_id_M7Configuration ((ProtocolIE_ID_t)162) +#define ProtocolIE_ID_id_Tunnel_Information_for_BBF ((ProtocolIE_ID_t)163) +#define ProtocolIE_ID_id_SIPTO_BearerDeactivationIndication ((ProtocolIE_ID_t)164) +#define ProtocolIE_ID_id_GW_TransportLayerAddress ((ProtocolIE_ID_t)165) +#define ProtocolIE_ID_id_Correlation_ID ((ProtocolIE_ID_t)166) +#define ProtocolIE_ID_id_SIPTO_Correlation_ID ((ProtocolIE_ID_t)167) +#define ProtocolIE_ID_id_SIPTO_L_GW_TransportLayerAddress ((ProtocolIE_ID_t)168) +#define ProtocolIE_ID_id_X2RemovalThreshold ((ProtocolIE_ID_t)169) +#define ProtocolIE_ID_id_CellReportingIndicator ((ProtocolIE_ID_t)170) +#define ProtocolIE_ID_id_BearerType ((ProtocolIE_ID_t)171) +#define ProtocolIE_ID_id_resumeID ((ProtocolIE_ID_t)172) +#define ProtocolIE_ID_id_UE_ContextInformationRetrieve ((ProtocolIE_ID_t)173) +#define ProtocolIE_ID_id_E_RABs_ToBeSetupRetrieve_Item ((ProtocolIE_ID_t)174) +#define ProtocolIE_ID_id_NewEUTRANCellIdentifier ((ProtocolIE_ID_t)175) +#define ProtocolIE_ID_id_V2XServicesAuthorized ((ProtocolIE_ID_t)176) +#define ProtocolIE_ID_id_OffsetOfNbiotChannelNumberToDL_EARFCN ((ProtocolIE_ID_t)177) +#define ProtocolIE_ID_id_OffsetOfNbiotChannelNumberToUL_EARFCN ((ProtocolIE_ID_t)178) +#define ProtocolIE_ID_id_AdditionalSpecialSubframeExtension_Info ((ProtocolIE_ID_t)179) +#define ProtocolIE_ID_id_BandwidthReducedSI ((ProtocolIE_ID_t)180) +#define ProtocolIE_ID_id_MakeBeforeBreakIndicator ((ProtocolIE_ID_t)181) +#define ProtocolIE_ID_id_UE_ContextReferenceAtWT ((ProtocolIE_ID_t)182) +#define ProtocolIE_ID_id_WT_UE_ContextKeptIndicator ((ProtocolIE_ID_t)183) +#define ProtocolIE_ID_id_UESidelinkAggregateMaximumBitRate ((ProtocolIE_ID_t)184) +#define ProtocolIE_ID_id_uL_GTPtunnelEndpoint ((ProtocolIE_ID_t)185) +#define ProtocolIE_ID_id_DL_scheduling_PDCCH_CCE_usage ((ProtocolIE_ID_t)193) +#define ProtocolIE_ID_id_UL_scheduling_PDCCH_CCE_usage ((ProtocolIE_ID_t)194) +#define ProtocolIE_ID_id_UEAppLayerMeasConfig ((ProtocolIE_ID_t)195) +#define ProtocolIE_ID_id_extended_e_RAB_MaximumBitrateDL ((ProtocolIE_ID_t)196) +#define ProtocolIE_ID_id_extended_e_RAB_MaximumBitrateUL ((ProtocolIE_ID_t)197) +#define ProtocolIE_ID_id_extended_e_RAB_GuaranteedBitrateDL ((ProtocolIE_ID_t)198) +#define ProtocolIE_ID_id_extended_e_RAB_GuaranteedBitrateUL ((ProtocolIE_ID_t)199) +#define ProtocolIE_ID_id_extended_uEaggregateMaximumBitRateDownlink ((ProtocolIE_ID_t)200) +#define ProtocolIE_ID_id_extended_uEaggregateMaximumBitRateUplink ((ProtocolIE_ID_t)201) +#define ProtocolIE_ID_id_NRrestrictioninEPSasSecondaryRAT ((ProtocolIE_ID_t)202) +#define ProtocolIE_ID_id_SgNBSecurityKey ((ProtocolIE_ID_t)203) +#define ProtocolIE_ID_id_SgNBUEAggregateMaximumBitRate ((ProtocolIE_ID_t)204) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBAddReqList ((ProtocolIE_ID_t)205) +#define ProtocolIE_ID_id_MeNBtoSgNBContainer ((ProtocolIE_ID_t)206) +#define ProtocolIE_ID_id_SgNB_UE_X2AP_ID ((ProtocolIE_ID_t)207) +#define ProtocolIE_ID_id_RequestedSplitSRBs ((ProtocolIE_ID_t)208) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBAddReq_Item ((ProtocolIE_ID_t)209) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList ((ProtocolIE_ID_t)210) +#define ProtocolIE_ID_id_SgNBtoMeNBContainer ((ProtocolIE_ID_t)211) +#define ProtocolIE_ID_id_AdmittedSplitSRBs ((ProtocolIE_ID_t)212) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item ((ProtocolIE_ID_t)213) +#define ProtocolIE_ID_id_ResponseInformationSgNBReconfComp ((ProtocolIE_ID_t)214) +#define ProtocolIE_ID_id_UE_ContextInformation_SgNBModReq ((ProtocolIE_ID_t)215) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBModReq_Item ((ProtocolIE_ID_t)216) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReq_Item ((ProtocolIE_ID_t)217) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReq_Item ((ProtocolIE_ID_t)218) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList ((ProtocolIE_ID_t)219) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_SgNBModAckList ((ProtocolIE_ID_t)220) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList ((ProtocolIE_ID_t)221) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item ((ProtocolIE_ID_t)222) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item ((ProtocolIE_ID_t)223) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item ((ProtocolIE_ID_t)224) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReqdList ((ProtocolIE_ID_t)225) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReqdList ((ProtocolIE_ID_t)226) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReqd_Item ((ProtocolIE_ID_t)227) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReqd_Item ((ProtocolIE_ID_t)228) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBChaConfList ((ProtocolIE_ID_t)229) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBChaConf_Item ((ProtocolIE_ID_t)230) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqList ((ProtocolIE_ID_t)231) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReq_Item ((ProtocolIE_ID_t)232) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelConfList ((ProtocolIE_ID_t)233) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelConf_Item ((ProtocolIE_ID_t)234) +#define ProtocolIE_ID_id_E_RABs_SubjectToSgNBCounterCheck_List ((ProtocolIE_ID_t)235) +#define ProtocolIE_ID_id_E_RABs_SubjectToSgNBCounterCheck_Item ((ProtocolIE_ID_t)236) +#define ProtocolIE_ID_id_RRCContainer ((ProtocolIE_ID_t)237) +#define ProtocolIE_ID_id_SRBType ((ProtocolIE_ID_t)238) +#define ProtocolIE_ID_id_Target_SgNB_ID ((ProtocolIE_ID_t)239) +#define ProtocolIE_ID_id_HandoverRestrictionList ((ProtocolIE_ID_t)240) +#define ProtocolIE_ID_id_SCGConfigurationQuery ((ProtocolIE_ID_t)241) +#define ProtocolIE_ID_id_SplitSRB ((ProtocolIE_ID_t)242) +#define ProtocolIE_ID_id_UENRMeasurement ((ProtocolIE_ID_t)243) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcX2Setup ((ProtocolIE_ID_t)244) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcConfigUpdate ((ProtocolIE_ID_t)245) +#define ProtocolIE_ID_id_RespondingNodeType_EndcX2Setup ((ProtocolIE_ID_t)246) +#define ProtocolIE_ID_id_RespondingNodeType_EndcConfigUpdate ((ProtocolIE_ID_t)247) +#define ProtocolIE_ID_id_NRUESecurityCapabilities ((ProtocolIE_ID_t)248) +#define ProtocolIE_ID_id_PDCPChangeIndication ((ProtocolIE_ID_t)249) +#define ProtocolIE_ID_id_ServedEUTRAcellsENDCX2ManagementList ((ProtocolIE_ID_t)250) +#define ProtocolIE_ID_id_CellAssistanceInformation ((ProtocolIE_ID_t)251) +#define ProtocolIE_ID_id_Globalen_gNB_ID ((ProtocolIE_ID_t)252) +#define ProtocolIE_ID_id_ServedNRcellsENDCX2ManagementList ((ProtocolIE_ID_t)253) +#define ProtocolIE_ID_id_UE_ContextReferenceAtSgNB ((ProtocolIE_ID_t)254) +#define ProtocolIE_ID_id_SecondaryRATUsageReport ((ProtocolIE_ID_t)255) +#define ProtocolIE_ID_id_ActivationID ((ProtocolIE_ID_t)256) +#define ProtocolIE_ID_id_MeNBResourceCoordinationInformation ((ProtocolIE_ID_t)257) +#define ProtocolIE_ID_id_SgNBResourceCoordinationInformation ((ProtocolIE_ID_t)258) +#define ProtocolIE_ID_id_ServedEUTRAcellsToModifyListENDCConfUpd ((ProtocolIE_ID_t)259) +#define ProtocolIE_ID_id_ServedEUTRAcellsToDeleteListENDCConfUpd ((ProtocolIE_ID_t)260) +#define ProtocolIE_ID_id_ServedNRcellsToModifyListENDCConfUpd ((ProtocolIE_ID_t)261) +#define ProtocolIE_ID_id_ServedNRcellsToDeleteListENDCConfUpd ((ProtocolIE_ID_t)262) +#define ProtocolIE_ID_id_E_RABUsageReport_Item ((ProtocolIE_ID_t)263) +#define ProtocolIE_ID_id_Old_SgNB_UE_X2AP_ID ((ProtocolIE_ID_t)264) +#define ProtocolIE_ID_id_SecondaryRATUsageReportList ((ProtocolIE_ID_t)265) +#define ProtocolIE_ID_id_SecondaryRATUsageReport_Item ((ProtocolIE_ID_t)266) +#define ProtocolIE_ID_id_ServedNRCellsToActivate ((ProtocolIE_ID_t)267) +#define ProtocolIE_ID_id_ActivatedNRCellList ((ProtocolIE_ID_t)268) +#define ProtocolIE_ID_id_SelectedPLMN ((ProtocolIE_ID_t)269) +#define ProtocolIE_ID_id_UEs_ToBeReset ((ProtocolIE_ID_t)270) +#define ProtocolIE_ID_id_UEs_Admitted_ToBeReset ((ProtocolIE_ID_t)271) +#define ProtocolIE_ID_id_RRCConfigIndication ((ProtocolIE_ID_t)272) +#define ProtocolIE_ID_id_DownlinkPacketLossRate ((ProtocolIE_ID_t)273) +#define ProtocolIE_ID_id_UplinkPacketLossRate ((ProtocolIE_ID_t)274) +#define ProtocolIE_ID_id_SubscriberProfileIDforRFP ((ProtocolIE_ID_t)275) +#define ProtocolIE_ID_id_serviceType ((ProtocolIE_ID_t)276) +#define ProtocolIE_ID_id_AerialUEsubscriptionInformation ((ProtocolIE_ID_t)277) +#define ProtocolIE_ID_id_SGNB_Addition_Trigger_Ind ((ProtocolIE_ID_t)278) +#define ProtocolIE_ID_id_MeNBCell_ID ((ProtocolIE_ID_t)279) +#define ProtocolIE_ID_id_RequestedSplitSRBsrelease ((ProtocolIE_ID_t)280) +#define ProtocolIE_ID_id_AdmittedSplitSRBsrelease ((ProtocolIE_ID_t)281) +#define ProtocolIE_ID_id_NRS_NSSS_PowerOffset ((ProtocolIE_ID_t)282) +#define ProtocolIE_ID_id_NSSS_NumOccasionDifferentPrecoder ((ProtocolIE_ID_t)283) +#define ProtocolIE_ID_id_ProtectedEUTRAResourceIndication ((ProtocolIE_ID_t)284) +#define ProtocolIE_ID_id_InitiatingNodeType_EutranrCellResourceCoordination ((ProtocolIE_ID_t)285) +#define ProtocolIE_ID_id_RespondingNodeType_EutranrCellResourceCoordination ((ProtocolIE_ID_t)286) +#define ProtocolIE_ID_id_DataTrafficResourceIndication ((ProtocolIE_ID_t)287) +#define ProtocolIE_ID_id_SpectrumSharingGroupID ((ProtocolIE_ID_t)288) +#define ProtocolIE_ID_id_ListofEUTRACellsinEUTRACoordinationReq ((ProtocolIE_ID_t)289) +#define ProtocolIE_ID_id_ListofEUTRACellsinEUTRACoordinationResp ((ProtocolIE_ID_t)290) +#define ProtocolIE_ID_id_ListofEUTRACellsinNRCoordinationReq ((ProtocolIE_ID_t)291) +#define ProtocolIE_ID_id_ListofNRCellsinNRCoordinationReq ((ProtocolIE_ID_t)292) +#define ProtocolIE_ID_id_ListofNRCellsinNRCoordinationResp ((ProtocolIE_ID_t)293) +#define ProtocolIE_ID_id_E_RABs_AdmittedToBeModified_SgNBModConfList ((ProtocolIE_ID_t)294) +#define ProtocolIE_ID_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item ((ProtocolIE_ID_t)295) +#define ProtocolIE_ID_id_UEContextLevelUserPlaneActivity ((ProtocolIE_ID_t)296) +#define ProtocolIE_ID_id_ERABActivityNotifyItemList ((ProtocolIE_ID_t)297) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcX2Removal ((ProtocolIE_ID_t)298) +#define ProtocolIE_ID_id_RespondingNodeType_EndcX2Removal ((ProtocolIE_ID_t)299) +#define ProtocolIE_ID_id_RLC_Status ((ProtocolIE_ID_t)300) +#define ProtocolIE_ID_id_CNTypeRestrictions ((ProtocolIE_ID_t)301) +#define ProtocolIE_ID_id_uLpDCPSnLength ((ProtocolIE_ID_t)302) +#define ProtocolIE_ID_id_BluetoothMeasurementConfiguration ((ProtocolIE_ID_t)303) +#define ProtocolIE_ID_id_WLANMeasurementConfiguration ((ProtocolIE_ID_t)304) +#define ProtocolIE_ID_id_NRrestrictionin5GS ((ProtocolIE_ID_t)305) +#define ProtocolIE_ID_id_dL_Forwarding ((ProtocolIE_ID_t)306) +#define ProtocolIE_ID_id_E_RABs_DataForwardingAddress_List ((ProtocolIE_ID_t)307) +#define ProtocolIE_ID_id_E_RABs_DataForwardingAddress_Item ((ProtocolIE_ID_t)308) +#define ProtocolIE_ID_id_Subscription_Based_UE_DifferentiationInfo ((ProtocolIE_ID_t)309) +#define ProtocolIE_ID_id_GNBOverloadInformation ((ProtocolIE_ID_t)310) +#define ProtocolIE_ID_id_dLPDCPSnLength ((ProtocolIE_ID_t)311) +#define ProtocolIE_ID_id_secondarysgNBDLGTPTEIDatPDCP ((ProtocolIE_ID_t)312) +#define ProtocolIE_ID_id_secondarymeNBULGTPTEIDatPDCP ((ProtocolIE_ID_t)313) +#define ProtocolIE_ID_id_lCID ((ProtocolIE_ID_t)314) +#define ProtocolIE_ID_id_duplicationActivation ((ProtocolIE_ID_t)315) +#define ProtocolIE_ID_id_ECGI ((ProtocolIE_ID_t)316) +#define ProtocolIE_ID_id_RLCMode_transferred ((ProtocolIE_ID_t)317) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList ((ProtocolIE_ID_t)318) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item ((ProtocolIE_ID_t)319) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqdList ((ProtocolIE_ID_t)320) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqd_Item ((ProtocolIE_ID_t)321) +#define ProtocolIE_ID_id_NRCGI ((ProtocolIE_ID_t)322) +#define ProtocolIE_ID_id_MeNBCoordinationAssistanceInformation ((ProtocolIE_ID_t)323) +#define ProtocolIE_ID_id_SgNBCoordinationAssistanceInformation ((ProtocolIE_ID_t)324) +#define ProtocolIE_ID_id_new_drb_ID_req ((ProtocolIE_ID_t)325) +extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c new file mode 100644 index 0000000..006237d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c @@ -0,0 +1,1155 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Single-Container.h" + +/* + * This type is implemented using RICaction_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_NotAdmitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunction_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionID_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionIDcause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToStatusTransfer_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellInformation_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellToReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using MeasurementInitiationResult_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using MeasurementFailureCause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CompleteFailureCauseInformation_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellMeasurementResult_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeModified_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_ModReqdItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_RelReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_RelConfItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToCounterCheckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeSetupRetrieve_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_SgNBModReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToSgNBCounterCheck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_DataForwardingAddress_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RAB_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABUsageReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using SecondaryRATUsageReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P0 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P1 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P1_tags_2, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P2 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P2_tags_3, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P3 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P3_tags_4, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P4 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P4_tags_5, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P5 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P5_tags_6, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P6 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P6_tags_7, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P6_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P7 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P7_tags_8, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P7_tags_8, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P8 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P8_tags_9, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P8_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P9 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P9_tags_10, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P9_tags_10, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_CellInformation_ItemIEs_specs_37 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P10 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P10_tags_11, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P10_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_CellToReport_ItemIEs_specs_41 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P11 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P11_tags_12, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P11_tags_12, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P12 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P12_tags_13, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P12_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P13 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P13_tags_14, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P13_tags_14, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P14 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P14_tags_15, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P14_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_ItemIEs_specs_57 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P15 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P15_tags_16, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P15_tags_16, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P16 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P16_tags_17, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P16_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P17 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P17_tags_18, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P17_tags_18, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P18 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P18_tags_19, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P18_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P19 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P19_tags_20, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P19_tags_20, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P20 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P20_tags_21, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P20_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P21 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P21_tags_22, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P21_tags_22, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P22 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P22_tags_23, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P22_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P23 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P23_tags_24, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P23_tags_24, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P24 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P24_tags_25, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P24_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P25 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P25_tags_26, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P25_tags_26, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P26 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P26_tags_27, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P26_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P27 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P27_tags_28, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P27_tags_28, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P28 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P28_tags_29, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P28_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P29 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P29_tags_30, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P29_tags_30, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P30 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P30_tags_31, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P30_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P31 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P31_tags_32, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P31_tags_32, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P32 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P32_tags_33, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P32_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P33 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P33_tags_34, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P33_tags_34, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P34 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P34_tags_35, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P34_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P35 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P35_tags_36, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P35_tags_36, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P36 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P36_tags_37, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P36_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P37 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P37_tags_38, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P37_tags_38, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P38 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P38_tags_39, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P38_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P39 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P39_tags_40, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P39_tags_40, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P40 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P40_tags_41, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P40_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P41 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P41_tags_42, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P41_tags_42, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P42 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P42_tags_43, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P42_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P43 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P43_tags_44, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P43_tags_44, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P44 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P44_tags_45, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P44_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P45 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P45_tags_46, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P45_tags_46, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P46 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P46_tags_47, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P46_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_ItemIEs_665, + 3, /* Elements count */ + &asn_SPC_E_RAB_ItemIEs_specs_665 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P47 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P47_tags_48, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P47_tags_48, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_ItemIEs_669, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_ItemIEs_specs_669 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P48 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P48_tags_49, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P48_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_ItemIEs_673, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h new file mode 100644 index 0000000..25fb3da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h @@ -0,0 +1,686 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Single_Container_H_ +#define _ProtocolIE_Single_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-Single-Container */ +typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_Single_Container_122P0_t; +typedef RICaction_Admitted_ItemIEs_t ProtocolIE_Single_Container_122P1_t; +typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_Single_Container_122P2_t; +typedef RANfunction_ItemIEs_t ProtocolIE_Single_Container_122P3_t; +typedef RANfunctionID_ItemIEs_t ProtocolIE_Single_Container_122P4_t; +typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_Single_Container_122P5_t; +typedef E_RABs_ToBeSetup_ItemIEs_t ProtocolIE_Single_Container_122P6_t; +typedef E_RABs_Admitted_ItemIEs_t ProtocolIE_Single_Container_122P7_t; +typedef E_RABs_SubjectToStatusTransfer_ItemIEs_t ProtocolIE_Single_Container_122P8_t; +typedef CellInformation_ItemIEs_t ProtocolIE_Single_Container_122P9_t; +typedef CellToReport_ItemIEs_t ProtocolIE_Single_Container_122P10_t; +typedef MeasurementInitiationResult_ItemIEs_t ProtocolIE_Single_Container_122P11_t; +typedef MeasurementFailureCause_ItemIEs_t ProtocolIE_Single_Container_122P12_t; +typedef CompleteFailureCauseInformation_ItemIEs_t ProtocolIE_Single_Container_122P13_t; +typedef CellMeasurementResult_ItemIEs_t ProtocolIE_Single_Container_122P14_t; +typedef E_RABs_ToBeAdded_ItemIEs_t ProtocolIE_Single_Container_122P15_t; +typedef E_RABs_Admitted_ToBeAdded_ItemIEs_t ProtocolIE_Single_Container_122P16_t; +typedef E_RABs_ToBeAdded_ModReqItemIEs_t ProtocolIE_Single_Container_122P17_t; +typedef E_RABs_ToBeModified_ModReqItemIEs_t ProtocolIE_Single_Container_122P18_t; +typedef E_RABs_ToBeReleased_ModReqItemIEs_t ProtocolIE_Single_Container_122P19_t; +typedef E_RABs_Admitted_ToBeAdded_ModAckItemIEs_t ProtocolIE_Single_Container_122P20_t; +typedef E_RABs_Admitted_ToBeModified_ModAckItemIEs_t ProtocolIE_Single_Container_122P21_t; +typedef E_RABs_Admitted_ToBeReleased_ModAckItemIEs_t ProtocolIE_Single_Container_122P22_t; +typedef E_RABs_ToBeReleased_ModReqdItemIEs_t ProtocolIE_Single_Container_122P23_t; +typedef E_RABs_ToBeReleased_RelReqItemIEs_t ProtocolIE_Single_Container_122P24_t; +typedef E_RABs_ToBeReleased_RelConfItemIEs_t ProtocolIE_Single_Container_122P25_t; +typedef E_RABs_SubjectToCounterCheckItemIEs_t ProtocolIE_Single_Container_122P26_t; +typedef E_RABs_ToBeSetupRetrieve_ItemIEs_t ProtocolIE_Single_Container_122P27_t; +typedef E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t ProtocolIE_Single_Container_122P28_t; +typedef E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t ProtocolIE_Single_Container_122P29_t; +typedef E_RABs_ToBeAdded_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P30_t; +typedef E_RABs_ToBeModified_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P31_t; +typedef E_RABs_ToBeReleased_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P32_t; +typedef E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P33_t; +typedef E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P34_t; +typedef E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P35_t; +typedef E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_t ProtocolIE_Single_Container_122P36_t; +typedef E_RABs_ToBeModified_SgNBModReqd_ItemIEs_t ProtocolIE_Single_Container_122P37_t; +typedef E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_t ProtocolIE_Single_Container_122P38_t; +typedef E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_t ProtocolIE_Single_Container_122P39_t; +typedef E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_t ProtocolIE_Single_Container_122P40_t; +typedef E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_t ProtocolIE_Single_Container_122P41_t; +typedef E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_t ProtocolIE_Single_Container_122P42_t; +typedef E_RABs_SubjectToSgNBCounterCheck_ItemIEs_t ProtocolIE_Single_Container_122P43_t; +typedef E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_t ProtocolIE_Single_Container_122P44_t; +typedef E_RABs_DataForwardingAddress_ItemIEs_t ProtocolIE_Single_Container_122P45_t; +typedef E_RAB_ItemIEs_t ProtocolIE_Single_Container_122P46_t; +typedef E_RABUsageReport_ItemIEs_t ProtocolIE_Single_Container_122P47_t; +typedef SecondaryRATUsageReport_ItemIEs_t ProtocolIE_Single_Container_122P48_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P0; +asn_struct_free_f ProtocolIE_Single_Container_122P0_free; +asn_struct_print_f ProtocolIE_Single_Container_122P0_print; +asn_constr_check_f ProtocolIE_Single_Container_122P0_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P0_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P0_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P0_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P0_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P0_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P0_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P0_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P1; +asn_struct_free_f ProtocolIE_Single_Container_122P1_free; +asn_struct_print_f ProtocolIE_Single_Container_122P1_print; +asn_constr_check_f ProtocolIE_Single_Container_122P1_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P1_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P1_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P1_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P1_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P1_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P1_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P1_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P2; +asn_struct_free_f ProtocolIE_Single_Container_122P2_free; +asn_struct_print_f ProtocolIE_Single_Container_122P2_print; +asn_constr_check_f ProtocolIE_Single_Container_122P2_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P2_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P2_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P2_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P2_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P2_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P2_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P2_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P3; +asn_struct_free_f ProtocolIE_Single_Container_122P3_free; +asn_struct_print_f ProtocolIE_Single_Container_122P3_print; +asn_constr_check_f ProtocolIE_Single_Container_122P3_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P3_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P3_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P3_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P3_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P3_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P3_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P3_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P4; +asn_struct_free_f ProtocolIE_Single_Container_122P4_free; +asn_struct_print_f ProtocolIE_Single_Container_122P4_print; +asn_constr_check_f ProtocolIE_Single_Container_122P4_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P4_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P4_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P4_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P4_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P4_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P4_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P4_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P5; +asn_struct_free_f ProtocolIE_Single_Container_122P5_free; +asn_struct_print_f ProtocolIE_Single_Container_122P5_print; +asn_constr_check_f ProtocolIE_Single_Container_122P5_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P5_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P5_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P5_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P5_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P5_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P5_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P5_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P5_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P6; +asn_struct_free_f ProtocolIE_Single_Container_122P6_free; +asn_struct_print_f ProtocolIE_Single_Container_122P6_print; +asn_constr_check_f ProtocolIE_Single_Container_122P6_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P6_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P6_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P6_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P6_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P6_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P6_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P6_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P6_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P7; +asn_struct_free_f ProtocolIE_Single_Container_122P7_free; +asn_struct_print_f ProtocolIE_Single_Container_122P7_print; +asn_constr_check_f ProtocolIE_Single_Container_122P7_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P7_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P7_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P7_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P7_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P7_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P7_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P7_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P7_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P8; +asn_struct_free_f ProtocolIE_Single_Container_122P8_free; +asn_struct_print_f ProtocolIE_Single_Container_122P8_print; +asn_constr_check_f ProtocolIE_Single_Container_122P8_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P8_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P8_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P8_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P8_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P8_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P8_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P8_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P8_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P9; +asn_struct_free_f ProtocolIE_Single_Container_122P9_free; +asn_struct_print_f ProtocolIE_Single_Container_122P9_print; +asn_constr_check_f ProtocolIE_Single_Container_122P9_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P9_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P9_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P9_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P9_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P9_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P9_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P9_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P9_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P10; +asn_struct_free_f ProtocolIE_Single_Container_122P10_free; +asn_struct_print_f ProtocolIE_Single_Container_122P10_print; +asn_constr_check_f ProtocolIE_Single_Container_122P10_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P10_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P10_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P10_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P10_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P10_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P10_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P10_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P10_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P11; +asn_struct_free_f ProtocolIE_Single_Container_122P11_free; +asn_struct_print_f ProtocolIE_Single_Container_122P11_print; +asn_constr_check_f ProtocolIE_Single_Container_122P11_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P11_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P11_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P11_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P11_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P11_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P11_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P11_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P11_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P12; +asn_struct_free_f ProtocolIE_Single_Container_122P12_free; +asn_struct_print_f ProtocolIE_Single_Container_122P12_print; +asn_constr_check_f ProtocolIE_Single_Container_122P12_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P12_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P12_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P12_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P12_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P12_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P12_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P12_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P12_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P13; +asn_struct_free_f ProtocolIE_Single_Container_122P13_free; +asn_struct_print_f ProtocolIE_Single_Container_122P13_print; +asn_constr_check_f ProtocolIE_Single_Container_122P13_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P13_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P13_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P13_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P13_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P13_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P13_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P13_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P13_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P14; +asn_struct_free_f ProtocolIE_Single_Container_122P14_free; +asn_struct_print_f ProtocolIE_Single_Container_122P14_print; +asn_constr_check_f ProtocolIE_Single_Container_122P14_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P14_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P14_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P14_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P14_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P14_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P14_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P14_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P14_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P15; +asn_struct_free_f ProtocolIE_Single_Container_122P15_free; +asn_struct_print_f ProtocolIE_Single_Container_122P15_print; +asn_constr_check_f ProtocolIE_Single_Container_122P15_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P15_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P15_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P15_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P15_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P15_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P15_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P15_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P15_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P16; +asn_struct_free_f ProtocolIE_Single_Container_122P16_free; +asn_struct_print_f ProtocolIE_Single_Container_122P16_print; +asn_constr_check_f ProtocolIE_Single_Container_122P16_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P16_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P16_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P16_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P16_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P16_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P16_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P16_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P16_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P17; +asn_struct_free_f ProtocolIE_Single_Container_122P17_free; +asn_struct_print_f ProtocolIE_Single_Container_122P17_print; +asn_constr_check_f ProtocolIE_Single_Container_122P17_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P17_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P17_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P17_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P17_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P17_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P17_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P17_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P17_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P18; +asn_struct_free_f ProtocolIE_Single_Container_122P18_free; +asn_struct_print_f ProtocolIE_Single_Container_122P18_print; +asn_constr_check_f ProtocolIE_Single_Container_122P18_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P18_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P18_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P18_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P18_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P18_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P18_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P18_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P18_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P19; +asn_struct_free_f ProtocolIE_Single_Container_122P19_free; +asn_struct_print_f ProtocolIE_Single_Container_122P19_print; +asn_constr_check_f ProtocolIE_Single_Container_122P19_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P19_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P19_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P19_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P19_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P19_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P19_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P19_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P19_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P20; +asn_struct_free_f ProtocolIE_Single_Container_122P20_free; +asn_struct_print_f ProtocolIE_Single_Container_122P20_print; +asn_constr_check_f ProtocolIE_Single_Container_122P20_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P20_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P20_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P20_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P20_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P20_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P20_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P20_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P20_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P21; +asn_struct_free_f ProtocolIE_Single_Container_122P21_free; +asn_struct_print_f ProtocolIE_Single_Container_122P21_print; +asn_constr_check_f ProtocolIE_Single_Container_122P21_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P21_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P21_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P21_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P21_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P21_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P21_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P21_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P21_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P22; +asn_struct_free_f ProtocolIE_Single_Container_122P22_free; +asn_struct_print_f ProtocolIE_Single_Container_122P22_print; +asn_constr_check_f ProtocolIE_Single_Container_122P22_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P22_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P22_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P22_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P22_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P22_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P22_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P22_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P22_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P23; +asn_struct_free_f ProtocolIE_Single_Container_122P23_free; +asn_struct_print_f ProtocolIE_Single_Container_122P23_print; +asn_constr_check_f ProtocolIE_Single_Container_122P23_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P23_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P23_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P23_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P23_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P23_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P23_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P23_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P23_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P24; +asn_struct_free_f ProtocolIE_Single_Container_122P24_free; +asn_struct_print_f ProtocolIE_Single_Container_122P24_print; +asn_constr_check_f ProtocolIE_Single_Container_122P24_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P24_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P24_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P24_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P24_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P24_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P24_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P24_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P24_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P25; +asn_struct_free_f ProtocolIE_Single_Container_122P25_free; +asn_struct_print_f ProtocolIE_Single_Container_122P25_print; +asn_constr_check_f ProtocolIE_Single_Container_122P25_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P25_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P25_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P25_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P25_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P25_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P25_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P25_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P25_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P26; +asn_struct_free_f ProtocolIE_Single_Container_122P26_free; +asn_struct_print_f ProtocolIE_Single_Container_122P26_print; +asn_constr_check_f ProtocolIE_Single_Container_122P26_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P26_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P26_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P26_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P26_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P26_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P26_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P26_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P26_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P27; +asn_struct_free_f ProtocolIE_Single_Container_122P27_free; +asn_struct_print_f ProtocolIE_Single_Container_122P27_print; +asn_constr_check_f ProtocolIE_Single_Container_122P27_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P27_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P27_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P27_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P27_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P27_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P27_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P27_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P27_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P28; +asn_struct_free_f ProtocolIE_Single_Container_122P28_free; +asn_struct_print_f ProtocolIE_Single_Container_122P28_print; +asn_constr_check_f ProtocolIE_Single_Container_122P28_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P28_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P28_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P28_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P28_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P28_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P28_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P28_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P28_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P29; +asn_struct_free_f ProtocolIE_Single_Container_122P29_free; +asn_struct_print_f ProtocolIE_Single_Container_122P29_print; +asn_constr_check_f ProtocolIE_Single_Container_122P29_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P29_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P29_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P29_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P29_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P29_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P29_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P29_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P29_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P30; +asn_struct_free_f ProtocolIE_Single_Container_122P30_free; +asn_struct_print_f ProtocolIE_Single_Container_122P30_print; +asn_constr_check_f ProtocolIE_Single_Container_122P30_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P30_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P30_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P30_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P30_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P30_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P30_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P30_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P30_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P31; +asn_struct_free_f ProtocolIE_Single_Container_122P31_free; +asn_struct_print_f ProtocolIE_Single_Container_122P31_print; +asn_constr_check_f ProtocolIE_Single_Container_122P31_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P31_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P31_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P31_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P31_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P31_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P31_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P31_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P31_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P32; +asn_struct_free_f ProtocolIE_Single_Container_122P32_free; +asn_struct_print_f ProtocolIE_Single_Container_122P32_print; +asn_constr_check_f ProtocolIE_Single_Container_122P32_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P32_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P32_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P32_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P32_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P32_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P32_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P32_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P32_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P33; +asn_struct_free_f ProtocolIE_Single_Container_122P33_free; +asn_struct_print_f ProtocolIE_Single_Container_122P33_print; +asn_constr_check_f ProtocolIE_Single_Container_122P33_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P33_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P33_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P33_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P33_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P33_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P33_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P33_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P33_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P34; +asn_struct_free_f ProtocolIE_Single_Container_122P34_free; +asn_struct_print_f ProtocolIE_Single_Container_122P34_print; +asn_constr_check_f ProtocolIE_Single_Container_122P34_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P34_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P34_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P34_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P34_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P34_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P34_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P34_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P34_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P35; +asn_struct_free_f ProtocolIE_Single_Container_122P35_free; +asn_struct_print_f ProtocolIE_Single_Container_122P35_print; +asn_constr_check_f ProtocolIE_Single_Container_122P35_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P35_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P35_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P35_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P35_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P35_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P35_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P35_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P35_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P36; +asn_struct_free_f ProtocolIE_Single_Container_122P36_free; +asn_struct_print_f ProtocolIE_Single_Container_122P36_print; +asn_constr_check_f ProtocolIE_Single_Container_122P36_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P36_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P36_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P36_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P36_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P36_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P36_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P36_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P36_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P37; +asn_struct_free_f ProtocolIE_Single_Container_122P37_free; +asn_struct_print_f ProtocolIE_Single_Container_122P37_print; +asn_constr_check_f ProtocolIE_Single_Container_122P37_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P37_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P37_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P37_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P37_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P37_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P37_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P37_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P37_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P38; +asn_struct_free_f ProtocolIE_Single_Container_122P38_free; +asn_struct_print_f ProtocolIE_Single_Container_122P38_print; +asn_constr_check_f ProtocolIE_Single_Container_122P38_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P38_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P38_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P38_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P38_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P38_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P38_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P38_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P38_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P39; +asn_struct_free_f ProtocolIE_Single_Container_122P39_free; +asn_struct_print_f ProtocolIE_Single_Container_122P39_print; +asn_constr_check_f ProtocolIE_Single_Container_122P39_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P39_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P39_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P39_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P39_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P39_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P39_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P39_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P39_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P40; +asn_struct_free_f ProtocolIE_Single_Container_122P40_free; +asn_struct_print_f ProtocolIE_Single_Container_122P40_print; +asn_constr_check_f ProtocolIE_Single_Container_122P40_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P40_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P40_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P40_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P40_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P40_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P40_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P40_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P40_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P41; +asn_struct_free_f ProtocolIE_Single_Container_122P41_free; +asn_struct_print_f ProtocolIE_Single_Container_122P41_print; +asn_constr_check_f ProtocolIE_Single_Container_122P41_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P41_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P41_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P41_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P41_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P41_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P41_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P41_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P41_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P42; +asn_struct_free_f ProtocolIE_Single_Container_122P42_free; +asn_struct_print_f ProtocolIE_Single_Container_122P42_print; +asn_constr_check_f ProtocolIE_Single_Container_122P42_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P42_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P42_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P42_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P42_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P42_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P42_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P42_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P42_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P43; +asn_struct_free_f ProtocolIE_Single_Container_122P43_free; +asn_struct_print_f ProtocolIE_Single_Container_122P43_print; +asn_constr_check_f ProtocolIE_Single_Container_122P43_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P43_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P43_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P43_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P43_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P43_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P43_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P43_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P43_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P44; +asn_struct_free_f ProtocolIE_Single_Container_122P44_free; +asn_struct_print_f ProtocolIE_Single_Container_122P44_print; +asn_constr_check_f ProtocolIE_Single_Container_122P44_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P44_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P44_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P44_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P44_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P44_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P44_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P44_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P44_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P45; +asn_struct_free_f ProtocolIE_Single_Container_122P45_free; +asn_struct_print_f ProtocolIE_Single_Container_122P45_print; +asn_constr_check_f ProtocolIE_Single_Container_122P45_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P45_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P45_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P45_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P45_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P45_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P45_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P45_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P45_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P46; +asn_struct_free_f ProtocolIE_Single_Container_122P46_free; +asn_struct_print_f ProtocolIE_Single_Container_122P46_print; +asn_constr_check_f ProtocolIE_Single_Container_122P46_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P46_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P46_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P46_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P46_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P46_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P46_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P46_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P46_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P47; +asn_struct_free_f ProtocolIE_Single_Container_122P47_free; +asn_struct_print_f ProtocolIE_Single_Container_122P47_print; +asn_constr_check_f ProtocolIE_Single_Container_122P47_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P47_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P47_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P47_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P47_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P47_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P47_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P47_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P47_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P48; +asn_struct_free_f ProtocolIE_Single_Container_122P48_free; +asn_struct_print_f ProtocolIE_Single_Container_122P48_print; +asn_constr_check_f ProtocolIE_Single_Container_122P48_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P48_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P48_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P48_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P48_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P48_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P48_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P48_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P48_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Single_Container_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/QCI.c b/E2Manager/asn1codec/e2ap_engine/QCI.c new file mode 100644 index 0000000..2e4f352 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/QCI.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "QCI.h" + +int +QCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_QCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_QCI = { + "QCI", + "QCI", + &asn_OP_NativeInteger, + asn_DEF_QCI_tags_1, + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + asn_DEF_QCI_tags_1, /* Same as above */ + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_QCI_constr_1, QCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/QCI.h b/E2Manager/asn1codec/e2ap_engine/QCI.h new file mode 100644 index 0000000..1242147 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/QCI.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _QCI_H_ +#define _QCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* QCI */ +typedef long QCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_QCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_QCI; +asn_struct_free_f QCI_free; +asn_struct_print_f QCI_print; +asn_constr_check_f QCI_constraint; +ber_type_decoder_f QCI_decode_ber; +der_type_encoder_f QCI_encode_der; +xer_type_decoder_f QCI_decode_xer; +xer_type_encoder_f QCI_encode_xer; +per_type_decoder_f QCI_decode_uper; +per_type_encoder_f QCI_encode_uper; +per_type_decoder_f QCI_decode_aper; +per_type_encoder_f QCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _QCI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.c b/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.c new file mode 100644 index 0000000..e7a51ee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunction-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionDefinition" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionDefinition */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { + sizeof(struct RANfunction_Item), + offsetof(struct RANfunction_Item, _asn_ctx), + asn_MAP_RANfunction_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { + "RANfunction-Item", + "RANfunction-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Item_tags_1, + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.h b/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.h new file mode 100644 index 0000000..4d1bb2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunction-Item.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunction_Item_H_ +#define _RANfunction_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Item */ +typedef struct RANfunction_Item { + RANfunctionID_t ranFunctionID; + RANfunctionDefinition_t ranFunctionDefinition; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.c new file mode 100644 index 0000000..559b522 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { + "RANfunctionDefinition", + "RANfunctionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RANfunctionDefinition_tags_1, + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.h new file mode 100644 index 0000000..9b22016 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionDefinition.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionDefinition_H_ +#define _RANfunctionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionDefinition */ +typedef OCTET_STRING_t RANfunctionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; +asn_struct_free_f RANfunctionDefinition_free; +asn_struct_print_f RANfunctionDefinition_print; +asn_constr_check_f RANfunctionDefinition_constraint; +ber_type_decoder_f RANfunctionDefinition_decode_ber; +der_type_encoder_f RANfunctionDefinition_encode_der; +xer_type_decoder_f RANfunctionDefinition_decode_xer; +xer_type_encoder_f RANfunctionDefinition_encode_xer; +per_type_decoder_f RANfunctionDefinition_decode_uper; +per_type_encoder_f RANfunctionDefinition_encode_uper; +per_type_decoder_f RANfunctionDefinition_decode_aper; +per_type_encoder_f RANfunctionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionDefinition_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.c new file mode 100644 index 0000000..ca4e9f8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranFunctionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { + sizeof(struct RANfunctionID_Item), + offsetof(struct RANfunctionID_Item, _asn_ctx), + asn_MAP_RANfunctionID_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { + "RANfunctionID-Item", + "RANfunctionID-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_Item_tags_1, + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_Item_1, + 1, /* Elements count */ + &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.h new file mode 100644 index 0000000..8e65dc5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionID-Item.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_Item_H_ +#define _RANfunctionID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID-Item */ +typedef struct RANfunctionID_Item { + RANfunctionID_t ranFunctionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionID.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionID.c new file mode 100644 index 0000000..53023ed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID.h" + +int +RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { + "RANfunctionID", + "RANfunctionID", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionID_tags_1, + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionID.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionID.h new file mode 100644 index 0000000..e542f45 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_H_ +#define _RANfunctionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID */ +typedef long RANfunctionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; +asn_struct_free_f RANfunctionID_free; +asn_struct_print_f RANfunctionID_print; +asn_constr_check_f RANfunctionID_constraint; +ber_type_decoder_f RANfunctionID_decode_ber; +der_type_encoder_f RANfunctionID_encode_der; +xer_type_decoder_f RANfunctionID_decode_xer; +xer_type_encoder_f RANfunctionID_encode_xer; +per_type_decoder_f RANfunctionID_decode_uper; +per_type_encoder_f RANfunctionID_encode_uper; +per_type_decoder_f RANfunctionID_decode_aper; +per_type_encoder_f RANfunctionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c new file mode 100644 index 0000000..59a142f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionIDcause-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ricCause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricCause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricCause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { + sizeof(struct RANfunctionIDcause_Item), + offsetof(struct RANfunctionIDcause_Item, _asn_ctx), + asn_MAP_RANfunctionIDcause_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { + "RANfunctionIDcause-Item", + "RANfunctionIDcause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_Item_tags_1, + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h new file mode 100644 index 0000000..c882202 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionIDcause_Item_H_ +#define _RANfunctionIDcause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RICcause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionIDcause-Item */ +typedef struct RANfunctionIDcause_Item { + RANfunctionID_t ranFunctionID; + RICcause_t ricCause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionIDcause_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.c b/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.c new file mode 100644 index 0000000..716b407 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctions-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { + sizeof(struct RANfunctions_List), + offsetof(struct RANfunctions_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { + "RANfunctions-List", + "RANfunctions-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctions_List_tags_1, + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctions_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctions_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.h b/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.h new file mode 100644 index 0000000..24971d2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctions-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctions_List_H_ +#define _RANfunctions_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctions-List */ +typedef struct RANfunctions_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctions_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctions_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.c new file mode 100644 index 0000000..848c4d9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsID-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { + sizeof(struct RANfunctionsID_List), + offsetof(struct RANfunctionsID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { + "RANfunctionsID-List", + "RANfunctionsID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsID_List_tags_1, + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsID_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.h new file mode 100644 index 0000000..4660ebe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionsID-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsID_List_H_ +#define _RANfunctionsID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctionsID-List */ +typedef struct RANfunctionsID_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsID_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c b/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c new file mode 100644 index 0000000..b28847e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsIDcause-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { + sizeof(struct RANfunctionsIDcause_List), + offsetof(struct RANfunctionsIDcause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { + "RANfunctionsIDcause-List", + "RANfunctionsIDcause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsIDcause_List_tags_1, + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsIDcause_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h b/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h new file mode 100644 index 0000000..17d3edb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsIDcause_List_H_ +#define _RANfunctionsIDcause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctionsIDcause-List */ +typedef struct RANfunctionsIDcause_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsIDcause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsIDcause_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.c b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.c new file mode 100644 index 0000000..c7d971f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { + sizeof(struct RICaction_Admitted_Item), + offsetof(struct RICaction_Admitted_Item, _asn_ctx), + asn_MAP_RICaction_Admitted_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { + "RICaction-Admitted-Item", + "RICaction-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_Item_tags_1, + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.h b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.h new file mode 100644 index 0000000..0e77bba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-Item.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_Item_H_ +#define _RICaction_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-Admitted-Item */ +typedef struct RICaction_Admitted_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.c b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.c new file mode 100644 index 0000000..800ebb9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { + sizeof(struct RICaction_Admitted_List), + offsetof(struct RICaction_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { + "RICaction-Admitted-List", + "RICaction-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_Admitted_List_tags_1, + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.h b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.h new file mode 100644 index 0000000..1b12651 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-Admitted-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_List_H_ +#define _RICaction_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICaction-Admitted-List */ +typedef struct RICaction_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c new file mode 100644 index 0000000..72e07fe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricCause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricCause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricCause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { + sizeof(struct RICaction_NotAdmitted_Item), + offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { + "RICaction-NotAdmitted-Item", + "RICaction-NotAdmitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_Item_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h new file mode 100644 index 0000000..aba7786 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_Item_H_ +#define _RICaction_NotAdmitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICcause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-NotAdmitted-Item */ +typedef struct RICaction_NotAdmitted_Item { + RICactionID_t ricActionID; + RICcause_t ricCause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c new file mode 100644 index 0000000..b86721b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { + sizeof(struct RICaction_NotAdmitted_List), + offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { + "RICaction-NotAdmitted-List", + "RICaction-NotAdmitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_NotAdmitted_List_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_NotAdmitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h new file mode 100644 index 0000000..13040de --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_List_H_ +#define _RICaction_NotAdmitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICaction-NotAdmitted-List */ +typedef struct RICaction_NotAdmitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c b/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c new file mode 100644 index 0000000..234fd5c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-ToBeSetup-Item.h" + +#include "RICsubsequentAction.h" +static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { + sizeof(struct RICaction_ToBeSetup_Item), + offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { + "RICaction-ToBeSetup-Item", + "RICaction-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_Item_1, + 4, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h b/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h new file mode 100644 index 0000000..4e42c58 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_ToBeSetup_Item_H_ +#define _RICaction_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeSetup-Item */ +typedef struct RICaction_ToBeSetup_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.c b/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.c new file mode 100644 index 0000000..f7fc495 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { + "RICactionDefinition", + "RICactionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICactionDefinition_tags_1, + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICactionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.h b/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.h new file mode 100644 index 0000000..f297abc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionDefinition.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionDefinition_H_ +#define _RICactionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionDefinition */ +typedef OCTET_STRING_t RICactionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; +asn_struct_free_f RICactionDefinition_free; +asn_struct_print_f RICactionDefinition_print; +asn_constr_check_f RICactionDefinition_constraint; +ber_type_decoder_f RICactionDefinition_decode_ber; +der_type_encoder_f RICactionDefinition_encode_der; +xer_type_decoder_f RICactionDefinition_decode_xer; +xer_type_encoder_f RICactionDefinition_encode_xer; +per_type_decoder_f RICactionDefinition_decode_uper; +per_type_encoder_f RICactionDefinition_encode_uper; +per_type_decoder_f RICactionDefinition_decode_aper; +per_type_encoder_f RICactionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionDefinition_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionID.c b/E2Manager/asn1codec/e2ap_engine/RICactionID.c new file mode 100644 index 0000000..248b53a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionID.h" + +int +RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionID = { + "RICactionID", + "RICactionID", + &asn_OP_NativeInteger, + asn_DEF_RICactionID_tags_1, + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + asn_DEF_RICactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionID.h b/E2Manager/asn1codec/e2ap_engine/RICactionID.h new file mode 100644 index 0000000..377df4c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionID_H_ +#define _RICactionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionID */ +typedef long RICactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionID; +asn_struct_free_f RICactionID_free; +asn_struct_print_f RICactionID_print; +asn_constr_check_f RICactionID_constraint; +ber_type_decoder_f RICactionID_decode_ber; +der_type_encoder_f RICactionID_encode_der; +xer_type_decoder_f RICactionID_decode_xer; +xer_type_encoder_f RICactionID_encode_xer; +per_type_decoder_f RICactionID_decode_uper; +per_type_encoder_f RICactionID_encode_uper; +per_type_decoder_f RICactionID_decode_aper; +per_type_encoder_f RICactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionType.c b/E2Manager/asn1codec/e2ap_engine/RICactionType.c new file mode 100644 index 0000000..c8ac553 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionType.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" }, + { 2, 6, "policy" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { + 1, /* insert(1) */ + 2, /* policy(2) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { + asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICactionType_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_RICactionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionType = { + "RICactionType", + "RICactionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICactionType_tags_1, + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + asn_DEF_RICactionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICactionType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICactionType.h b/E2Manager/asn1codec/e2ap_engine/RICactionType.h new file mode 100644 index 0000000..5b011db --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactionType.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionType_H_ +#define _RICactionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICactionType { + RICactionType_report = 0, + RICactionType_insert = 1, + RICactionType_policy = 2 + /* + * Enumeration is extensible + */ +} e_RICactionType; + +/* RICactionType */ +typedef long RICactionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; +asn_struct_free_f RICactionType_free; +asn_struct_print_f RICactionType_print; +asn_constr_check_f RICactionType_constraint; +ber_type_decoder_f RICactionType_decode_ber; +der_type_encoder_f RICactionType_encode_der; +xer_type_decoder_f RICactionType_decode_xer; +xer_type_encoder_f RICactionType_encode_xer; +per_type_decoder_f RICactionType_decode_uper; +per_type_encoder_f RICactionType_encode_uper; +per_type_decoder_f RICactionType_decode_aper; +per_type_encoder_f RICactionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c b/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c new file mode 100644 index 0000000..01abd63 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactions-ToBeSetup-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { + sizeof(struct RICactions_ToBeSetup_List), + offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { + "RICactions-ToBeSetup-List", + "RICactions-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeSetup_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICactions_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h b/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h new file mode 100644 index 0000000..dae0bc0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactions_ToBeSetup_List_H_ +#define _RICactions_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICactions-ToBeSetup-List */ +typedef struct RICactions_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.c b/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.c new file mode 100644 index 0000000..d09379b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcallProcessID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { + "RICcallProcessID", + "RICcallProcessID", + &asn_OP_OCTET_STRING, + asn_DEF_RICcallProcessID_tags_1, + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + asn_DEF_RICcallProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.h b/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.h new file mode 100644 index 0000000..b1a4f50 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcallProcessID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcallProcessID_H_ +#define _RICcallProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcallProcessID */ +typedef OCTET_STRING_t RICcallProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; +asn_struct_free_f RICcallProcessID_free; +asn_struct_print_f RICcallProcessID_print; +asn_constr_check_f RICcallProcessID_constraint; +ber_type_decoder_f RICcallProcessID_decode_ber; +der_type_encoder_f RICcallProcessID_encode_der; +xer_type_decoder_f RICcallProcessID_decode_xer; +xer_type_encoder_f RICcallProcessID_encode_xer; +per_type_decoder_f RICcallProcessID_decode_uper; +per_type_encoder_f RICcallProcessID_encode_uper; +per_type_decoder_f RICcallProcessID_decode_aper; +per_type_encoder_f RICcallProcessID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcallProcessID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcause.c b/E2Manager/asn1codec/e2ap_engine/RICcause.c new file mode 100644 index 0000000..39f1566 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcause.c @@ -0,0 +1,111 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcause.h" + +asn_per_constraints_t asn_PER_type_RICcause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICcause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRadioNetwork, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.ric), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRIC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcause_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 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric */ +}; +asn_CHOICE_specifics_t asn_SPC_RICcause_specs_1 = { + sizeof(struct RICcause), + offsetof(struct RICcause, _asn_ctx), + offsetof(struct RICcause, present), + sizeof(((struct RICcause *)0)->present), + asn_MAP_RICcause_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcause = { + "RICcause", + "RICcause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RICcause_constr_1, CHOICE_constraint }, + asn_MBR_RICcause_1, + 5, /* Elements count */ + &asn_SPC_RICcause_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcause.h b/E2Manager/asn1codec/e2ap_engine/RICcause.h new file mode 100644 index 0000000..7e1c50e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcause.h @@ -0,0 +1,87 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcause_H_ +#define _RICcause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRadioNetwork.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "CauseRIC.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcause_PR { + RICcause_PR_NOTHING, /* No components present */ + RICcause_PR_radioNetwork, + RICcause_PR_transport, + RICcause_PR_protocol, + RICcause_PR_misc, + RICcause_PR_ric + /* Extensions may appear below */ + +} RICcause_PR; + +/* RICcause */ +typedef struct RICcause { + RICcause_PR present; + union RICcause_u { + CauseRadioNetwork_t radioNetwork; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + CauseRIC_t ric; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcause; +extern asn_CHOICE_specifics_t asn_SPC_RICcause_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcause_1[5]; +extern asn_per_constraints_t asn_PER_type_RICcause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcause_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.c new file mode 100644 index 0000000..327cee0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { + { 0, 5, "noAck" }, + { 1, 3, "ack" }, + { 2, 4, "nAck" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { + 1, /* ack(1) */ + 2, /* nAck(2) */ + 0 /* noAck(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { + asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolAckRequest_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_RICcontrolAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { + "RICcontrolAckRequest", + "RICcontrolAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolAckRequest_tags_1, + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.h new file mode 100644 index 0000000..21331d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolAckRequest.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAckRequest_H_ +#define _RICcontrolAckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolAckRequest { + RICcontrolAckRequest_noAck = 0, + RICcontrolAckRequest_ack = 1, + RICcontrolAckRequest_nAck = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolAckRequest; + +/* RICcontrolAckRequest */ +typedef long RICcontrolAckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; +asn_struct_free_f RICcontrolAckRequest_free; +asn_struct_print_f RICcontrolAckRequest_print; +asn_constr_check_f RICcontrolAckRequest_constraint; +ber_type_decoder_f RICcontrolAckRequest_decode_ber; +der_type_encoder_f RICcontrolAckRequest_encode_der; +xer_type_decoder_f RICcontrolAckRequest_decode_xer; +xer_type_encoder_f RICcontrolAckRequest_encode_xer; +per_type_decoder_f RICcontrolAckRequest_decode_uper; +per_type_encoder_f RICcontrolAckRequest_encode_uper; +per_type_decoder_f RICcontrolAckRequest_decode_aper; +per_type_encoder_f RICcontrolAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAckRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.c new file mode 100644 index 0000000..ac27f8e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { + sizeof(struct RICcontrolAcknowledge), + offsetof(struct RICcontrolAcknowledge, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { + "RICcontrolAcknowledge", + "RICcontrolAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_tags_1, + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.h new file mode 100644 index 0000000..3db8a3c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolAcknowledge.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAcknowledge_H_ +#define _RICcontrolAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolAcknowledge */ +typedef struct RICcontrolAcknowledge { + ProtocolIE_Container_119P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.c new file mode 100644 index 0000000..b0f1052 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolFailure.h" + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { + sizeof(struct RICcontrolFailure), + offsetof(struct RICcontrolFailure, _asn_ctx), + asn_MAP_RICcontrolFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { + "RICcontrolFailure", + "RICcontrolFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_tags_1, + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.h new file mode 100644 index 0000000..a55a447 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolFailure_H_ +#define _RICcontrolFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolFailure */ +typedef struct RICcontrolFailure { + ProtocolIE_Container_119P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.c new file mode 100644 index 0000000..a7d1bb0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { + "RICcontrolHeader", + "RICcontrolHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolHeader_tags_1, + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.h new file mode 100644 index 0000000..f3f89ac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolHeader.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolHeader_H_ +#define _RICcontrolHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolHeader */ +typedef OCTET_STRING_t RICcontrolHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; +asn_struct_free_f RICcontrolHeader_free; +asn_struct_print_f RICcontrolHeader_print; +asn_constr_check_f RICcontrolHeader_constraint; +ber_type_decoder_f RICcontrolHeader_decode_ber; +der_type_encoder_f RICcontrolHeader_encode_der; +xer_type_decoder_f RICcontrolHeader_decode_xer; +xer_type_encoder_f RICcontrolHeader_encode_xer; +per_type_decoder_f RICcontrolHeader_decode_uper; +per_type_encoder_f RICcontrolHeader_encode_uper; +per_type_decoder_f RICcontrolHeader_decode_aper; +per_type_encoder_f RICcontrolHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolHeader_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.c new file mode 100644 index 0000000..c372180 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { + "RICcontrolMessage", + "RICcontrolMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolMessage_tags_1, + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.h new file mode 100644 index 0000000..10a520b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolMessage.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolMessage_H_ +#define _RICcontrolMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolMessage */ +typedef OCTET_STRING_t RICcontrolMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; +asn_struct_free_f RICcontrolMessage_free; +asn_struct_print_f RICcontrolMessage_print; +asn_constr_check_f RICcontrolMessage_constraint; +ber_type_decoder_f RICcontrolMessage_decode_ber; +der_type_encoder_f RICcontrolMessage_encode_der; +xer_type_decoder_f RICcontrolMessage_decode_xer; +xer_type_encoder_f RICcontrolMessage_encode_xer; +per_type_decoder_f RICcontrolMessage_decode_uper; +per_type_encoder_f RICcontrolMessage_encode_uper; +per_type_decoder_f RICcontrolMessage_decode_aper; +per_type_encoder_f RICcontrolMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.c new file mode 100644 index 0000000..d2cfb0e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolRequest.h" + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { + sizeof(struct RICcontrolRequest), + offsetof(struct RICcontrolRequest, _asn_ctx), + asn_MAP_RICcontrolRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { + "RICcontrolRequest", + "RICcontrolRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_tags_1, + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.h new file mode 100644 index 0000000..4fbb2a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolRequest_H_ +#define _RICcontrolRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolRequest */ +typedef struct RICcontrolRequest { + ProtocolIE_Container_119P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.c b/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.c new file mode 100644 index 0000000..c44d089 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolStatus_value2enum_1[] = { + { 0, 7, "success" }, + { 1, 8, "rejected" }, + { 2, 6, "failed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolStatus_enum2value_1[] = { + 2, /* failed(2) */ + 1, /* rejected(1) */ + 0 /* success(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolStatus_specs_1 = { + asn_MAP_RICcontrolStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolStatus_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_RICcontrolStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus = { + "RICcontrolStatus", + "RICcontrolStatus", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolStatus_tags_1, + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolStatus_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.h b/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.h new file mode 100644 index 0000000..259f3b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICcontrolStatus.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolStatus_H_ +#define _RICcontrolStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolStatus { + RICcontrolStatus_success = 0, + RICcontrolStatus_rejected = 1, + RICcontrolStatus_failed = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolStatus; + +/* RICcontrolStatus */ +typedef long RICcontrolStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus; +asn_struct_free_f RICcontrolStatus_free; +asn_struct_print_f RICcontrolStatus_print; +asn_constr_check_f RICcontrolStatus_constraint; +ber_type_decoder_f RICcontrolStatus_decode_ber; +der_type_encoder_f RICcontrolStatus_encode_der; +xer_type_decoder_f RICcontrolStatus_decode_xer; +xer_type_encoder_f RICcontrolStatus_encode_xer; +per_type_decoder_f RICcontrolStatus_decode_uper; +per_type_encoder_f RICcontrolStatus_encode_uper; +per_type_decoder_f RICcontrolStatus_decode_aper; +per_type_encoder_f RICcontrolStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolStatus_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.c b/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.c new file mode 100644 index 0000000..79ebfc2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICeventTriggerDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { + "RICeventTriggerDefinition", + "RICeventTriggerDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICeventTriggerDefinition_tags_1, + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.h b/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.h new file mode 100644 index 0000000..6b75594 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICeventTriggerDefinition.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICeventTriggerDefinition_H_ +#define _RICeventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICeventTriggerDefinition */ +typedef OCTET_STRING_t RICeventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; +asn_struct_free_f RICeventTriggerDefinition_free; +asn_struct_print_f RICeventTriggerDefinition_print; +asn_constr_check_f RICeventTriggerDefinition_constraint; +ber_type_decoder_f RICeventTriggerDefinition_decode_ber; +der_type_encoder_f RICeventTriggerDefinition_encode_der; +xer_type_decoder_f RICeventTriggerDefinition_decode_xer; +xer_type_encoder_f RICeventTriggerDefinition_encode_xer; +per_type_decoder_f RICeventTriggerDefinition_decode_uper; +per_type_encoder_f RICeventTriggerDefinition_encode_uper; +per_type_decoder_f RICeventTriggerDefinition_decode_aper; +per_type_encoder_f RICeventTriggerDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICeventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICindication.c b/E2Manager/asn1codec/e2ap_engine/RICindication.c new file mode 100644 index 0000000..e437a4a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindication.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindication.h" + +asn_TYPE_member_t asn_MBR_RICindication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { + sizeof(struct RICindication), + offsetof(struct RICindication, _asn_ctx), + asn_MAP_RICindication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication = { + "RICindication", + "RICindication", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_tags_1, + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + asn_DEF_RICindication_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_1, + 1, /* Elements count */ + &asn_SPC_RICindication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICindication.h b/E2Manager/asn1codec/e2ap_engine/RICindication.h new file mode 100644 index 0000000..5bbe9be --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindication.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindication_H_ +#define _RICindication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindication */ +typedef struct RICindication { + ProtocolIE_Container_119P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindication; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; +extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.c b/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.c new file mode 100644 index 0000000..5c3cf99 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { + "RICindicationHeader", + "RICindicationHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationHeader_tags_1, + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + asn_DEF_RICindicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.h b/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.h new file mode 100644 index 0000000..16c1837 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationHeader.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationHeader_H_ +#define _RICindicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationHeader */ +typedef OCTET_STRING_t RICindicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; +asn_struct_free_f RICindicationHeader_free; +asn_struct_print_f RICindicationHeader_print; +asn_constr_check_f RICindicationHeader_constraint; +ber_type_decoder_f RICindicationHeader_decode_ber; +der_type_encoder_f RICindicationHeader_encode_der; +xer_type_decoder_f RICindicationHeader_decode_xer; +xer_type_encoder_f RICindicationHeader_encode_xer; +per_type_decoder_f RICindicationHeader_decode_uper; +per_type_encoder_f RICindicationHeader_encode_uper; +per_type_decoder_f RICindicationHeader_decode_aper; +per_type_encoder_f RICindicationHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationHeader_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.c b/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.c new file mode 100644 index 0000000..5316d31 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { + "RICindicationMessage", + "RICindicationMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationMessage_tags_1, + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + asn_DEF_RICindicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.h b/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.h new file mode 100644 index 0000000..a9e2c87 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationMessage.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationMessage_H_ +#define _RICindicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationMessage */ +typedef OCTET_STRING_t RICindicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; +asn_struct_free_f RICindicationMessage_free; +asn_struct_print_f RICindicationMessage_print; +asn_constr_check_f RICindicationMessage_constraint; +ber_type_decoder_f RICindicationMessage_decode_ber; +der_type_encoder_f RICindicationMessage_encode_der; +xer_type_decoder_f RICindicationMessage_decode_xer; +xer_type_encoder_f RICindicationMessage_encode_xer; +per_type_decoder_f RICindicationMessage_decode_uper; +per_type_encoder_f RICindicationMessage_encode_uper; +per_type_decoder_f RICindicationMessage_decode_aper; +per_type_encoder_f RICindicationMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationSN.c b/E2Manager/asn1codec/e2ap_engine/RICindicationSN.c new file mode 100644 index 0000000..354daf2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationSN.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationSN.h" + +int +RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { + "RICindicationSN", + "RICindicationSN", + &asn_OP_NativeInteger, + asn_DEF_RICindicationSN_tags_1, + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + asn_DEF_RICindicationSN_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationSN.h b/E2Manager/asn1codec/e2ap_engine/RICindicationSN.h new file mode 100644 index 0000000..bf71bde --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationSN.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationSN_H_ +#define _RICindicationSN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationSN */ +typedef long RICindicationSN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; +asn_struct_free_f RICindicationSN_free; +asn_struct_print_f RICindicationSN_print; +asn_constr_check_f RICindicationSN_constraint; +ber_type_decoder_f RICindicationSN_decode_ber; +der_type_encoder_f RICindicationSN_encode_der; +xer_type_decoder_f RICindicationSN_decode_xer; +xer_type_encoder_f RICindicationSN_encode_xer; +per_type_decoder_f RICindicationSN_decode_uper; +per_type_encoder_f RICindicationSN_encode_uper; +per_type_decoder_f RICindicationSN_decode_aper; +per_type_encoder_f RICindicationSN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationSN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationType.c b/E2Manager/asn1codec/e2ap_engine/RICindicationType.c new file mode 100644 index 0000000..479a418 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationType.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { + 1, /* insert(1) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { + asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICindicationType_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_RICindicationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationType = { + "RICindicationType", + "RICindicationType", + &asn_OP_NativeEnumerated, + asn_DEF_RICindicationType_tags_1, + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + asn_DEF_RICindicationType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICindicationType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICindicationType.h b/E2Manager/asn1codec/e2ap_engine/RICindicationType.h new file mode 100644 index 0000000..607a4ed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICindicationType.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationType_H_ +#define _RICindicationType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICindicationType { + RICindicationType_report = 0, + RICindicationType_insert = 1 + /* + * Enumeration is extensible + */ +} e_RICindicationType; + +/* RICindicationType */ +typedef long RICindicationType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; +asn_struct_free_f RICindicationType_free; +asn_struct_print_f RICindicationType_print; +asn_constr_check_f RICindicationType_constraint; +ber_type_decoder_f RICindicationType_decode_ber; +der_type_encoder_f RICindicationType_encode_der; +xer_type_decoder_f RICindicationType_decode_xer; +xer_type_encoder_f RICindicationType_encode_xer; +per_type_decoder_f RICindicationType_decode_uper; +per_type_encoder_f RICindicationType_encode_uper; +per_type_decoder_f RICindicationType_decode_aper; +per_type_encoder_f RICindicationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICrequestID.c b/E2Manager/asn1codec/e2ap_engine/RICrequestID.c new file mode 100644 index 0000000..055eebf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICrequestID.c @@ -0,0 +1,139 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICrequestID.h" + +static int +memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ricRequestSequenceNumber_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ricRequestSequenceNumber_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestSequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestSequenceNumber_constr_3, memb_ricRequestSequenceNumber_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestSequenceNumber" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricRequestSequenceNumber */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { + sizeof(struct RICrequestID), + offsetof(struct RICrequestID, _asn_ctx), + asn_MAP_RICrequestID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICrequestID = { + "RICrequestID", + "RICrequestID", + &asn_OP_SEQUENCE, + asn_DEF_RICrequestID_tags_1, + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + asn_DEF_RICrequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICrequestID_1, + 2, /* Elements count */ + &asn_SPC_RICrequestID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICrequestID.h b/E2Manager/asn1codec/e2ap_engine/RICrequestID.h new file mode 100644 index 0000000..9a96b31 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICrequestID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICrequestID_H_ +#define _RICrequestID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICrequestID */ +typedef struct RICrequestID { + long ricRequestorID; + long ricRequestSequenceNumber; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICrequestID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICrequestID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.c b/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.c new file mode 100644 index 0000000..4858e8a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceQuery.h" + +asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { + sizeof(struct RICserviceQuery), + offsetof(struct RICserviceQuery, _asn_ctx), + asn_MAP_RICserviceQuery_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { + "RICserviceQuery", + "RICserviceQuery", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_tags_1, + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + asn_DEF_RICserviceQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_1, + 1, /* Elements count */ + &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.h b/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.h new file mode 100644 index 0000000..d0268b4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceQuery.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceQuery_H_ +#define _RICserviceQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceQuery */ +typedef struct RICserviceQuery { + ProtocolIE_Container_119P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceQuery_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.c b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.c new file mode 100644 index 0000000..ac669d6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdate.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { + sizeof(struct RICserviceUpdate), + offsetof(struct RICserviceUpdate, _asn_ctx), + asn_MAP_RICserviceUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { + "RICserviceUpdate", + "RICserviceUpdate", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_tags_1, + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.h b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.h new file mode 100644 index 0000000..41f30a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdate_H_ +#define _RICserviceUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdate */ +typedef struct RICserviceUpdate { + ProtocolIE_Container_119P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c new file mode 100644 index 0000000..43bd9b4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { + sizeof(struct RICserviceUpdateAcknowledge), + offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { + "RICserviceUpdateAcknowledge", + "RICserviceUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_tags_1, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h new file mode 100644 index 0000000..4e2c7f9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateAcknowledge_H_ +#define _RICserviceUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateAcknowledge */ +typedef struct RICserviceUpdateAcknowledge { + ProtocolIE_Container_119P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.c b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.c new file mode 100644 index 0000000..934cf54 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { + sizeof(struct RICserviceUpdateFailure), + offsetof(struct RICserviceUpdateFailure, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { + "RICserviceUpdateFailure", + "RICserviceUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_tags_1, + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.h b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.h new file mode 100644 index 0000000..cdbfee7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICserviceUpdateFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateFailure_H_ +#define _RICserviceUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateFailure */ +typedef struct RICserviceUpdateFailure { + ProtocolIE_Container_119P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscription.c b/E2Manager/asn1codec/e2ap_engine/RICsubscription.c new file mode 100644 index 0000000..030dd39 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscription.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscription.h" + +static asn_TYPE_member_t asn_MBR_RICsubscription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription, ricEventTriggerDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICeventTriggerDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricEventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription, ricAction_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactions_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricAction-ToBeSetup-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_specs_1 = { + sizeof(struct RICsubscription), + offsetof(struct RICsubscription, _asn_ctx), + asn_MAP_RICsubscription_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscription = { + "RICsubscription", + "RICsubscription", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscription_tags_1, + sizeof(asn_DEF_RICsubscription_tags_1) + /sizeof(asn_DEF_RICsubscription_tags_1[0]), /* 1 */ + asn_DEF_RICsubscription_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscription_tags_1) + /sizeof(asn_DEF_RICsubscription_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscription_1, + 2, /* Elements count */ + &asn_SPC_RICsubscription_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscription.h b/E2Manager/asn1codec/e2ap_engine/RICsubscription.h new file mode 100644 index 0000000..7d359ba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscription.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscription_H_ +#define _RICsubscription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeSetup-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscription */ +typedef struct RICsubscription { + RICeventTriggerDefinition_t ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscription; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscription_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c new file mode 100644 index 0000000..924abc1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { + sizeof(struct RICsubscriptionDeleteFailure), + offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { + "RICsubscriptionDeleteFailure", + "RICsubscriptionDeleteFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h new file mode 100644 index 0000000..8fbe600 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteFailure_H_ +#define _RICsubscriptionDeleteFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteFailure */ +typedef struct RICsubscriptionDeleteFailure { + ProtocolIE_Container_119P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c new file mode 100644 index 0000000..91e425e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequest), + offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { + "RICsubscriptionDeleteRequest", + "RICsubscriptionDeleteRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h new file mode 100644 index 0000000..1517444 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteRequest_H_ +#define _RICsubscriptionDeleteRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequest */ +typedef struct RICsubscriptionDeleteRequest { + ProtocolIE_Container_119P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c new file mode 100644 index 0000000..795ff06 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { + sizeof(struct RICsubscriptionDeleteResponse), + offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { + "RICsubscriptionDeleteResponse", + "RICsubscriptionDeleteResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h new file mode 100644 index 0000000..1086f8f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteResponse_H_ +#define _RICsubscriptionDeleteResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteResponse */ +typedef struct RICsubscriptionDeleteResponse { + ProtocolIE_Container_119P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.c new file mode 100644 index 0000000..e870d8d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { + sizeof(struct RICsubscriptionFailure), + offsetof(struct RICsubscriptionFailure, _asn_ctx), + asn_MAP_RICsubscriptionFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { + "RICsubscriptionFailure", + "RICsubscriptionFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.h new file mode 100644 index 0000000..8a2188f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionFailure_H_ +#define _RICsubscriptionFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionFailure */ +typedef struct RICsubscriptionFailure { + ProtocolIE_Container_119P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.c new file mode 100644 index 0000000..267c9f8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { + sizeof(struct RICsubscriptionRequest), + offsetof(struct RICsubscriptionRequest, _asn_ctx), + asn_MAP_RICsubscriptionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { + "RICsubscriptionRequest", + "RICsubscriptionRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.h new file mode 100644 index 0000000..7223ef8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionRequest_H_ +#define _RICsubscriptionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionRequest */ +typedef struct RICsubscriptionRequest { + ProtocolIE_Container_119P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.c b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.c new file mode 100644 index 0000000..f9fb81a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { + sizeof(struct RICsubscriptionResponse), + offsetof(struct RICsubscriptionResponse, _asn_ctx), + asn_MAP_RICsubscriptionResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { + "RICsubscriptionResponse", + "RICsubscriptionResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.h b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.h new file mode 100644 index 0000000..7f9810f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubscriptionResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionResponse_H_ +#define _RICsubscriptionResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionResponse */ +typedef struct RICsubscriptionResponse { + ProtocolIE_Container_119P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.c b/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.c new file mode 100644 index 0000000..c40ab1f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentAction.h" + +asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentActionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { + sizeof(struct RICsubsequentAction), + offsetof(struct RICsubsequentAction, _asn_ctx), + asn_MAP_RICsubsequentAction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { + "RICsubsequentAction", + "RICsubsequentAction", + &asn_OP_SEQUENCE, + asn_DEF_RICsubsequentAction_tags_1, + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubsequentAction_1, + 2, /* Elements count */ + &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.h b/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.h new file mode 100644 index 0000000..e035098 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubsequentAction.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentAction_H_ +#define _RICsubsequentAction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICsubsequentActionType.h" +#include "RICtimeToWait.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubsequentAction */ +typedef struct RICsubsequentAction { + RICsubsequentActionType_t ricSubsequentActionType; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubsequentAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentAction_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.c b/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.c new file mode 100644 index 0000000..572315b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentActionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { + { 0, 8, "continue" }, + { 1, 4, "wait" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { + 0, /* continue(0) */ + 1 /* wait(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { + asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICsubsequentActionType_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_RICsubsequentActionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { + "RICsubsequentActionType", + "RICsubsequentActionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICsubsequentActionType_tags_1, + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.h b/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.h new file mode 100644 index 0000000..d11dc0e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICsubsequentActionType.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentActionType_H_ +#define _RICsubsequentActionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICsubsequentActionType { + RICsubsequentActionType_continue = 0, + RICsubsequentActionType_wait = 1 + /* + * Enumeration is extensible + */ +} e_RICsubsequentActionType; + +/* RICsubsequentActionType */ +typedef long RICsubsequentActionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; +asn_struct_free_f RICsubsequentActionType_free; +asn_struct_print_f RICsubsequentActionType_print; +asn_constr_check_f RICsubsequentActionType_constraint; +ber_type_decoder_f RICsubsequentActionType_decode_ber; +der_type_encoder_f RICsubsequentActionType_encode_der; +xer_type_decoder_f RICsubsequentActionType_decode_xer; +xer_type_encoder_f RICsubsequentActionType_encode_xer; +per_type_decoder_f RICsubsequentActionType_decode_uper; +per_type_encoder_f RICsubsequentActionType_encode_uper; +per_type_decoder_f RICsubsequentActionType_decode_aper; +per_type_encoder_f RICsubsequentActionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentActionType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.c b/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.c new file mode 100644 index 0000000..5406b15 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.c @@ -0,0 +1,106 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICtimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 17 } /* (0..17,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { + { 0, 4, "zero" }, + { 1, 4, "w1ms" }, + { 2, 4, "w2ms" }, + { 3, 4, "w5ms" }, + { 4, 5, "w10ms" }, + { 5, 5, "w20ms" }, + { 6, 5, "w30ms" }, + { 7, 5, "w40ms" }, + { 8, 5, "w50ms" }, + { 9, 6, "w100ms" }, + { 10, 6, "w200ms" }, + { 11, 6, "w500ms" }, + { 12, 3, "w1s" }, + { 13, 3, "w2s" }, + { 14, 3, "w5s" }, + { 15, 4, "w10s" }, + { 16, 4, "w20s" }, + { 17, 4, "w60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { + 9, /* w100ms(9) */ + 4, /* w10ms(4) */ + 15, /* w10s(15) */ + 1, /* w1ms(1) */ + 12, /* w1s(12) */ + 10, /* w200ms(10) */ + 5, /* w20ms(5) */ + 16, /* w20s(16) */ + 2, /* w2ms(2) */ + 13, /* w2s(13) */ + 6, /* w30ms(6) */ + 7, /* w40ms(7) */ + 11, /* w500ms(11) */ + 8, /* w50ms(8) */ + 3, /* w5ms(3) */ + 14, /* w5s(14) */ + 17, /* w60s(17) */ + 0 /* zero(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { + asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 18, /* Number of elements in the maps */ + 19, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { + "RICtimeToWait", + "RICtimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_RICtimeToWait_tags_1, + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + asn_DEF_RICtimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.h b/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.h new file mode 100644 index 0000000..c790c67 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RICtimeToWait.h @@ -0,0 +1,89 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICtimeToWait_H_ +#define _RICtimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICtimeToWait { + RICtimeToWait_zero = 0, + RICtimeToWait_w1ms = 1, + RICtimeToWait_w2ms = 2, + RICtimeToWait_w5ms = 3, + RICtimeToWait_w10ms = 4, + RICtimeToWait_w20ms = 5, + RICtimeToWait_w30ms = 6, + RICtimeToWait_w40ms = 7, + RICtimeToWait_w50ms = 8, + RICtimeToWait_w100ms = 9, + RICtimeToWait_w200ms = 10, + RICtimeToWait_w500ms = 11, + RICtimeToWait_w1s = 12, + RICtimeToWait_w2s = 13, + RICtimeToWait_w5s = 14, + RICtimeToWait_w10s = 15, + RICtimeToWait_w20s = 16, + RICtimeToWait_w60s = 17 + /* + * Enumeration is extensible + */ +} e_RICtimeToWait; + +/* RICtimeToWait */ +typedef long RICtimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; +asn_struct_free_f RICtimeToWait_free; +asn_struct_print_f RICtimeToWait_print; +asn_constr_check_f RICtimeToWait_constraint; +ber_type_decoder_f RICtimeToWait_decode_ber; +der_type_encoder_f RICtimeToWait_encode_der; +xer_type_decoder_f RICtimeToWait_decode_xer; +xer_type_encoder_f RICtimeToWait_encode_xer; +per_type_decoder_f RICtimeToWait_decode_uper; +per_type_encoder_f RICtimeToWait_encode_uper; +per_type_decoder_f RICtimeToWait_decode_aper; +per_type_encoder_f RICtimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICtimeToWait_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RLC-Status.c b/E2Manager/asn1codec/e2ap_engine/RLC-Status.c new file mode 100644 index 0000000..19c4fbf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLC-Status.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLC-Status.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_RLC_Status_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status, reestablishment_Indication), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reestablishment_Indication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reestablishment-Indication" + }, + { ATF_POINTER, 1, offsetof(struct RLC_Status, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P186, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RLC_Status_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_RLC_Status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLC_Status_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reestablishment-Indication */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_specs_1 = { + sizeof(struct RLC_Status), + offsetof(struct RLC_Status, _asn_ctx), + asn_MAP_RLC_Status_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_RLC_Status_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLC_Status = { + "RLC-Status", + "RLC-Status", + &asn_OP_SEQUENCE, + asn_DEF_RLC_Status_tags_1, + sizeof(asn_DEF_RLC_Status_tags_1) + /sizeof(asn_DEF_RLC_Status_tags_1[0]), /* 1 */ + asn_DEF_RLC_Status_tags_1, /* Same as above */ + sizeof(asn_DEF_RLC_Status_tags_1) + /sizeof(asn_DEF_RLC_Status_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLC_Status_1, + 2, /* Elements count */ + &asn_SPC_RLC_Status_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RLC-Status.h b/E2Manager/asn1codec/e2ap_engine/RLC-Status.h new file mode 100644 index 0000000..7ea5a4f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLC-Status.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLC_Status_H_ +#define _RLC_Status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Reestablishment-Indication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RLC-Status */ +typedef struct RLC_Status { + Reestablishment_Indication_t reestablishment_Indication; + 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; +} RLC_Status_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RLC_Status; +extern asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_specs_1; +extern asn_TYPE_member_t asn_MBR_RLC_Status_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLC_Status_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RLCMode.c b/E2Manager/asn1codec/e2ap_engine/RLCMode.c new file mode 100644 index 0000000..6ef6fba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLCMode.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLCMode.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RLCMode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RLCMode_value2enum_1[] = { + { 0, 6, "rlc-am" }, + { 1, 20, "rlc-um-bidirectional" }, + { 2, 24, "rlc-um-unidirectional-ul" }, + { 3, 24, "rlc-um-unidirectional-dl" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RLCMode_enum2value_1[] = { + 0, /* rlc-am(0) */ + 1, /* rlc-um-bidirectional(1) */ + 3, /* rlc-um-unidirectional-dl(3) */ + 2 /* rlc-um-unidirectional-ul(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RLCMode_specs_1 = { + asn_MAP_RLCMode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RLCMode_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_RLCMode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RLCMode = { + "RLCMode", + "RLCMode", + &asn_OP_NativeEnumerated, + asn_DEF_RLCMode_tags_1, + sizeof(asn_DEF_RLCMode_tags_1) + /sizeof(asn_DEF_RLCMode_tags_1[0]), /* 1 */ + asn_DEF_RLCMode_tags_1, /* Same as above */ + sizeof(asn_DEF_RLCMode_tags_1) + /sizeof(asn_DEF_RLCMode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RLCMode_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RLCMode_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RLCMode.h b/E2Manager/asn1codec/e2ap_engine/RLCMode.h new file mode 100644 index 0000000..c7e9dce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLCMode.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLCMode_H_ +#define _RLCMode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RLCMode { + RLCMode_rlc_am = 0, + RLCMode_rlc_um_bidirectional = 1, + RLCMode_rlc_um_unidirectional_ul = 2, + RLCMode_rlc_um_unidirectional_dl = 3 + /* + * Enumeration is extensible + */ +} e_RLCMode; + +/* RLCMode */ +typedef long RLCMode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RLCMode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RLCMode; +extern const asn_INTEGER_specifics_t asn_SPC_RLCMode_specs_1; +asn_struct_free_f RLCMode_free; +asn_struct_print_f RLCMode_print; +asn_constr_check_f RLCMode_constraint; +ber_type_decoder_f RLCMode_decode_ber; +der_type_encoder_f RLCMode_encode_der; +xer_type_decoder_f RLCMode_decode_xer; +xer_type_encoder_f RLCMode_encode_xer; +per_type_decoder_f RLCMode_decode_uper; +per_type_encoder_f RLCMode_encode_uper; +per_type_decoder_f RLCMode_decode_aper; +per_type_encoder_f RLCMode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLCMode_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RLFIndication.c b/E2Manager/asn1codec/e2ap_engine/RLFIndication.c new file mode 100644 index 0000000..604d624 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLFIndication.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLFIndication.h" + +static asn_TYPE_member_t asn_MBR_RLFIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLFIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLFIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_specs_1 = { + sizeof(struct RLFIndication), + offsetof(struct RLFIndication, _asn_ctx), + asn_MAP_RLFIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLFIndication = { + "RLFIndication", + "RLFIndication", + &asn_OP_SEQUENCE, + asn_DEF_RLFIndication_tags_1, + sizeof(asn_DEF_RLFIndication_tags_1) + /sizeof(asn_DEF_RLFIndication_tags_1[0]), /* 1 */ + asn_DEF_RLFIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_RLFIndication_tags_1) + /sizeof(asn_DEF_RLFIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLFIndication_1, + 1, /* Elements count */ + &asn_SPC_RLFIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RLFIndication.h b/E2Manager/asn1codec/e2ap_engine/RLFIndication.h new file mode 100644 index 0000000..7198733 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RLFIndication.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLFIndication_H_ +#define _RLFIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RLFIndication */ +typedef struct RLFIndication { + ProtocolIE_Container_119P38_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLFIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RLFIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLFIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RNL-Header.c b/E2Manager/asn1codec/e2ap_engine/RNL-Header.c new file mode 100644 index 0000000..8501af4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RNL-Header.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RNL-Header.h" + +#include "GlobalENB-ID.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_RNL_Header_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header, source_GlobalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalENB-ID" + }, + { ATF_POINTER, 2, offsetof(struct RNL_Header, target_GlobalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "target-GlobalENB-ID" + }, + { ATF_POINTER, 1, offsetof(struct RNL_Header, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RNL_Header_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_RNL_Header_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RNL_Header_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* target-GlobalENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_specs_1 = { + sizeof(struct RNL_Header), + offsetof(struct RNL_Header, _asn_ctx), + asn_MAP_RNL_Header_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_RNL_Header_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RNL_Header = { + "RNL-Header", + "RNL-Header", + &asn_OP_SEQUENCE, + asn_DEF_RNL_Header_tags_1, + sizeof(asn_DEF_RNL_Header_tags_1) + /sizeof(asn_DEF_RNL_Header_tags_1[0]), /* 1 */ + asn_DEF_RNL_Header_tags_1, /* Same as above */ + sizeof(asn_DEF_RNL_Header_tags_1) + /sizeof(asn_DEF_RNL_Header_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RNL_Header_1, + 3, /* Elements count */ + &asn_SPC_RNL_Header_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RNL-Header.h b/E2Manager/asn1codec/e2ap_engine/RNL-Header.h new file mode 100644 index 0000000..bfd66df --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RNL-Header.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RNL_Header_H_ +#define _RNL_Header_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalENB_ID; +struct ProtocolExtensionContainer; + +/* RNL-Header */ +typedef struct RNL_Header { + GlobalENB_ID_t source_GlobalENB_ID; + struct GlobalENB_ID *target_GlobalENB_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; +} RNL_Header_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RNL_Header; + +#ifdef __cplusplus +} +#endif + +#endif /* _RNL_Header_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.c b/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.c new file mode 100644 index 0000000..dc25a4e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RNTP-Threshold.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RNTP_Threshold_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RNTP_Threshold_value2enum_1[] = { + { 0, 13, "minusInfinity" }, + { 1, 11, "minusEleven" }, + { 2, 8, "minusTen" }, + { 3, 9, "minusNine" }, + { 4, 10, "minusEight" }, + { 5, 10, "minusSeven" }, + { 6, 8, "minusSix" }, + { 7, 9, "minusFive" }, + { 8, 9, "minusFour" }, + { 9, 10, "minusThree" }, + { 10, 8, "minusTwo" }, + { 11, 8, "minusOne" }, + { 12, 4, "zero" }, + { 13, 3, "one" }, + { 14, 3, "two" }, + { 15, 5, "three" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RNTP_Threshold_enum2value_1[] = { + 4, /* minusEight(4) */ + 1, /* minusEleven(1) */ + 7, /* minusFive(7) */ + 8, /* minusFour(8) */ + 0, /* minusInfinity(0) */ + 3, /* minusNine(3) */ + 11, /* minusOne(11) */ + 5, /* minusSeven(5) */ + 6, /* minusSix(6) */ + 2, /* minusTen(2) */ + 9, /* minusThree(9) */ + 10, /* minusTwo(10) */ + 13, /* one(13) */ + 15, /* three(15) */ + 14, /* two(14) */ + 12 /* zero(12) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RNTP_Threshold_specs_1 = { + asn_MAP_RNTP_Threshold_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RNTP_Threshold_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 17, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RNTP_Threshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RNTP_Threshold = { + "RNTP-Threshold", + "RNTP-Threshold", + &asn_OP_NativeEnumerated, + asn_DEF_RNTP_Threshold_tags_1, + sizeof(asn_DEF_RNTP_Threshold_tags_1) + /sizeof(asn_DEF_RNTP_Threshold_tags_1[0]), /* 1 */ + asn_DEF_RNTP_Threshold_tags_1, /* Same as above */ + sizeof(asn_DEF_RNTP_Threshold_tags_1) + /sizeof(asn_DEF_RNTP_Threshold_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RNTP_Threshold_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RNTP_Threshold_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.h b/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.h new file mode 100644 index 0000000..6dad0f8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RNTP-Threshold.h @@ -0,0 +1,87 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RNTP_Threshold_H_ +#define _RNTP_Threshold_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RNTP_Threshold { + RNTP_Threshold_minusInfinity = 0, + RNTP_Threshold_minusEleven = 1, + RNTP_Threshold_minusTen = 2, + RNTP_Threshold_minusNine = 3, + RNTP_Threshold_minusEight = 4, + RNTP_Threshold_minusSeven = 5, + RNTP_Threshold_minusSix = 6, + RNTP_Threshold_minusFive = 7, + RNTP_Threshold_minusFour = 8, + RNTP_Threshold_minusThree = 9, + RNTP_Threshold_minusTwo = 10, + RNTP_Threshold_minusOne = 11, + RNTP_Threshold_zero = 12, + RNTP_Threshold_one = 13, + RNTP_Threshold_two = 14, + RNTP_Threshold_three = 15 + /* + * Enumeration is extensible + */ +} e_RNTP_Threshold; + +/* RNTP-Threshold */ +typedef long RNTP_Threshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RNTP_Threshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RNTP_Threshold; +extern const asn_INTEGER_specifics_t asn_SPC_RNTP_Threshold_specs_1; +asn_struct_free_f RNTP_Threshold_free; +asn_struct_print_f RNTP_Threshold_print; +asn_constr_check_f RNTP_Threshold_constraint; +ber_type_decoder_f RNTP_Threshold_decode_ber; +der_type_encoder_f RNTP_Threshold_encode_der; +xer_type_decoder_f RNTP_Threshold_decode_xer; +xer_type_encoder_f RNTP_Threshold_encode_xer; +per_type_decoder_f RNTP_Threshold_decode_uper; +per_type_encoder_f RNTP_Threshold_encode_uper; +per_type_decoder_f RNTP_Threshold_decode_aper; +per_type_encoder_f RNTP_Threshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RNTP_Threshold_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.c b/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.c new file mode 100644 index 0000000..91c45fd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRC-Config-Ind.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRC_Config_Ind_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRC_Config_Ind_value2enum_1[] = { + { 0, 11, "full-config" }, + { 1, 12, "delta-config" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRC_Config_Ind_enum2value_1[] = { + 1, /* delta-config(1) */ + 0 /* full-config(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRC_Config_Ind_specs_1 = { + asn_MAP_RRC_Config_Ind_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRC_Config_Ind_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_RRC_Config_Ind_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRC_Config_Ind = { + "RRC-Config-Ind", + "RRC-Config-Ind", + &asn_OP_NativeEnumerated, + asn_DEF_RRC_Config_Ind_tags_1, + sizeof(asn_DEF_RRC_Config_Ind_tags_1) + /sizeof(asn_DEF_RRC_Config_Ind_tags_1[0]), /* 1 */ + asn_DEF_RRC_Config_Ind_tags_1, /* Same as above */ + sizeof(asn_DEF_RRC_Config_Ind_tags_1) + /sizeof(asn_DEF_RRC_Config_Ind_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRC_Config_Ind_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRC_Config_Ind_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.h b/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.h new file mode 100644 index 0000000..8bb4441 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRC-Config-Ind.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRC_Config_Ind_H_ +#define _RRC_Config_Ind_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRC_Config_Ind { + RRC_Config_Ind_full_config = 0, + RRC_Config_Ind_delta_config = 1 + /* + * Enumeration is extensible + */ +} e_RRC_Config_Ind; + +/* RRC-Config-Ind */ +typedef long RRC_Config_Ind_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRC_Config_Ind_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRC_Config_Ind; +extern const asn_INTEGER_specifics_t asn_SPC_RRC_Config_Ind_specs_1; +asn_struct_free_f RRC_Config_Ind_free; +asn_struct_print_f RRC_Config_Ind_print; +asn_constr_check_f RRC_Config_Ind_constraint; +ber_type_decoder_f RRC_Config_Ind_decode_ber; +der_type_encoder_f RRC_Config_Ind_encode_der; +xer_type_decoder_f RRC_Config_Ind_decode_xer; +xer_type_encoder_f RRC_Config_Ind_encode_xer; +per_type_decoder_f RRC_Config_Ind_decode_uper; +per_type_encoder_f RRC_Config_Ind_encode_uper; +per_type_decoder_f RRC_Config_Ind_decode_aper; +per_type_encoder_f RRC_Config_Ind_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRC_Config_Ind_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRC-Context.c b/E2Manager/asn1codec/e2ap_engine/RRC-Context.c new file mode 100644 index 0000000..f9abdc0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRC-Context.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRC-Context.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RRC_Context_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRC_Context = { + "RRC-Context", + "RRC-Context", + &asn_OP_OCTET_STRING, + asn_DEF_RRC_Context_tags_1, + sizeof(asn_DEF_RRC_Context_tags_1) + /sizeof(asn_DEF_RRC_Context_tags_1[0]), /* 1 */ + asn_DEF_RRC_Context_tags_1, /* Same as above */ + sizeof(asn_DEF_RRC_Context_tags_1) + /sizeof(asn_DEF_RRC_Context_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRC-Context.h b/E2Manager/asn1codec/e2ap_engine/RRC-Context.h new file mode 100644 index 0000000..4d04db4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRC-Context.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRC_Context_H_ +#define _RRC_Context_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRC-Context */ +typedef OCTET_STRING_t RRC_Context_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRC_Context; +asn_struct_free_f RRC_Context_free; +asn_struct_print_f RRC_Context_print; +asn_constr_check_f RRC_Context_constraint; +ber_type_decoder_f RRC_Context_decode_ber; +der_type_encoder_f RRC_Context_encode_der; +xer_type_decoder_f RRC_Context_decode_xer; +xer_type_encoder_f RRC_Context_encode_xer; +per_type_decoder_f RRC_Context_decode_uper; +per_type_encoder_f RRC_Context_encode_uper; +per_type_decoder_f RRC_Context_decode_aper; +per_type_encoder_f RRC_Context_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRC_Context_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.c b/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.c new file mode 100644 index 0000000..0c34b9e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCConnReestabIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRCConnReestabIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRCConnReestabIndicator_value2enum_1[] = { + { 0, 22, "reconfigurationFailure" }, + { 1, 15, "handoverFailure" }, + { 2, 12, "otherFailure" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCConnReestabIndicator_enum2value_1[] = { + 1, /* handoverFailure(1) */ + 2, /* otherFailure(2) */ + 0 /* reconfigurationFailure(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCConnReestabIndicator_specs_1 = { + asn_MAP_RRCConnReestabIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCConnReestabIndicator_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_RRCConnReestabIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCConnReestabIndicator = { + "RRCConnReestabIndicator", + "RRCConnReestabIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_RRCConnReestabIndicator_tags_1, + sizeof(asn_DEF_RRCConnReestabIndicator_tags_1) + /sizeof(asn_DEF_RRCConnReestabIndicator_tags_1[0]), /* 1 */ + asn_DEF_RRCConnReestabIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCConnReestabIndicator_tags_1) + /sizeof(asn_DEF_RRCConnReestabIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRCConnReestabIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCConnReestabIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.h b/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.h new file mode 100644 index 0000000..85daad9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCConnReestabIndicator.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCConnReestabIndicator_H_ +#define _RRCConnReestabIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCConnReestabIndicator { + RRCConnReestabIndicator_reconfigurationFailure = 0, + RRCConnReestabIndicator_handoverFailure = 1, + RRCConnReestabIndicator_otherFailure = 2 + /* + * Enumeration is extensible + */ +} e_RRCConnReestabIndicator; + +/* RRCConnReestabIndicator */ +typedef long RRCConnReestabIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCConnReestabIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCConnReestabIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_RRCConnReestabIndicator_specs_1; +asn_struct_free_f RRCConnReestabIndicator_free; +asn_struct_print_f RRCConnReestabIndicator_print; +asn_constr_check_f RRCConnReestabIndicator_constraint; +ber_type_decoder_f RRCConnReestabIndicator_decode_ber; +der_type_encoder_f RRCConnReestabIndicator_encode_der; +xer_type_decoder_f RRCConnReestabIndicator_decode_xer; +xer_type_encoder_f RRCConnReestabIndicator_encode_xer; +per_type_decoder_f RRCConnReestabIndicator_decode_uper; +per_type_encoder_f RRCConnReestabIndicator_encode_uper; +per_type_decoder_f RRCConnReestabIndicator_decode_aper; +per_type_encoder_f RRCConnReestabIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCConnReestabIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.c b/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.c new file mode 100644 index 0000000..d0bd64b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCConnSetupIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRCConnSetupIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRCConnSetupIndicator_value2enum_1[] = { + { 0, 12, "rrcConnSetup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCConnSetupIndicator_enum2value_1[] = { + 0 /* rrcConnSetup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCConnSetupIndicator_specs_1 = { + asn_MAP_RRCConnSetupIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCConnSetupIndicator_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_RRCConnSetupIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCConnSetupIndicator = { + "RRCConnSetupIndicator", + "RRCConnSetupIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_RRCConnSetupIndicator_tags_1, + sizeof(asn_DEF_RRCConnSetupIndicator_tags_1) + /sizeof(asn_DEF_RRCConnSetupIndicator_tags_1[0]), /* 1 */ + asn_DEF_RRCConnSetupIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCConnSetupIndicator_tags_1) + /sizeof(asn_DEF_RRCConnSetupIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRCConnSetupIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCConnSetupIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.h b/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.h new file mode 100644 index 0000000..b088418 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCConnSetupIndicator.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCConnSetupIndicator_H_ +#define _RRCConnSetupIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCConnSetupIndicator { + RRCConnSetupIndicator_rrcConnSetup = 0 + /* + * Enumeration is extensible + */ +} e_RRCConnSetupIndicator; + +/* RRCConnSetupIndicator */ +typedef long RRCConnSetupIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCConnSetupIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCConnSetupIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_RRCConnSetupIndicator_specs_1; +asn_struct_free_f RRCConnSetupIndicator_free; +asn_struct_print_f RRCConnSetupIndicator_print; +asn_constr_check_f RRCConnSetupIndicator_constraint; +ber_type_decoder_f RRCConnSetupIndicator_decode_ber; +der_type_encoder_f RRCConnSetupIndicator_encode_der; +xer_type_decoder_f RRCConnSetupIndicator_decode_xer; +xer_type_encoder_f RRCConnSetupIndicator_encode_xer; +per_type_decoder_f RRCConnSetupIndicator_decode_uper; +per_type_encoder_f RRCConnSetupIndicator_encode_uper; +per_type_decoder_f RRCConnSetupIndicator_decode_aper; +per_type_encoder_f RRCConnSetupIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCConnSetupIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRCContainer.c b/E2Manager/asn1codec/e2ap_engine/RRCContainer.c new file mode 100644 index 0000000..e46102a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RRCContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCContainer = { + "RRCContainer", + "RRCContainer", + &asn_OP_OCTET_STRING, + asn_DEF_RRCContainer_tags_1, + sizeof(asn_DEF_RRCContainer_tags_1) + /sizeof(asn_DEF_RRCContainer_tags_1[0]), /* 1 */ + asn_DEF_RRCContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCContainer_tags_1) + /sizeof(asn_DEF_RRCContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRCContainer.h b/E2Manager/asn1codec/e2ap_engine/RRCContainer.h new file mode 100644 index 0000000..872e9ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCContainer_H_ +#define _RRCContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRCContainer */ +typedef OCTET_STRING_t RRCContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRCContainer; +asn_struct_free_f RRCContainer_free; +asn_struct_print_f RRCContainer_print; +asn_constr_check_f RRCContainer_constraint; +ber_type_decoder_f RRCContainer_decode_ber; +der_type_encoder_f RRCContainer_encode_der; +xer_type_decoder_f RRCContainer_decode_xer; +xer_type_encoder_f RRCContainer_encode_xer; +per_type_decoder_f RRCContainer_decode_uper; +per_type_encoder_f RRCContainer_encode_uper; +per_type_decoder_f RRCContainer_decode_aper; +per_type_encoder_f RRCContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RRCTransfer.c b/E2Manager/asn1codec/e2ap_engine/RRCTransfer.c new file mode 100644 index 0000000..12c7468 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCTransfer.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCTransfer.h" + +static asn_TYPE_member_t asn_MBR_RRCTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RRCTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RRCTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_specs_1 = { + sizeof(struct RRCTransfer), + offsetof(struct RRCTransfer, _asn_ctx), + asn_MAP_RRCTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RRCTransfer = { + "RRCTransfer", + "RRCTransfer", + &asn_OP_SEQUENCE, + asn_DEF_RRCTransfer_tags_1, + sizeof(asn_DEF_RRCTransfer_tags_1) + /sizeof(asn_DEF_RRCTransfer_tags_1[0]), /* 1 */ + asn_DEF_RRCTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCTransfer_tags_1) + /sizeof(asn_DEF_RRCTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RRCTransfer_1, + 1, /* Elements count */ + &asn_SPC_RRCTransfer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RRCTransfer.h b/E2Manager/asn1codec/e2ap_engine/RRCTransfer.h new file mode 100644 index 0000000..8c4ce67 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RRCTransfer.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCTransfer_H_ +#define _RRCTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRCTransfer */ +typedef struct RRCTransfer { + ProtocolIE_Container_119P82_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RRCTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRCTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCTransfer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RSRPMRList.c b/E2Manager/asn1codec/e2ap_engine/RSRPMRList.c new file mode 100644 index 0000000..e79e484 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RSRPMRList.c @@ -0,0 +1,123 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RSRPMRList.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_RSRPMRList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 128 } /* (SIZE(1..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList__Member, rSRPMeasurementResult), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RSRPMeasurementResult, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rSRPMeasurementResult" + }, + { ATF_POINTER, 1, offsetof(struct RSRPMRList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P188, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rSRPMeasurementResult */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct RSRPMRList__Member), + offsetof(struct RSRPMRList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 2, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 2, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMRList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMRList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RSRPMRList_specs_1 = { + sizeof(struct RSRPMRList), + offsetof(struct RSRPMRList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMRList = { + "RSRPMRList", + "RSRPMRList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RSRPMRList_tags_1, + sizeof(asn_DEF_RSRPMRList_tags_1) + /sizeof(asn_DEF_RSRPMRList_tags_1[0]), /* 1 */ + asn_DEF_RSRPMRList_tags_1, /* Same as above */ + sizeof(asn_DEF_RSRPMRList_tags_1) + /sizeof(asn_DEF_RSRPMRList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RSRPMRList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RSRPMRList_1, + 1, /* Single element */ + &asn_SPC_RSRPMRList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RSRPMRList.h b/E2Manager/asn1codec/e2ap_engine/RSRPMRList.h new file mode 100644 index 0000000..db841d8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RSRPMRList.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RSRPMRList_H_ +#define _RSRPMRList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "RSRPMeasurementResult.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct RSRPMRList__Member { + RSRPMeasurementResult_t rSRPMeasurementResult; + 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; +} RSRPMRList__Member; + +/* RSRPMRList */ +typedef struct RSRPMRList { + A_SEQUENCE_OF(RSRPMRList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMRList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RSRPMRList; +extern asn_SET_OF_specifics_t asn_SPC_RSRPMRList_specs_1; +extern asn_TYPE_member_t asn_MBR_RSRPMRList_1[1]; +extern asn_per_constraints_t asn_PER_type_RSRPMRList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RSRPMRList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.c b/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.c new file mode 100644 index 0000000..e544aed --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.c @@ -0,0 +1,163 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RSRPMeasurementResult.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_rSRPMeasured_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 97)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_rSRPMeasured_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 0, 97 } /* (0..97,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_RSRPMeasurementResult_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 9 } /* (SIZE(1..9)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult__Member, rSRPCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rSRPCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult__Member, rSRPMeasured), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rSRPMeasured_constr_4, memb_rSRPMeasured_constraint_2 }, + 0, 0, /* No default value */ + "rSRPMeasured" + }, + { ATF_POINTER, 1, offsetof(struct RSRPMeasurementResult__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P187, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rSRPCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rSRPMeasured */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct RSRPMeasurementResult__Member), + offsetof(struct RSRPMeasurementResult__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMeasurementResult_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RSRPMeasurementResult_specs_1 = { + sizeof(struct RSRPMeasurementResult), + offsetof(struct RSRPMeasurementResult, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult = { + "RSRPMeasurementResult", + "RSRPMeasurementResult", + &asn_OP_SEQUENCE_OF, + asn_DEF_RSRPMeasurementResult_tags_1, + sizeof(asn_DEF_RSRPMeasurementResult_tags_1) + /sizeof(asn_DEF_RSRPMeasurementResult_tags_1[0]), /* 1 */ + asn_DEF_RSRPMeasurementResult_tags_1, /* Same as above */ + sizeof(asn_DEF_RSRPMeasurementResult_tags_1) + /sizeof(asn_DEF_RSRPMeasurementResult_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RSRPMeasurementResult_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RSRPMeasurementResult_1, + 1, /* Single element */ + &asn_SPC_RSRPMeasurementResult_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.h b/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.h new file mode 100644 index 0000000..986a72e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RSRPMeasurementResult.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RSRPMeasurementResult_H_ +#define _RSRPMeasurementResult_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct RSRPMeasurementResult__Member { + ECGI_t rSRPCellID; + long rSRPMeasured; + 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; +} RSRPMeasurementResult__Member; + +/* RSRPMeasurementResult */ +typedef struct RSRPMeasurementResult { + A_SEQUENCE_OF(RSRPMeasurementResult__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMeasurementResult_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult; +extern asn_SET_OF_specifics_t asn_SPC_RSRPMeasurementResult_specs_1; +extern asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_1[1]; +extern asn_per_constraints_t asn_PER_type_RSRPMeasurementResult_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RSRPMeasurementResult_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.c b/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.c new file mode 100644 index 0000000..d40466c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.c @@ -0,0 +1,132 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioResourceStatus.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_RadioResourceStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_non_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_non_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-non-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_non_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_non_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-non-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_Total_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Total_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Total-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_Total_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_Total_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Total-PRB-usage" + }, + { ATF_POINTER, 1, offsetof(struct RadioResourceStatus, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P183, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RadioResourceStatus_oms_1[] = { 6 }; +static const ber_tlv_tag_t asn_DEF_RadioResourceStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadioResourceStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-non-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-non-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dL-Total-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* uL-Total-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_specs_1 = { + sizeof(struct RadioResourceStatus), + offsetof(struct RadioResourceStatus, _asn_ctx), + asn_MAP_RadioResourceStatus_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_RadioResourceStatus_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus = { + "RadioResourceStatus", + "RadioResourceStatus", + &asn_OP_SEQUENCE, + asn_DEF_RadioResourceStatus_tags_1, + sizeof(asn_DEF_RadioResourceStatus_tags_1) + /sizeof(asn_DEF_RadioResourceStatus_tags_1[0]), /* 1 */ + asn_DEF_RadioResourceStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioResourceStatus_tags_1) + /sizeof(asn_DEF_RadioResourceStatus_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RadioResourceStatus_1, + 7, /* Elements count */ + &asn_SPC_RadioResourceStatus_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.h b/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.h new file mode 100644 index 0000000..df9f92e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioResourceStatus.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioResourceStatus_H_ +#define _RadioResourceStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DL-GBR-PRB-usage.h" +#include "UL-GBR-PRB-usage.h" +#include "DL-non-GBR-PRB-usage.h" +#include "UL-non-GBR-PRB-usage.h" +#include "DL-Total-PRB-usage.h" +#include "UL-Total-PRB-usage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RadioResourceStatus */ +typedef struct RadioResourceStatus { + DL_GBR_PRB_usage_t dL_GBR_PRB_usage; + UL_GBR_PRB_usage_t uL_GBR_PRB_usage; + DL_non_GBR_PRB_usage_t dL_non_GBR_PRB_usage; + UL_non_GBR_PRB_usage_t uL_non_GBR_PRB_usage; + DL_Total_PRB_usage_t dL_Total_PRB_usage; + UL_Total_PRB_usage_t uL_Total_PRB_usage; + 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; +} RadioResourceStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_RadioResourceStatus_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioResourceStatus_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.c b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.c new file mode 100644 index 0000000..67935a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioframeAllocationOffset.h" + +int +RadioframeAllocationOffset_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_RadioframeAllocationOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RadioframeAllocationOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationOffset = { + "RadioframeAllocationOffset", + "RadioframeAllocationOffset", + &asn_OP_NativeInteger, + asn_DEF_RadioframeAllocationOffset_tags_1, + sizeof(asn_DEF_RadioframeAllocationOffset_tags_1) + /sizeof(asn_DEF_RadioframeAllocationOffset_tags_1[0]), /* 1 */ + asn_DEF_RadioframeAllocationOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioframeAllocationOffset_tags_1) + /sizeof(asn_DEF_RadioframeAllocationOffset_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RadioframeAllocationOffset_constr_1, RadioframeAllocationOffset_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.h b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.h new file mode 100644 index 0000000..9c4cb38 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationOffset.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioframeAllocationOffset_H_ +#define _RadioframeAllocationOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RadioframeAllocationOffset */ +typedef long RadioframeAllocationOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RadioframeAllocationOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationOffset; +asn_struct_free_f RadioframeAllocationOffset_free; +asn_struct_print_f RadioframeAllocationOffset_print; +asn_constr_check_f RadioframeAllocationOffset_constraint; +ber_type_decoder_f RadioframeAllocationOffset_decode_ber; +der_type_encoder_f RadioframeAllocationOffset_encode_der; +xer_type_decoder_f RadioframeAllocationOffset_decode_xer; +xer_type_encoder_f RadioframeAllocationOffset_encode_xer; +per_type_decoder_f RadioframeAllocationOffset_decode_uper; +per_type_encoder_f RadioframeAllocationOffset_encode_uper; +per_type_decoder_f RadioframeAllocationOffset_decode_aper; +per_type_encoder_f RadioframeAllocationOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioframeAllocationOffset_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c new file mode 100644 index 0000000..b773ed2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioframeAllocationPeriod.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RadioframeAllocationPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RadioframeAllocationPeriod_value2enum_1[] = { + { 0, 2, "n1" }, + { 1, 2, "n2" }, + { 2, 2, "n4" }, + { 3, 2, "n8" }, + { 4, 3, "n16" }, + { 5, 3, "n32" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RadioframeAllocationPeriod_enum2value_1[] = { + 0, /* n1(0) */ + 4, /* n16(4) */ + 1, /* n2(1) */ + 5, /* n32(5) */ + 2, /* n4(2) */ + 3 /* n8(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RadioframeAllocationPeriod_specs_1 = { + asn_MAP_RadioframeAllocationPeriod_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RadioframeAllocationPeriod_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_RadioframeAllocationPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationPeriod = { + "RadioframeAllocationPeriod", + "RadioframeAllocationPeriod", + &asn_OP_NativeEnumerated, + asn_DEF_RadioframeAllocationPeriod_tags_1, + sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1) + /sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1[0]), /* 1 */ + asn_DEF_RadioframeAllocationPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1) + /sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RadioframeAllocationPeriod_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RadioframeAllocationPeriod_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h new file mode 100644 index 0000000..9d17513 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioframeAllocationPeriod_H_ +#define _RadioframeAllocationPeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RadioframeAllocationPeriod { + RadioframeAllocationPeriod_n1 = 0, + RadioframeAllocationPeriod_n2 = 1, + RadioframeAllocationPeriod_n4 = 2, + RadioframeAllocationPeriod_n8 = 3, + RadioframeAllocationPeriod_n16 = 4, + RadioframeAllocationPeriod_n32 = 5 + /* + * Enumeration is extensible + */ +} e_RadioframeAllocationPeriod; + +/* RadioframeAllocationPeriod */ +typedef long RadioframeAllocationPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RadioframeAllocationPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationPeriod; +extern const asn_INTEGER_specifics_t asn_SPC_RadioframeAllocationPeriod_specs_1; +asn_struct_free_f RadioframeAllocationPeriod_free; +asn_struct_print_f RadioframeAllocationPeriod_print; +asn_constr_check_f RadioframeAllocationPeriod_constraint; +ber_type_decoder_f RadioframeAllocationPeriod_decode_ber; +der_type_encoder_f RadioframeAllocationPeriod_encode_der; +xer_type_decoder_f RadioframeAllocationPeriod_decode_xer; +xer_type_encoder_f RadioframeAllocationPeriod_encode_xer; +per_type_decoder_f RadioframeAllocationPeriod_decode_uper; +per_type_encoder_f RadioframeAllocationPeriod_encode_uper; +per_type_decoder_f RadioframeAllocationPeriod_decode_aper; +per_type_encoder_f RadioframeAllocationPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioframeAllocationPeriod_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c new file mode 100644 index 0000000..e0f8f51 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusOfULPDCPSDUsExtended.h" + +int +ReceiveStatusOfULPDCPSDUsExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 16384)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended = { + "ReceiveStatusOfULPDCPSDUsExtended", + "ReceiveStatusOfULPDCPSDUsExtended", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1, + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1, ReceiveStatusOfULPDCPSDUsExtended_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h new file mode 100644 index 0000000..588240d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusOfULPDCPSDUsExtended_H_ +#define _ReceiveStatusOfULPDCPSDUsExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusOfULPDCPSDUsExtended */ +typedef BIT_STRING_t ReceiveStatusOfULPDCPSDUsExtended_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended; +asn_struct_free_f ReceiveStatusOfULPDCPSDUsExtended_free; +asn_struct_print_f ReceiveStatusOfULPDCPSDUsExtended_print; +asn_constr_check_f ReceiveStatusOfULPDCPSDUsExtended_constraint; +ber_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_ber; +der_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_der; +xer_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_xer; +xer_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_xer; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_uper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_uper; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_aper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusOfULPDCPSDUsExtended_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c new file mode 100644 index 0000000..dbe40d6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" + +int +ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 131072)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 17, -1, 1, 131072 } /* (SIZE(1..131072)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = { + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1, ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h new file mode 100644 index 0000000..450cfae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ +#define _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ +typedef BIT_STRING_t ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; +asn_struct_free_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_free; +asn_struct_print_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_print; +asn_constr_check_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint; +ber_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_ber; +der_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_der; +xer_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_xer; +xer_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_xer; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_uper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_uper; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_aper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c new file mode 100644 index 0000000..b3852ad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusofULPDCPSDUs.h" + +int +ReceiveStatusofULPDCPSDUs_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 4096)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4096, 4096 } /* (SIZE(4096..4096)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusofULPDCPSDUs = { + "ReceiveStatusofULPDCPSDUs", + "ReceiveStatusofULPDCPSDUs", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1, + sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1, ReceiveStatusofULPDCPSDUs_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h new file mode 100644 index 0000000..c09af17 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusofULPDCPSDUs_H_ +#define _ReceiveStatusofULPDCPSDUs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusofULPDCPSDUs */ +typedef BIT_STRING_t ReceiveStatusofULPDCPSDUs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusofULPDCPSDUs; +asn_struct_free_f ReceiveStatusofULPDCPSDUs_free; +asn_struct_print_f ReceiveStatusofULPDCPSDUs_print; +asn_constr_check_f ReceiveStatusofULPDCPSDUs_constraint; +ber_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_ber; +der_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_der; +xer_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_xer; +xer_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_xer; +per_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_uper; +per_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_uper; +per_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_aper; +per_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusofULPDCPSDUs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.c b/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.c new file mode 100644 index 0000000..71ae499 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Reestablishment-Indication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Reestablishment_Indication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Reestablishment_Indication_value2enum_1[] = { + { 0, 13, "reestablished" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Reestablishment_Indication_enum2value_1[] = { + 0 /* reestablished(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Reestablishment_Indication_specs_1 = { + asn_MAP_Reestablishment_Indication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Reestablishment_Indication_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_Reestablishment_Indication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Reestablishment_Indication = { + "Reestablishment-Indication", + "Reestablishment-Indication", + &asn_OP_NativeEnumerated, + asn_DEF_Reestablishment_Indication_tags_1, + sizeof(asn_DEF_Reestablishment_Indication_tags_1) + /sizeof(asn_DEF_Reestablishment_Indication_tags_1[0]), /* 1 */ + asn_DEF_Reestablishment_Indication_tags_1, /* Same as above */ + sizeof(asn_DEF_Reestablishment_Indication_tags_1) + /sizeof(asn_DEF_Reestablishment_Indication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Reestablishment_Indication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Reestablishment_Indication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.h b/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.h new file mode 100644 index 0000000..d768356 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Reestablishment-Indication.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Reestablishment_Indication_H_ +#define _Reestablishment_Indication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Reestablishment_Indication { + Reestablishment_Indication_reestablished = 0 + /* + * Enumeration is extensible + */ +} e_Reestablishment_Indication; + +/* Reestablishment-Indication */ +typedef long Reestablishment_Indication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Reestablishment_Indication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Reestablishment_Indication; +extern const asn_INTEGER_specifics_t asn_SPC_Reestablishment_Indication_specs_1; +asn_struct_free_f Reestablishment_Indication_free; +asn_struct_print_f Reestablishment_Indication_print; +asn_constr_check_f Reestablishment_Indication_constraint; +ber_type_decoder_f Reestablishment_Indication_decode_ber; +der_type_encoder_f Reestablishment_Indication_encode_der; +xer_type_decoder_f Reestablishment_Indication_decode_xer; +xer_type_encoder_f Reestablishment_Indication_encode_xer; +per_type_decoder_f Reestablishment_Indication_decode_uper; +per_type_encoder_f Reestablishment_Indication_encode_uper; +per_type_decoder_f Reestablishment_Indication_decode_aper; +per_type_encoder_f Reestablishment_Indication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Reestablishment_Indication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Registration-Request.c b/E2Manager/asn1codec/e2ap_engine/Registration-Request.c new file mode 100644 index 0000000..f65e1eb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Registration-Request.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Registration-Request.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Registration_Request_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Registration_Request_value2enum_1[] = { + { 0, 5, "start" }, + { 1, 4, "stop" }, + { 2, 12, "partial-stop" }, + { 3, 3, "add" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Registration_Request_enum2value_1[] = { + 3, /* add(3) */ + 2, /* partial-stop(2) */ + 0, /* start(0) */ + 1 /* stop(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Registration_Request_specs_1 = { + asn_MAP_Registration_Request_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Registration_Request_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* 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_Registration_Request_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Registration_Request = { + "Registration-Request", + "Registration-Request", + &asn_OP_NativeEnumerated, + asn_DEF_Registration_Request_tags_1, + sizeof(asn_DEF_Registration_Request_tags_1) + /sizeof(asn_DEF_Registration_Request_tags_1[0]), /* 1 */ + asn_DEF_Registration_Request_tags_1, /* Same as above */ + sizeof(asn_DEF_Registration_Request_tags_1) + /sizeof(asn_DEF_Registration_Request_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Registration_Request_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Registration_Request_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Registration-Request.h b/E2Manager/asn1codec/e2ap_engine/Registration-Request.h new file mode 100644 index 0000000..e0a2913 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Registration-Request.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Registration_Request_H_ +#define _Registration_Request_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Registration_Request { + Registration_Request_start = 0, + Registration_Request_stop = 1, + /* + * Enumeration is extensible + */ + Registration_Request_partial_stop = 2, + Registration_Request_add = 3 +} e_Registration_Request; + +/* Registration-Request */ +typedef long Registration_Request_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Registration_Request_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Registration_Request; +extern const asn_INTEGER_specifics_t asn_SPC_Registration_Request_specs_1; +asn_struct_free_f Registration_Request_free; +asn_struct_print_f Registration_Request_print; +asn_constr_check_f Registration_Request_constraint; +ber_type_decoder_f Registration_Request_decode_ber; +der_type_encoder_f Registration_Request_encode_der; +xer_type_decoder_f Registration_Request_decode_xer; +xer_type_encoder_f Registration_Request_encode_xer; +per_type_decoder_f Registration_Request_decode_uper; +per_type_encoder_f Registration_Request_encode_uper; +per_type_decoder_f Registration_Request_decode_aper; +per_type_encoder_f Registration_Request_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Registration_Request_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c b/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c new file mode 100644 index 0000000..a30cdac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c @@ -0,0 +1,268 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RelativeNarrowbandTxPower.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_rNTP_PerPRB_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 110)) { + /* 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_p_B_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_pDCCH_InterferenceImpact_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4)) { + /* 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_type_numberOfCellSpecificAntennaPorts_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_rNTP_PerPRB_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 6, 110 } /* (SIZE(6..110,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_p_B_constr_9 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pDCCH_InterferenceImpact_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_4[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_4[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_4 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_4, /* 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_numberOfCellSpecificAntennaPorts_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_4 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_4, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_4, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, rNTP_PerPRB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_rNTP_PerPRB_constr_2, memb_rNTP_PerPRB_constraint_1 }, + 0, 0, /* No default value */ + "rNTP-PerPRB" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, rNTP_Threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RNTP_Threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rNTP-Threshold" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, p_B), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_p_B_constr_9, memb_p_B_constraint_1 }, + 0, 0, /* No default value */ + "p-B" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, pDCCH_InterferenceImpact), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pDCCH_InterferenceImpact_constr_10, memb_pDCCH_InterferenceImpact_constraint_1 }, + 0, 0, /* No default value */ + "pDCCH-InterferenceImpact" + }, + { ATF_POINTER, 1, offsetof(struct RelativeNarrowbandTxPower, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P184, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RelativeNarrowbandTxPower_oms_1[] = { 5 }; +static const ber_tlv_tag_t asn_DEF_RelativeNarrowbandTxPower_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RelativeNarrowbandTxPower_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rNTP-PerPRB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rNTP-Threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* p-B */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pDCCH-InterferenceImpact */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_specs_1 = { + sizeof(struct RelativeNarrowbandTxPower), + offsetof(struct RelativeNarrowbandTxPower, _asn_ctx), + asn_MAP_RelativeNarrowbandTxPower_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_RelativeNarrowbandTxPower_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower = { + "RelativeNarrowbandTxPower", + "RelativeNarrowbandTxPower", + &asn_OP_SEQUENCE, + asn_DEF_RelativeNarrowbandTxPower_tags_1, + sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1[0]), /* 1 */ + asn_DEF_RelativeNarrowbandTxPower_tags_1, /* Same as above */ + sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RelativeNarrowbandTxPower_1, + 6, /* Elements count */ + &asn_SPC_RelativeNarrowbandTxPower_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h b/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h new file mode 100644 index 0000000..dfa8eec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h @@ -0,0 +1,85 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RelativeNarrowbandTxPower_H_ +#define _RelativeNarrowbandTxPower_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "RNTP-Threshold.h" +#include "NativeEnumerated.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts { + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_one = 0, + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_two = 1, + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RelativeNarrowbandTxPower */ +typedef struct RelativeNarrowbandTxPower { + BIT_STRING_t rNTP_PerPRB; + RNTP_Threshold_t rNTP_Threshold; + long numberOfCellSpecificAntennaPorts; + long p_B; + long pDCCH_InterferenceImpact; + 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; +} RelativeNarrowbandTxPower_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower; +extern asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_specs_1; +extern asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RelativeNarrowbandTxPower_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.c b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.c new file mode 100644 index 0000000..615589e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReplacingCellsList-Item.h" + +asn_TYPE_member_t asn_MBR_ReplacingCellsList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReplacingCellsList_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReplacingCellsList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReplacingCellsList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eCGI */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReplacingCellsList_Item_specs_1 = { + sizeof(struct ReplacingCellsList_Item), + offsetof(struct ReplacingCellsList_Item, _asn_ctx), + asn_MAP_ReplacingCellsList_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList_Item = { + "ReplacingCellsList-Item", + "ReplacingCellsList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ReplacingCellsList_Item_tags_1, + sizeof(asn_DEF_ReplacingCellsList_Item_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_Item_tags_1[0]), /* 1 */ + asn_DEF_ReplacingCellsList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ReplacingCellsList_Item_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReplacingCellsList_Item_1, + 1, /* Elements count */ + &asn_SPC_ReplacingCellsList_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.h b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.h new file mode 100644 index 0000000..d951a28 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList-Item.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReplacingCellsList_Item_H_ +#define _ReplacingCellsList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReplacingCellsList-Item */ +typedef struct ReplacingCellsList_Item { + ECGI_t eCGI; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReplacingCellsList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ReplacingCellsList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ReplacingCellsList_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReplacingCellsList_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.c b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.c new file mode 100644 index 0000000..e395a6b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReplacingCellsList.h" + +#include "ReplacingCellsList-Item.h" +asn_per_constraints_t asn_PER_type_ReplacingCellsList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ReplacingCellsList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReplacingCellsList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReplacingCellsList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ReplacingCellsList_specs_1 = { + sizeof(struct ReplacingCellsList), + offsetof(struct ReplacingCellsList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList = { + "ReplacingCellsList", + "ReplacingCellsList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ReplacingCellsList_tags_1, + sizeof(asn_DEF_ReplacingCellsList_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_tags_1[0]), /* 1 */ + asn_DEF_ReplacingCellsList_tags_1, /* Same as above */ + sizeof(asn_DEF_ReplacingCellsList_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReplacingCellsList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ReplacingCellsList_1, + 1, /* Single element */ + &asn_SPC_ReplacingCellsList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.h b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.h new file mode 100644 index 0000000..a2a119c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReplacingCellsList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReplacingCellsList_H_ +#define _ReplacingCellsList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReplacingCellsList_Item; + +/* ReplacingCellsList */ +typedef struct ReplacingCellsList { + A_SEQUENCE_OF(struct ReplacingCellsList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReplacingCellsList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList; +extern asn_SET_OF_specifics_t asn_SPC_ReplacingCellsList_specs_1; +extern asn_TYPE_member_t asn_MBR_ReplacingCellsList_1[1]; +extern asn_per_constraints_t asn_PER_type_ReplacingCellsList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReplacingCellsList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.c b/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.c new file mode 100644 index 0000000..26469d7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.c @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportAmountMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportAmountMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_ReportAmountMDT_enum2value_1[] = { + 0, /* r1(0) */ + 4, /* r16(4) */ + 1, /* r2(1) */ + 5, /* r32(5) */ + 2, /* r4(2) */ + 6, /* r64(6) */ + 3, /* r8(3) */ + 7 /* rinfinity(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportAmountMDT_specs_1 = { + asn_MAP_ReportAmountMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_ReportAmountMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportAmountMDT = { + "ReportAmountMDT", + "ReportAmountMDT", + &asn_OP_NativeEnumerated, + asn_DEF_ReportAmountMDT_tags_1, + sizeof(asn_DEF_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_ReportAmountMDT_tags_1[0]), /* 1 */ + asn_DEF_ReportAmountMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_ReportAmountMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportAmountMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportAmountMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.h b/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.h new file mode 100644 index 0000000..4f653a2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportAmountMDT.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportAmountMDT_H_ +#define _ReportAmountMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportAmountMDT { + ReportAmountMDT_r1 = 0, + ReportAmountMDT_r2 = 1, + ReportAmountMDT_r4 = 2, + ReportAmountMDT_r8 = 3, + ReportAmountMDT_r16 = 4, + ReportAmountMDT_r32 = 5, + ReportAmountMDT_r64 = 6, + ReportAmountMDT_rinfinity = 7 +} e_ReportAmountMDT; + +/* ReportAmountMDT */ +typedef long ReportAmountMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportAmountMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportAmountMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportAmountMDT_specs_1; +asn_struct_free_f ReportAmountMDT_free; +asn_struct_print_f ReportAmountMDT_print; +asn_constr_check_f ReportAmountMDT_constraint; +ber_type_decoder_f ReportAmountMDT_decode_ber; +der_type_encoder_f ReportAmountMDT_encode_der; +xer_type_decoder_f ReportAmountMDT_decode_xer; +xer_type_encoder_f ReportAmountMDT_encode_xer; +per_type_decoder_f ReportAmountMDT_decode_uper; +per_type_encoder_f ReportAmountMDT_encode_uper; +per_type_decoder_f ReportAmountMDT_decode_aper; +per_type_encoder_f ReportAmountMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportAmountMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportArea.c b/E2Manager/asn1codec/e2ap_engine/ReportArea.c new file mode 100644 index 0000000..d0e28d5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportArea.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportArea.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportArea_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportArea_value2enum_1[] = { + { 0, 4, "ecgi" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportArea_enum2value_1[] = { + 0 /* ecgi(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportArea_specs_1 = { + asn_MAP_ReportArea_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_ReportArea_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportArea = { + "ReportArea", + "ReportArea", + &asn_OP_NativeEnumerated, + asn_DEF_ReportArea_tags_1, + sizeof(asn_DEF_ReportArea_tags_1) + /sizeof(asn_DEF_ReportArea_tags_1[0]), /* 1 */ + asn_DEF_ReportArea_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportArea_tags_1) + /sizeof(asn_DEF_ReportArea_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportArea_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportArea_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportArea.h b/E2Manager/asn1codec/e2ap_engine/ReportArea.h new file mode 100644 index 0000000..9c69d72 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportArea.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportArea_H_ +#define _ReportArea_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportArea { + ReportArea_ecgi = 0 + /* + * Enumeration is extensible + */ +} e_ReportArea; + +/* ReportArea */ +typedef long ReportArea_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportArea_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportArea; +extern const asn_INTEGER_specifics_t asn_SPC_ReportArea_specs_1; +asn_struct_free_f ReportArea_free; +asn_struct_print_f ReportArea_print; +asn_constr_check_f ReportArea_constraint; +ber_type_decoder_f ReportArea_decode_ber; +der_type_encoder_f ReportArea_encode_der; +xer_type_decoder_f ReportArea_decode_xer; +xer_type_encoder_f ReportArea_encode_xer; +per_type_decoder_f ReportArea_decode_uper; +per_type_encoder_f ReportArea_encode_uper; +per_type_decoder_f ReportArea_decode_aper; +per_type_encoder_f ReportArea_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportArea_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.c b/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.c new file mode 100644 index 0000000..f0f6e9b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportCharacteristics.h" + +int +ReportCharacteristics_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportCharacteristics_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32, 32 } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReportCharacteristics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportCharacteristics = { + "ReportCharacteristics", + "ReportCharacteristics", + &asn_OP_BIT_STRING, + asn_DEF_ReportCharacteristics_tags_1, + sizeof(asn_DEF_ReportCharacteristics_tags_1) + /sizeof(asn_DEF_ReportCharacteristics_tags_1[0]), /* 1 */ + asn_DEF_ReportCharacteristics_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportCharacteristics_tags_1) + /sizeof(asn_DEF_ReportCharacteristics_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportCharacteristics_constr_1, ReportCharacteristics_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.h b/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.h new file mode 100644 index 0000000..af64447 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportCharacteristics.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportCharacteristics_H_ +#define _ReportCharacteristics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReportCharacteristics */ +typedef BIT_STRING_t ReportCharacteristics_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportCharacteristics_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportCharacteristics; +asn_struct_free_f ReportCharacteristics_free; +asn_struct_print_f ReportCharacteristics_print; +asn_constr_check_f ReportCharacteristics_constraint; +ber_type_decoder_f ReportCharacteristics_decode_ber; +der_type_encoder_f ReportCharacteristics_encode_der; +xer_type_decoder_f ReportCharacteristics_decode_xer; +xer_type_encoder_f ReportCharacteristics_encode_xer; +per_type_decoder_f ReportCharacteristics_decode_uper; +per_type_encoder_f ReportCharacteristics_encode_uper; +per_type_decoder_f ReportCharacteristics_decode_aper; +per_type_encoder_f ReportCharacteristics_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportCharacteristics_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.c b/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.c new file mode 100644 index 0000000..a104be0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.c @@ -0,0 +1,94 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportIntervalMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportIntervalMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 12 } /* (0..12) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_ReportIntervalMDT_enum2value_1[] = { + 8, /* min1(8) */ + 10, /* min12(10) */ + 11, /* min30(11) */ + 9, /* min6(9) */ + 12, /* min60(12) */ + 4, /* ms1024(4) */ + 7, /* ms10240(7) */ + 0, /* ms120(0) */ + 5, /* ms2048(5) */ + 1, /* ms240(1) */ + 2, /* ms480(2) */ + 6, /* ms5120(6) */ + 3 /* ms640(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportIntervalMDT_specs_1 = { + asn_MAP_ReportIntervalMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_ReportIntervalMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportIntervalMDT = { + "ReportIntervalMDT", + "ReportIntervalMDT", + &asn_OP_NativeEnumerated, + asn_DEF_ReportIntervalMDT_tags_1, + sizeof(asn_DEF_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_ReportIntervalMDT_tags_1[0]), /* 1 */ + asn_DEF_ReportIntervalMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_ReportIntervalMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportIntervalMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportIntervalMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.h b/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.h new file mode 100644 index 0000000..be8cbcf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportIntervalMDT.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportIntervalMDT_H_ +#define _ReportIntervalMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportIntervalMDT { + ReportIntervalMDT_ms120 = 0, + ReportIntervalMDT_ms240 = 1, + ReportIntervalMDT_ms480 = 2, + ReportIntervalMDT_ms640 = 3, + ReportIntervalMDT_ms1024 = 4, + ReportIntervalMDT_ms2048 = 5, + ReportIntervalMDT_ms5120 = 6, + ReportIntervalMDT_ms10240 = 7, + ReportIntervalMDT_min1 = 8, + ReportIntervalMDT_min6 = 9, + ReportIntervalMDT_min12 = 10, + ReportIntervalMDT_min30 = 11, + ReportIntervalMDT_min60 = 12 +} e_ReportIntervalMDT; + +/* ReportIntervalMDT */ +typedef long ReportIntervalMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportIntervalMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportIntervalMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportIntervalMDT_specs_1; +asn_struct_free_f ReportIntervalMDT_free; +asn_struct_print_f ReportIntervalMDT_print; +asn_constr_check_f ReportIntervalMDT_constraint; +ber_type_decoder_f ReportIntervalMDT_decode_ber; +der_type_encoder_f ReportIntervalMDT_encode_der; +xer_type_decoder_f ReportIntervalMDT_decode_xer; +xer_type_encoder_f ReportIntervalMDT_encode_xer; +per_type_decoder_f ReportIntervalMDT_decode_uper; +per_type_encoder_f ReportIntervalMDT_encode_uper; +per_type_decoder_f ReportIntervalMDT_decode_aper; +per_type_encoder_f ReportIntervalMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportIntervalMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.c b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.c new file mode 100644 index 0000000..ddba5f5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicity.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_ReportingPeriodicity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicity_value2enum_1[] = { + { 0, 15, "one-thousand-ms" }, + { 1, 15, "two-thousand-ms" }, + { 2, 16, "five-thousand-ms" }, + { 3, 15, "ten-thousand-ms" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicity_enum2value_1[] = { + 2, /* five-thousand-ms(2) */ + 0, /* one-thousand-ms(0) */ + 3, /* ten-thousand-ms(3) */ + 1 /* two-thousand-ms(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicity_specs_1 = { + asn_MAP_ReportingPeriodicity_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicity_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_ReportingPeriodicity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicity = { + "ReportingPeriodicity", + "ReportingPeriodicity", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicity_tags_1, + sizeof(asn_DEF_ReportingPeriodicity_tags_1) + /sizeof(asn_DEF_ReportingPeriodicity_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicity_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicity_tags_1) + /sizeof(asn_DEF_ReportingPeriodicity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicity_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicity_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.h b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.h new file mode 100644 index 0000000..94c49b1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicity.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicity_H_ +#define _ReportingPeriodicity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicity { + ReportingPeriodicity_one_thousand_ms = 0, + ReportingPeriodicity_two_thousand_ms = 1, + ReportingPeriodicity_five_thousand_ms = 2, + ReportingPeriodicity_ten_thousand_ms = 3 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicity; + +/* ReportingPeriodicity */ +typedef long ReportingPeriodicity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicity; +asn_struct_free_f ReportingPeriodicity_free; +asn_struct_print_f ReportingPeriodicity_print; +asn_constr_check_f ReportingPeriodicity_constraint; +ber_type_decoder_f ReportingPeriodicity_decode_ber; +der_type_encoder_f ReportingPeriodicity_encode_der; +xer_type_decoder_f ReportingPeriodicity_decode_xer; +xer_type_encoder_f ReportingPeriodicity_encode_xer; +per_type_decoder_f ReportingPeriodicity_decode_uper; +per_type_encoder_f ReportingPeriodicity_encode_uper; +per_type_decoder_f ReportingPeriodicity_decode_aper; +per_type_encoder_f ReportingPeriodicity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicity_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c new file mode 100644 index 0000000..1d5b214 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicityCSIR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportingPeriodicityCSIR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicityCSIR_value2enum_1[] = { + { 0, 3, "ms5" }, + { 1, 4, "ms10" }, + { 2, 4, "ms20" }, + { 3, 4, "ms40" }, + { 4, 4, "ms80" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicityCSIR_enum2value_1[] = { + 1, /* ms10(1) */ + 2, /* ms20(2) */ + 3, /* ms40(3) */ + 0, /* ms5(0) */ + 4 /* ms80(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityCSIR_specs_1 = { + asn_MAP_ReportingPeriodicityCSIR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicityCSIR_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_ReportingPeriodicityCSIR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityCSIR = { + "ReportingPeriodicityCSIR", + "ReportingPeriodicityCSIR", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicityCSIR_tags_1, + sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicityCSIR_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicityCSIR_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicityCSIR_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h new file mode 100644 index 0000000..5a0e6a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicityCSIR_H_ +#define _ReportingPeriodicityCSIR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicityCSIR { + ReportingPeriodicityCSIR_ms5 = 0, + ReportingPeriodicityCSIR_ms10 = 1, + ReportingPeriodicityCSIR_ms20 = 2, + ReportingPeriodicityCSIR_ms40 = 3, + ReportingPeriodicityCSIR_ms80 = 4 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicityCSIR; + +/* ReportingPeriodicityCSIR */ +typedef long ReportingPeriodicityCSIR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportingPeriodicityCSIR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityCSIR; +extern const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityCSIR_specs_1; +asn_struct_free_f ReportingPeriodicityCSIR_free; +asn_struct_print_f ReportingPeriodicityCSIR_print; +asn_constr_check_f ReportingPeriodicityCSIR_constraint; +ber_type_decoder_f ReportingPeriodicityCSIR_decode_ber; +der_type_encoder_f ReportingPeriodicityCSIR_encode_der; +xer_type_decoder_f ReportingPeriodicityCSIR_decode_xer; +xer_type_encoder_f ReportingPeriodicityCSIR_encode_xer; +per_type_decoder_f ReportingPeriodicityCSIR_decode_uper; +per_type_encoder_f ReportingPeriodicityCSIR_encode_uper; +per_type_decoder_f ReportingPeriodicityCSIR_decode_aper; +per_type_encoder_f ReportingPeriodicityCSIR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicityCSIR_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c new file mode 100644 index 0000000..17783d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicityRSRPMR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportingPeriodicityRSRPMR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicityRSRPMR_value2enum_1[] = { + { 0, 17, "one-hundred-20-ms" }, + { 1, 17, "two-hundred-40-ms" }, + { 2, 18, "four-hundred-80-ms" }, + { 3, 17, "six-hundred-40-ms" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicityRSRPMR_enum2value_1[] = { + 2, /* four-hundred-80-ms(2) */ + 0, /* one-hundred-20-ms(0) */ + 3, /* six-hundred-40-ms(3) */ + 1 /* two-hundred-40-ms(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityRSRPMR_specs_1 = { + asn_MAP_ReportingPeriodicityRSRPMR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicityRSRPMR_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_ReportingPeriodicityRSRPMR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityRSRPMR = { + "ReportingPeriodicityRSRPMR", + "ReportingPeriodicityRSRPMR", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicityRSRPMR_tags_1, + sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicityRSRPMR_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicityRSRPMR_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicityRSRPMR_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h new file mode 100644 index 0000000..52ac0e5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicityRSRPMR_H_ +#define _ReportingPeriodicityRSRPMR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicityRSRPMR { + ReportingPeriodicityRSRPMR_one_hundred_20_ms = 0, + ReportingPeriodicityRSRPMR_two_hundred_40_ms = 1, + ReportingPeriodicityRSRPMR_four_hundred_80_ms = 2, + ReportingPeriodicityRSRPMR_six_hundred_40_ms = 3 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicityRSRPMR; + +/* ReportingPeriodicityRSRPMR */ +typedef long ReportingPeriodicityRSRPMR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportingPeriodicityRSRPMR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityRSRPMR; +extern const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityRSRPMR_specs_1; +asn_struct_free_f ReportingPeriodicityRSRPMR_free; +asn_struct_print_f ReportingPeriodicityRSRPMR_print; +asn_constr_check_f ReportingPeriodicityRSRPMR_constraint; +ber_type_decoder_f ReportingPeriodicityRSRPMR_decode_ber; +der_type_encoder_f ReportingPeriodicityRSRPMR_encode_der; +xer_type_decoder_f ReportingPeriodicityRSRPMR_decode_xer; +xer_type_encoder_f ReportingPeriodicityRSRPMR_encode_xer; +per_type_decoder_f ReportingPeriodicityRSRPMR_decode_uper; +per_type_encoder_f ReportingPeriodicityRSRPMR_encode_uper; +per_type_decoder_f ReportingPeriodicityRSRPMR_decode_aper; +per_type_encoder_f ReportingPeriodicityRSRPMR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicityRSRPMR_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.c b/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.c new file mode 100644 index 0000000..0cb336b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.c @@ -0,0 +1,168 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReservedSubframePattern.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_reservedSubframePattern_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 10 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_mBSFNControlRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_reservedSubframePattern_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 10, 160 } /* (SIZE(10..160)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_mBSFNControlRegionLength_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ReservedSubframePattern_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, subframeType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubframeType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeType" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, reservedSubframePattern), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_reservedSubframePattern_constr_3, memb_reservedSubframePattern_constraint_1 }, + 0, 0, /* No default value */ + "reservedSubframePattern" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, mBSFNControlRegionLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_mBSFNControlRegionLength_constr_4, memb_mBSFNControlRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "mBSFNControlRegionLength" + }, + { ATF_POINTER, 1, offsetof(struct ReservedSubframePattern, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P185, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ReservedSubframePattern_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ReservedSubframePattern_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReservedSubframePattern_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subframeType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reservedSubframePattern */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mBSFNControlRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_specs_1 = { + sizeof(struct ReservedSubframePattern), + offsetof(struct ReservedSubframePattern, _asn_ctx), + asn_MAP_ReservedSubframePattern_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ReservedSubframePattern_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern = { + "ReservedSubframePattern", + "ReservedSubframePattern", + &asn_OP_SEQUENCE, + asn_DEF_ReservedSubframePattern_tags_1, + sizeof(asn_DEF_ReservedSubframePattern_tags_1) + /sizeof(asn_DEF_ReservedSubframePattern_tags_1[0]), /* 1 */ + asn_DEF_ReservedSubframePattern_tags_1, /* Same as above */ + sizeof(asn_DEF_ReservedSubframePattern_tags_1) + /sizeof(asn_DEF_ReservedSubframePattern_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReservedSubframePattern_1, + 4, /* Elements count */ + &asn_SPC_ReservedSubframePattern_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.h b/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.h new file mode 100644 index 0000000..7776913 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ReservedSubframePattern.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReservedSubframePattern_H_ +#define _ReservedSubframePattern_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubframeType.h" +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ReservedSubframePattern */ +typedef struct ReservedSubframePattern { + SubframeType_t subframeType; + BIT_STRING_t reservedSubframePattern; + long mBSFNControlRegionLength; + 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; +} ReservedSubframePattern_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern; +extern asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_specs_1; +extern asn_TYPE_member_t asn_MBR_ReservedSubframePattern_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReservedSubframePattern_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResetRequest.c b/E2Manager/asn1codec/e2ap_engine/ResetRequest.c new file mode 100644 index 0000000..3be7ae3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResetRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetRequest.h" + +asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { + sizeof(struct ResetRequest), + offsetof(struct ResetRequest, _asn_ctx), + asn_MAP_ResetRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest = { + "ResetRequest", + "ResetRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_tags_1, + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + asn_DEF_ResetRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_1, + 1, /* Elements count */ + &asn_SPC_ResetRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResetRequest.h b/E2Manager/asn1codec/e2ap_engine/ResetRequest.h new file mode 100644 index 0000000..80ecda9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResetRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetRequest_H_ +#define _ResetRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetRequest */ +typedef struct ResetRequest { + ProtocolIE_Container_119P22_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResetResponse.c b/E2Manager/asn1codec/e2ap_engine/ResetResponse.c new file mode 100644 index 0000000..da816e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResetResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetResponse.h" + +asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { + sizeof(struct ResetResponse), + offsetof(struct ResetResponse, _asn_ctx), + asn_MAP_ResetResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse = { + "ResetResponse", + "ResetResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_tags_1, + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + asn_DEF_ResetResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_1, + 1, /* Elements count */ + &asn_SPC_ResetResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResetResponse.h b/E2Manager/asn1codec/e2ap_engine/ResetResponse.h new file mode 100644 index 0000000..fb96635 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResetResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetResponse_H_ +#define _ResetResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetResponse */ +typedef struct ResetResponse { + ProtocolIE_Container_119P23_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.c b/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.c new file mode 100644 index 0000000..7267f2e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusFailure.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_specs_1 = { + sizeof(struct ResourceStatusFailure), + offsetof(struct ResourceStatusFailure, _asn_ctx), + asn_MAP_ResourceStatusFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure = { + "ResourceStatusFailure", + "ResourceStatusFailure", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusFailure_tags_1, + sizeof(asn_DEF_ResourceStatusFailure_tags_1) + /sizeof(asn_DEF_ResourceStatusFailure_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusFailure_tags_1) + /sizeof(asn_DEF_ResourceStatusFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusFailure_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.h b/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.h new file mode 100644 index 0000000..4f84618 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusFailure_H_ +#define _ResourceStatusFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusFailure */ +typedef struct ResourceStatusFailure { + ProtocolIE_Container_119P33_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.c b/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.c new file mode 100644 index 0000000..d262ab8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusRequest.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_specs_1 = { + sizeof(struct ResourceStatusRequest), + offsetof(struct ResourceStatusRequest, _asn_ctx), + asn_MAP_ResourceStatusRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest = { + "ResourceStatusRequest", + "ResourceStatusRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusRequest_tags_1, + sizeof(asn_DEF_ResourceStatusRequest_tags_1) + /sizeof(asn_DEF_ResourceStatusRequest_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusRequest_tags_1) + /sizeof(asn_DEF_ResourceStatusRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusRequest_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.h b/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.h new file mode 100644 index 0000000..bc3d897 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusRequest_H_ +#define _ResourceStatusRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusRequest */ +typedef struct ResourceStatusRequest { + ProtocolIE_Container_119P31_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.c b/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.c new file mode 100644 index 0000000..e37183c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusResponse.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_specs_1 = { + sizeof(struct ResourceStatusResponse), + offsetof(struct ResourceStatusResponse, _asn_ctx), + asn_MAP_ResourceStatusResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse = { + "ResourceStatusResponse", + "ResourceStatusResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusResponse_tags_1, + sizeof(asn_DEF_ResourceStatusResponse_tags_1) + /sizeof(asn_DEF_ResourceStatusResponse_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusResponse_tags_1) + /sizeof(asn_DEF_ResourceStatusResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusResponse_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.h b/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.h new file mode 100644 index 0000000..d647038 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusResponse_H_ +#define _ResourceStatusResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusResponse */ +typedef struct ResourceStatusResponse { + ProtocolIE_Container_119P32_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.c b/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.c new file mode 100644 index 0000000..ac0bac8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusUpdate.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_specs_1 = { + sizeof(struct ResourceStatusUpdate), + offsetof(struct ResourceStatusUpdate, _asn_ctx), + asn_MAP_ResourceStatusUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate = { + "ResourceStatusUpdate", + "ResourceStatusUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusUpdate_tags_1, + sizeof(asn_DEF_ResourceStatusUpdate_tags_1) + /sizeof(asn_DEF_ResourceStatusUpdate_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusUpdate_tags_1) + /sizeof(asn_DEF_ResourceStatusUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusUpdate_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.h b/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.h new file mode 100644 index 0000000..44705a6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceStatusUpdate.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusUpdate_H_ +#define _ResourceStatusUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusUpdate */ +typedef struct ResourceStatusUpdate { + ProtocolIE_Container_119P34_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceType.c b/E2Manager/asn1codec/e2ap_engine/ResourceType.c new file mode 100644 index 0000000..d528edc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceType.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ResourceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ResourceType_value2enum_1[] = { + { 0, 14, "downlinknonCRS" }, + { 1, 3, "cRS" }, + { 2, 6, "uplink" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ResourceType_enum2value_1[] = { + 1, /* cRS(1) */ + 0, /* downlinknonCRS(0) */ + 2 /* uplink(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ResourceType_specs_1 = { + asn_MAP_ResourceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ResourceType_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_ResourceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ResourceType = { + "ResourceType", + "ResourceType", + &asn_OP_NativeEnumerated, + asn_DEF_ResourceType_tags_1, + sizeof(asn_DEF_ResourceType_tags_1) + /sizeof(asn_DEF_ResourceType_tags_1[0]), /* 1 */ + asn_DEF_ResourceType_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceType_tags_1) + /sizeof(asn_DEF_ResourceType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ResourceType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ResourceType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResourceType.h b/E2Manager/asn1codec/e2ap_engine/ResourceType.h new file mode 100644 index 0000000..e6ea074 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResourceType.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceType_H_ +#define _ResourceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResourceType { + ResourceType_downlinknonCRS = 0, + ResourceType_cRS = 1, + ResourceType_uplink = 2 + /* + * Enumeration is extensible + */ +} e_ResourceType; + +/* ResourceType */ +typedef long ResourceType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ResourceType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ResourceType; +extern const asn_INTEGER_specifics_t asn_SPC_ResourceType_specs_1; +asn_struct_free_f ResourceType_free; +asn_struct_print_f ResourceType_print; +asn_constr_check_f ResourceType_constraint; +ber_type_decoder_f ResourceType_decode_ber; +der_type_encoder_f ResourceType_encode_der; +xer_type_decoder_f ResourceType_decode_xer; +xer_type_encoder_f ResourceType_encode_xer; +per_type_decoder_f ResourceType_decode_uper; +per_type_encoder_f ResourceType_encode_uper; +per_type_decoder_f ResourceType_decode_aper; +per_type_encoder_f ResourceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c new file mode 100644 index 0000000..6828e36 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcConfigUpdate.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcConfigUpdate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcConfigUpdate_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcConfigUpdate, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P95, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcConfigUpdate, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P96, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcConfigUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcConfigUpdate_specs_1 = { + sizeof(struct RespondingNodeType_EndcConfigUpdate), + offsetof(struct RespondingNodeType_EndcConfigUpdate, _asn_ctx), + offsetof(struct RespondingNodeType_EndcConfigUpdate, present), + sizeof(((struct RespondingNodeType_EndcConfigUpdate *)0)->present), + asn_MAP_RespondingNodeType_EndcConfigUpdate_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcConfigUpdate = { + "RespondingNodeType-EndcConfigUpdate", + "RespondingNodeType-EndcConfigUpdate", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcConfigUpdate_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcConfigUpdate_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcConfigUpdate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h new file mode 100644 index 0000000..ac869b9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcConfigUpdate_H_ +#define _RespondingNodeType_EndcConfigUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcConfigUpdate_PR { + RespondingNodeType_EndcConfigUpdate_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcConfigUpdate_PR_respond_eNB, + RespondingNodeType_EndcConfigUpdate_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcConfigUpdate_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcConfigUpdate */ +typedef struct RespondingNodeType_EndcConfigUpdate { + RespondingNodeType_EndcConfigUpdate_PR present; + union RespondingNodeType_EndcConfigUpdate_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcConfigUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcConfigUpdate; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcConfigUpdate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c new file mode 100644 index 0000000..f76ea10 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcX2Removal.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcX2Removal_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcX2Removal_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Removal, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P115, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Removal, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P116, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcX2Removal_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcX2Removal_specs_1 = { + sizeof(struct RespondingNodeType_EndcX2Removal), + offsetof(struct RespondingNodeType_EndcX2Removal, _asn_ctx), + offsetof(struct RespondingNodeType_EndcX2Removal, present), + sizeof(((struct RespondingNodeType_EndcX2Removal *)0)->present), + asn_MAP_RespondingNodeType_EndcX2Removal_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Removal = { + "RespondingNodeType-EndcX2Removal", + "RespondingNodeType-EndcX2Removal", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcX2Removal_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcX2Removal_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcX2Removal_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h new file mode 100644 index 0000000..064656c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcX2Removal_H_ +#define _RespondingNodeType_EndcX2Removal_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcX2Removal_PR { + RespondingNodeType_EndcX2Removal_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcX2Removal_PR_respond_eNB, + RespondingNodeType_EndcX2Removal_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcX2Removal_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcX2Removal */ +typedef struct RespondingNodeType_EndcX2Removal { + RespondingNodeType_EndcX2Removal_PR present; + union RespondingNodeType_EndcX2Removal_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcX2Removal_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Removal; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcX2Removal_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c new file mode 100644 index 0000000..121cc3e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcX2Setup.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcX2Setup_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcX2Setup_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Setup, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Setup, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcX2Setup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcX2Setup_specs_1 = { + sizeof(struct RespondingNodeType_EndcX2Setup), + offsetof(struct RespondingNodeType_EndcX2Setup, _asn_ctx), + offsetof(struct RespondingNodeType_EndcX2Setup, present), + sizeof(((struct RespondingNodeType_EndcX2Setup *)0)->present), + asn_MAP_RespondingNodeType_EndcX2Setup_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Setup = { + "RespondingNodeType-EndcX2Setup", + "RespondingNodeType-EndcX2Setup", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcX2Setup_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcX2Setup_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcX2Setup_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h new file mode 100644 index 0000000..742d07b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcX2Setup_H_ +#define _RespondingNodeType_EndcX2Setup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcX2Setup_PR { + RespondingNodeType_EndcX2Setup_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcX2Setup_PR_respond_eNB, + RespondingNodeType_EndcX2Setup_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcX2Setup_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcX2Setup */ +typedef struct RespondingNodeType_EndcX2Setup { + RespondingNodeType_EndcX2Setup_PR present; + union RespondingNodeType_EndcX2Setup_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcX2Setup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Setup; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcX2Setup_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c new file mode 100644 index 0000000..a06ed4d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EutranrCellResourceCoordination.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EutranrCellResourceCoordination_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EutranrCellResourceCoordination_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P109, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P110, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EutranrCellResourceCoordination_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EutranrCellResourceCoordination_specs_1 = { + sizeof(struct RespondingNodeType_EutranrCellResourceCoordination), + offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, _asn_ctx), + offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, present), + sizeof(((struct RespondingNodeType_EutranrCellResourceCoordination *)0)->present), + asn_MAP_RespondingNodeType_EutranrCellResourceCoordination_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EutranrCellResourceCoordination = { + "RespondingNodeType-EutranrCellResourceCoordination", + "RespondingNodeType-EutranrCellResourceCoordination", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EutranrCellResourceCoordination_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EutranrCellResourceCoordination_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EutranrCellResourceCoordination_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h new file mode 100644 index 0000000..5a71f5c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EutranrCellResourceCoordination_H_ +#define _RespondingNodeType_EutranrCellResourceCoordination_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EutranrCellResourceCoordination_PR { + RespondingNodeType_EutranrCellResourceCoordination_PR_NOTHING, /* No components present */ + RespondingNodeType_EutranrCellResourceCoordination_PR_respond_eNB, + RespondingNodeType_EutranrCellResourceCoordination_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EutranrCellResourceCoordination_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EutranrCellResourceCoordination */ +typedef struct RespondingNodeType_EutranrCellResourceCoordination { + RespondingNodeType_EutranrCellResourceCoordination_PR present; + union RespondingNodeType_EutranrCellResourceCoordination_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EutranrCellResourceCoordination_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EutranrCellResourceCoordination; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EutranrCellResourceCoordination_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c new file mode 100644 index 0000000..d9e70aa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp-RejectByMeNBItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, cause), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 2, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, meNBtoSeNBContainer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSeNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNBtoSeNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem = { + "ResponseInformationSeNBReconfComp-RejectByMeNBItem", + "ResponseInformationSeNBReconfComp-RejectByMeNBItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h new file mode 100644 index 0000000..f7f239b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ +#define _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cause.h" +#include "MeNBtoSeNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSeNBReconfComp-RejectByMeNBItem */ +typedef struct ResponseInformationSeNBReconfComp_RejectByMeNBItem { + Cause_t cause; + MeNBtoSeNBContainer_t *meNBtoSeNBContainer; /* 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; +} ResponseInformationSeNBReconfComp_RejectByMeNBItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c new file mode 100644 index 0000000..82c5802 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp-SuccessItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1[] = { + { ATF_POINTER, 2, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, meNBtoSeNBContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSeNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNBtoSeNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItem), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem = { + "ResponseInformationSeNBReconfComp-SuccessItem", + "ResponseInformationSeNBReconfComp-SuccessItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h new file mode 100644 index 0000000..4979d96 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_SuccessItem_H_ +#define _ResponseInformationSeNBReconfComp_SuccessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeNBtoSeNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSeNBReconfComp-SuccessItem */ +typedef struct ResponseInformationSeNBReconfComp_SuccessItem { + MeNBtoSeNBContainer_t *meNBtoSeNBContainer; /* 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; +} ResponseInformationSeNBReconfComp_SuccessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_SuccessItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c new file mode 100644 index 0000000..9a469cd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp.h" + +#include "ResponseInformationSeNBReconfComp-SuccessItem.h" +#include "ResponseInformationSeNBReconfComp-RejectByMeNBItem.h" +static asn_per_constraints_t asn_PER_type_ResponseInformationSeNBReconfComp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_1[] = { + { ATF_POINTER, 0, offsetof(struct ResponseInformationSeNBReconfComp, choice.success), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "success" + }, + { ATF_POINTER, 0, offsetof(struct ResponseInformationSeNBReconfComp, choice.reject_by_MeNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reject-by-MeNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* success */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp), + offsetof(struct ResponseInformationSeNBReconfComp, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp, present), + sizeof(((struct ResponseInformationSeNBReconfComp *)0)->present), + asn_MAP_ResponseInformationSeNBReconfComp_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp = { + "ResponseInformationSeNBReconfComp", + "ResponseInformationSeNBReconfComp", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResponseInformationSeNBReconfComp_constr_1, CHOICE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h new file mode 100644 index 0000000..4eb22df --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_H_ +#define _ResponseInformationSeNBReconfComp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponseInformationSeNBReconfComp_PR { + ResponseInformationSeNBReconfComp_PR_NOTHING, /* No components present */ + ResponseInformationSeNBReconfComp_PR_success, + ResponseInformationSeNBReconfComp_PR_reject_by_MeNB + /* Extensions may appear below */ + +} ResponseInformationSeNBReconfComp_PR; + +/* Forward declarations */ +struct ResponseInformationSeNBReconfComp_SuccessItem; +struct ResponseInformationSeNBReconfComp_RejectByMeNBItem; + +/* ResponseInformationSeNBReconfComp */ +typedef struct ResponseInformationSeNBReconfComp { + ResponseInformationSeNBReconfComp_PR present; + union ResponseInformationSeNBReconfComp_u { + struct ResponseInformationSeNBReconfComp_SuccessItem *success; + struct ResponseInformationSeNBReconfComp_RejectByMeNBItem *reject_by_MeNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c new file mode 100644 index 0000000..4afea51 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp-RejectByMeNBItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, cause), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem = { + "ResponseInformationSgNBReconfComp-RejectByMeNBItem", + "ResponseInformationSgNBReconfComp-RejectByMeNBItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h new file mode 100644 index 0000000..f9b0cd2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ +#define _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSgNBReconfComp-RejectByMeNBItem */ +typedef struct ResponseInformationSgNBReconfComp_RejectByMeNBItem { + 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; +} ResponseInformationSgNBReconfComp_RejectByMeNBItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c new file mode 100644 index 0000000..db0d733 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp-SuccessItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1[] = { + { ATF_POINTER, 2, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, meNBtoSgNBContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSgNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNBtoSgNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItem), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem = { + "ResponseInformationSgNBReconfComp-SuccessItem", + "ResponseInformationSgNBReconfComp-SuccessItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h new file mode 100644 index 0000000..a3c2e22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_SuccessItem_H_ +#define _ResponseInformationSgNBReconfComp_SuccessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeNBtoSgNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSgNBReconfComp-SuccessItem */ +typedef struct ResponseInformationSgNBReconfComp_SuccessItem { + MeNBtoSgNBContainer_t *meNBtoSgNBContainer; /* 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; +} ResponseInformationSgNBReconfComp_SuccessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_SuccessItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c new file mode 100644 index 0000000..81f372a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp.h" + +#include "ResponseInformationSgNBReconfComp-SuccessItem.h" +#include "ResponseInformationSgNBReconfComp-RejectByMeNBItem.h" +static asn_per_constraints_t asn_PER_type_ResponseInformationSgNBReconfComp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_1[] = { + { ATF_POINTER, 0, offsetof(struct ResponseInformationSgNBReconfComp, choice.success_SgNBReconfComp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "success-SgNBReconfComp" + }, + { ATF_POINTER, 0, offsetof(struct ResponseInformationSgNBReconfComp, choice.reject_by_MeNB_SgNBReconfComp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reject-by-MeNB-SgNBReconfComp" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* success-SgNBReconfComp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB-SgNBReconfComp */ +}; +static asn_CHOICE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp), + offsetof(struct ResponseInformationSgNBReconfComp, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp, present), + sizeof(((struct ResponseInformationSgNBReconfComp *)0)->present), + asn_MAP_ResponseInformationSgNBReconfComp_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp = { + "ResponseInformationSgNBReconfComp", + "ResponseInformationSgNBReconfComp", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResponseInformationSgNBReconfComp_constr_1, CHOICE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h new file mode 100644 index 0000000..0541f43 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_H_ +#define _ResponseInformationSgNBReconfComp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponseInformationSgNBReconfComp_PR { + ResponseInformationSgNBReconfComp_PR_NOTHING, /* No components present */ + ResponseInformationSgNBReconfComp_PR_success_SgNBReconfComp, + ResponseInformationSgNBReconfComp_PR_reject_by_MeNB_SgNBReconfComp + /* Extensions may appear below */ + +} ResponseInformationSgNBReconfComp_PR; + +/* Forward declarations */ +struct ResponseInformationSgNBReconfComp_SuccessItem; +struct ResponseInformationSgNBReconfComp_RejectByMeNBItem; + +/* ResponseInformationSgNBReconfComp */ +typedef struct ResponseInformationSgNBReconfComp { + ResponseInformationSgNBReconfComp_PR present; + union ResponseInformationSgNBReconfComp_u { + struct ResponseInformationSgNBReconfComp_SuccessItem *success_SgNBReconfComp; + struct ResponseInformationSgNBReconfComp_RejectByMeNBItem *reject_by_MeNB_SgNBReconfComp; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ResumeID.c b/E2Manager/asn1codec/e2ap_engine/ResumeID.c new file mode 100644 index 0000000..94ec211 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResumeID.c @@ -0,0 +1,153 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResumeID.h" + +static int +memb_non_truncated_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* 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_truncated_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* 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_non_truncated_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_truncated_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ResumeID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ResumeID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResumeID, choice.non_truncated), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_non_truncated_constr_2, memb_non_truncated_constraint_1 }, + 0, 0, /* No default value */ + "non-truncated" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResumeID, choice.truncated), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_truncated_constr_3, memb_truncated_constraint_1 }, + 0, 0, /* No default value */ + "truncated" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResumeID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* non-truncated */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* truncated */ +}; +asn_CHOICE_specifics_t asn_SPC_ResumeID_specs_1 = { + sizeof(struct ResumeID), + offsetof(struct ResumeID, _asn_ctx), + offsetof(struct ResumeID, present), + sizeof(((struct ResumeID *)0)->present), + asn_MAP_ResumeID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResumeID = { + "ResumeID", + "ResumeID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResumeID_constr_1, CHOICE_constraint }, + asn_MBR_ResumeID_1, + 2, /* Elements count */ + &asn_SPC_ResumeID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ResumeID.h b/E2Manager/asn1codec/e2ap_engine/ResumeID.h new file mode 100644 index 0000000..538e5e4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ResumeID.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResumeID_H_ +#define _ResumeID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResumeID_PR { + ResumeID_PR_NOTHING, /* No components present */ + ResumeID_PR_non_truncated, + ResumeID_PR_truncated + /* Extensions may appear below */ + +} ResumeID_PR; + +/* ResumeID */ +typedef struct ResumeID { + ResumeID_PR present; + union ResumeID_u { + BIT_STRING_t non_truncated; + BIT_STRING_t truncated; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResumeID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResumeID; +extern asn_CHOICE_specifics_t asn_SPC_ResumeID_specs_1; +extern asn_TYPE_member_t asn_MBR_ResumeID_1[2]; +extern asn_per_constraints_t asn_PER_type_ResumeID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResumeID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.c b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.c new file mode 100644 index 0000000..b38b5e6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextFailure.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_specs_1 = { + sizeof(struct RetrieveUEContextFailure), + offsetof(struct RetrieveUEContextFailure, _asn_ctx), + asn_MAP_RetrieveUEContextFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure = { + "RetrieveUEContextFailure", + "RetrieveUEContextFailure", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextFailure_tags_1, + sizeof(asn_DEF_RetrieveUEContextFailure_tags_1) + /sizeof(asn_DEF_RetrieveUEContextFailure_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextFailure_tags_1) + /sizeof(asn_DEF_RetrieveUEContextFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextFailure_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.h b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.h new file mode 100644 index 0000000..c342c3f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextFailure_H_ +#define _RetrieveUEContextFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextFailure */ +typedef struct RetrieveUEContextFailure { + ProtocolIE_Container_119P63_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.c b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.c new file mode 100644 index 0000000..d5cca14 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextRequest.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_specs_1 = { + sizeof(struct RetrieveUEContextRequest), + offsetof(struct RetrieveUEContextRequest, _asn_ctx), + asn_MAP_RetrieveUEContextRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest = { + "RetrieveUEContextRequest", + "RetrieveUEContextRequest", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextRequest_tags_1, + sizeof(asn_DEF_RetrieveUEContextRequest_tags_1) + /sizeof(asn_DEF_RetrieveUEContextRequest_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextRequest_tags_1) + /sizeof(asn_DEF_RetrieveUEContextRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextRequest_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.h b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.h new file mode 100644 index 0000000..2e1a78e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextRequest_H_ +#define _RetrieveUEContextRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextRequest */ +typedef struct RetrieveUEContextRequest { + ProtocolIE_Container_119P61_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.c b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.c new file mode 100644 index 0000000..e9d0178 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextResponse.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_specs_1 = { + sizeof(struct RetrieveUEContextResponse), + offsetof(struct RetrieveUEContextResponse, _asn_ctx), + asn_MAP_RetrieveUEContextResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse = { + "RetrieveUEContextResponse", + "RetrieveUEContextResponse", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextResponse_tags_1, + sizeof(asn_DEF_RetrieveUEContextResponse_tags_1) + /sizeof(asn_DEF_RetrieveUEContextResponse_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextResponse_tags_1) + /sizeof(asn_DEF_RetrieveUEContextResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextResponse_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.h b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.h new file mode 100644 index 0000000..c0a0279 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/RetrieveUEContextResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextResponse_H_ +#define _RetrieveUEContextResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextResponse */ +typedef struct RetrieveUEContextResponse { + ProtocolIE_Container_119P62_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.c b/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.c new file mode 100644 index 0000000..d7928ab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "S1TNLLoadIndicator.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator, dLS1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLS1TNLLoadIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator, uLS1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLS1TNLLoadIndicator" + }, + { ATF_POINTER, 1, offsetof(struct S1TNLLoadIndicator, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P189, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1TNLLoadIndicator_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1TNLLoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1TNLLoadIndicator_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dLS1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLS1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_specs_1 = { + sizeof(struct S1TNLLoadIndicator), + offsetof(struct S1TNLLoadIndicator, _asn_ctx), + asn_MAP_S1TNLLoadIndicator_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1TNLLoadIndicator_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator = { + "S1TNLLoadIndicator", + "S1TNLLoadIndicator", + &asn_OP_SEQUENCE, + asn_DEF_S1TNLLoadIndicator_tags_1, + sizeof(asn_DEF_S1TNLLoadIndicator_tags_1) + /sizeof(asn_DEF_S1TNLLoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1TNLLoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1TNLLoadIndicator_tags_1) + /sizeof(asn_DEF_S1TNLLoadIndicator_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1TNLLoadIndicator_1, + 3, /* Elements count */ + &asn_SPC_S1TNLLoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.h b/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.h new file mode 100644 index 0000000..069e0e0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/S1TNLLoadIndicator.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _S1TNLLoadIndicator_H_ +#define _S1TNLLoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LoadIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* S1TNLLoadIndicator */ +typedef struct S1TNLLoadIndicator { + LoadIndicator_t dLS1TNLLoadIndicator; + LoadIndicator_t uLS1TNLLoadIndicator; + 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; +} S1TNLLoadIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator; +extern asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_specs_1; +extern asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1TNLLoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.c b/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.c new file mode 100644 index 0000000..44f47d0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SCGChangeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SCGChangeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SCGChangeIndication_value2enum_1[] = { + { 0, 19, "pDCPCountWrapAround" }, + { 1, 12, "pSCellChange" }, + { 2, 5, "other" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SCGChangeIndication_enum2value_1[] = { + 2, /* other(2) */ + 0, /* pDCPCountWrapAround(0) */ + 1 /* pSCellChange(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SCGChangeIndication_specs_1 = { + asn_MAP_SCGChangeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SCGChangeIndication_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_SCGChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SCGChangeIndication = { + "SCGChangeIndication", + "SCGChangeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_SCGChangeIndication_tags_1, + sizeof(asn_DEF_SCGChangeIndication_tags_1) + /sizeof(asn_DEF_SCGChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_SCGChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SCGChangeIndication_tags_1) + /sizeof(asn_DEF_SCGChangeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SCGChangeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SCGChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.h b/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.h new file mode 100644 index 0000000..f0d4547 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SCGChangeIndication.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SCGChangeIndication_H_ +#define _SCGChangeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SCGChangeIndication { + SCGChangeIndication_pDCPCountWrapAround = 0, + SCGChangeIndication_pSCellChange = 1, + SCGChangeIndication_other = 2 + /* + * Enumeration is extensible + */ +} e_SCGChangeIndication; + +/* SCGChangeIndication */ +typedef long SCGChangeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SCGChangeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SCGChangeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_SCGChangeIndication_specs_1; +asn_struct_free_f SCGChangeIndication_free; +asn_struct_print_f SCGChangeIndication_print; +asn_constr_check_f SCGChangeIndication_constraint; +ber_type_decoder_f SCGChangeIndication_decode_ber; +der_type_encoder_f SCGChangeIndication_encode_der; +xer_type_decoder_f SCGChangeIndication_decode_xer; +xer_type_encoder_f SCGChangeIndication_encode_xer; +per_type_decoder_f SCGChangeIndication_decode_uper; +per_type_encoder_f SCGChangeIndication_encode_uper; +per_type_decoder_f SCGChangeIndication_decode_aper; +per_type_encoder_f SCGChangeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SCGChangeIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.c b/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.c new file mode 100644 index 0000000..30eedeb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SCGConfigurationQuery.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SCGConfigurationQuery_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SCGConfigurationQuery_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SCGConfigurationQuery_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SCGConfigurationQuery_specs_1 = { + asn_MAP_SCGConfigurationQuery_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SCGConfigurationQuery_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_SCGConfigurationQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SCGConfigurationQuery = { + "SCGConfigurationQuery", + "SCGConfigurationQuery", + &asn_OP_NativeEnumerated, + asn_DEF_SCGConfigurationQuery_tags_1, + sizeof(asn_DEF_SCGConfigurationQuery_tags_1) + /sizeof(asn_DEF_SCGConfigurationQuery_tags_1[0]), /* 1 */ + asn_DEF_SCGConfigurationQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_SCGConfigurationQuery_tags_1) + /sizeof(asn_DEF_SCGConfigurationQuery_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SCGConfigurationQuery_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SCGConfigurationQuery_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.h b/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.h new file mode 100644 index 0000000..f30bd44 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SCGConfigurationQuery.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SCGConfigurationQuery_H_ +#define _SCGConfigurationQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SCGConfigurationQuery { + SCGConfigurationQuery_true = 0 + /* + * Enumeration is extensible + */ +} e_SCGConfigurationQuery; + +/* SCGConfigurationQuery */ +typedef long SCGConfigurationQuery_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SCGConfigurationQuery_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SCGConfigurationQuery; +extern const asn_INTEGER_specifics_t asn_SPC_SCGConfigurationQuery_specs_1; +asn_struct_free_f SCGConfigurationQuery_free; +asn_struct_print_f SCGConfigurationQuery_print; +asn_constr_check_f SCGConfigurationQuery_constraint; +ber_type_decoder_f SCGConfigurationQuery_decode_ber; +der_type_encoder_f SCGConfigurationQuery_encode_der; +xer_type_decoder_f SCGConfigurationQuery_decode_xer; +xer_type_encoder_f SCGConfigurationQuery_encode_xer; +per_type_decoder_f SCGConfigurationQuery_decode_uper; +per_type_encoder_f SCGConfigurationQuery_encode_uper; +per_type_decoder_f SCGConfigurationQuery_decode_aper; +per_type_encoder_f SCGConfigurationQuery_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SCGConfigurationQuery_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c b/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c new file mode 100644 index 0000000..b8996a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SGNB-Addition-Trigger-Ind.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SGNB_Addition_Trigger_Ind_value2enum_1[] = { + { 0, 9, "sn-change" }, + { 1, 12, "inter-eNB-HO" }, + { 2, 12, "intra-eNB-HO" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SGNB_Addition_Trigger_Ind_enum2value_1[] = { + 1, /* inter-eNB-HO(1) */ + 2, /* intra-eNB-HO(2) */ + 0 /* sn-change(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SGNB_Addition_Trigger_Ind_specs_1 = { + asn_MAP_SGNB_Addition_Trigger_Ind_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SGNB_Addition_Trigger_Ind_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_SGNB_Addition_Trigger_Ind_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SGNB_Addition_Trigger_Ind = { + "SGNB-Addition-Trigger-Ind", + "SGNB-Addition-Trigger-Ind", + &asn_OP_NativeEnumerated, + asn_DEF_SGNB_Addition_Trigger_Ind_tags_1, + sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1) + /sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1[0]), /* 1 */ + asn_DEF_SGNB_Addition_Trigger_Ind_tags_1, /* Same as above */ + sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1) + /sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SGNB_Addition_Trigger_Ind_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h b/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h new file mode 100644 index 0000000..75741c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SGNB_Addition_Trigger_Ind_H_ +#define _SGNB_Addition_Trigger_Ind_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SGNB_Addition_Trigger_Ind { + SGNB_Addition_Trigger_Ind_sn_change = 0, + SGNB_Addition_Trigger_Ind_inter_eNB_HO = 1, + SGNB_Addition_Trigger_Ind_intra_eNB_HO = 2 + /* + * Enumeration is extensible + */ +} e_SGNB_Addition_Trigger_Ind; + +/* SGNB-Addition-Trigger-Ind */ +typedef long SGNB_Addition_Trigger_Ind_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SGNB_Addition_Trigger_Ind; +extern const asn_INTEGER_specifics_t asn_SPC_SGNB_Addition_Trigger_Ind_specs_1; +asn_struct_free_f SGNB_Addition_Trigger_Ind_free; +asn_struct_print_f SGNB_Addition_Trigger_Ind_print; +asn_constr_check_f SGNB_Addition_Trigger_Ind_constraint; +ber_type_decoder_f SGNB_Addition_Trigger_Ind_decode_ber; +der_type_encoder_f SGNB_Addition_Trigger_Ind_encode_der; +xer_type_decoder_f SGNB_Addition_Trigger_Ind_decode_xer; +xer_type_encoder_f SGNB_Addition_Trigger_Ind_encode_xer; +per_type_decoder_f SGNB_Addition_Trigger_Ind_decode_uper; +per_type_encoder_f SGNB_Addition_Trigger_Ind_encode_uper; +per_type_decoder_f SGNB_Addition_Trigger_Ind_decode_aper; +per_type_encoder_f SGNB_Addition_Trigger_Ind_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SGNB_Addition_Trigger_Ind_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c b/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c new file mode 100644 index 0000000..97ce163 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SIPTOBearerDeactivationIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SIPTOBearerDeactivationIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SIPTOBearerDeactivationIndication_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SIPTOBearerDeactivationIndication_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SIPTOBearerDeactivationIndication_specs_1 = { + asn_MAP_SIPTOBearerDeactivationIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SIPTOBearerDeactivationIndication_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_SIPTOBearerDeactivationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SIPTOBearerDeactivationIndication = { + "SIPTOBearerDeactivationIndication", + "SIPTOBearerDeactivationIndication", + &asn_OP_NativeEnumerated, + asn_DEF_SIPTOBearerDeactivationIndication_tags_1, + sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1) + /sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1[0]), /* 1 */ + asn_DEF_SIPTOBearerDeactivationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1) + /sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SIPTOBearerDeactivationIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SIPTOBearerDeactivationIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h b/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h new file mode 100644 index 0000000..809ca8e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SIPTOBearerDeactivationIndication_H_ +#define _SIPTOBearerDeactivationIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SIPTOBearerDeactivationIndication { + SIPTOBearerDeactivationIndication_true = 0 + /* + * Enumeration is extensible + */ +} e_SIPTOBearerDeactivationIndication; + +/* SIPTOBearerDeactivationIndication */ +typedef long SIPTOBearerDeactivationIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SIPTOBearerDeactivationIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SIPTOBearerDeactivationIndication; +extern const asn_INTEGER_specifics_t asn_SPC_SIPTOBearerDeactivationIndication_specs_1; +asn_struct_free_f SIPTOBearerDeactivationIndication_free; +asn_struct_print_f SIPTOBearerDeactivationIndication_print; +asn_constr_check_f SIPTOBearerDeactivationIndication_constraint; +ber_type_decoder_f SIPTOBearerDeactivationIndication_decode_ber; +der_type_encoder_f SIPTOBearerDeactivationIndication_encode_der; +xer_type_decoder_f SIPTOBearerDeactivationIndication_decode_xer; +xer_type_encoder_f SIPTOBearerDeactivationIndication_encode_xer; +per_type_decoder_f SIPTOBearerDeactivationIndication_decode_uper; +per_type_encoder_f SIPTOBearerDeactivationIndication_encode_uper; +per_type_decoder_f SIPTOBearerDeactivationIndication_decode_aper; +per_type_encoder_f SIPTOBearerDeactivationIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SIPTOBearerDeactivationIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.c b/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.c new file mode 100644 index 0000000..77449bf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SNStatusTransfer.h" + +static asn_TYPE_member_t asn_MBR_SNStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SNStatusTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SNStatusTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_specs_1 = { + sizeof(struct SNStatusTransfer), + offsetof(struct SNStatusTransfer, _asn_ctx), + asn_MAP_SNStatusTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer = { + "SNStatusTransfer", + "SNStatusTransfer", + &asn_OP_SEQUENCE, + asn_DEF_SNStatusTransfer_tags_1, + sizeof(asn_DEF_SNStatusTransfer_tags_1) + /sizeof(asn_DEF_SNStatusTransfer_tags_1[0]), /* 1 */ + asn_DEF_SNStatusTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_SNStatusTransfer_tags_1) + /sizeof(asn_DEF_SNStatusTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SNStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_SNStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.h b/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.h new file mode 100644 index 0000000..5856a9a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SNStatusTransfer.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SNStatusTransfer_H_ +#define _SNStatusTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SNStatusTransfer */ +typedef struct SNStatusTransfer { + ProtocolIE_Container_119P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SNStatusTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _SNStatusTransfer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SRBType.c b/E2Manager/asn1codec/e2ap_engine/SRBType.c new file mode 100644 index 0000000..0216daf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SRBType.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SRBType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SRBType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SRBType_value2enum_1[] = { + { 0, 4, "srb1" }, + { 1, 4, "srb2" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SRBType_enum2value_1[] = { + 0, /* srb1(0) */ + 1 /* srb2(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SRBType_specs_1 = { + asn_MAP_SRBType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SRBType_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_SRBType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SRBType = { + "SRBType", + "SRBType", + &asn_OP_NativeEnumerated, + asn_DEF_SRBType_tags_1, + sizeof(asn_DEF_SRBType_tags_1) + /sizeof(asn_DEF_SRBType_tags_1[0]), /* 1 */ + asn_DEF_SRBType_tags_1, /* Same as above */ + sizeof(asn_DEF_SRBType_tags_1) + /sizeof(asn_DEF_SRBType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SRBType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SRBType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SRBType.h b/E2Manager/asn1codec/e2ap_engine/SRBType.h new file mode 100644 index 0000000..49f35ef --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SRBType.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SRBType_H_ +#define _SRBType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SRBType { + SRBType_srb1 = 0, + SRBType_srb2 = 1 + /* + * Enumeration is extensible + */ +} e_SRBType; + +/* SRBType */ +typedef long SRBType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SRBType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SRBType; +extern const asn_INTEGER_specifics_t asn_SPC_SRBType_specs_1; +asn_struct_free_f SRBType_free; +asn_struct_print_f SRBType_print; +asn_constr_check_f SRBType_constraint; +ber_type_decoder_f SRBType_decode_ber; +der_type_encoder_f SRBType_encode_der; +xer_type_decoder_f SRBType_decode_xer; +xer_type_encoder_f SRBType_encode_xer; +per_type_decoder_f SRBType_decode_uper; +per_type_encoder_f SRBType_encode_uper; +per_type_decoder_f SRBType_decode_aper; +per_type_encoder_f SRBType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SRBType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.c b/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.c new file mode 100644 index 0000000..d6bd18b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SRVCCOperationPossible.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SRVCCOperationPossible_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SRVCCOperationPossible_value2enum_1[] = { + { 0, 8, "possible" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SRVCCOperationPossible_enum2value_1[] = { + 0 /* possible(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SRVCCOperationPossible_specs_1 = { + asn_MAP_SRVCCOperationPossible_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_SRVCCOperationPossible_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SRVCCOperationPossible = { + "SRVCCOperationPossible", + "SRVCCOperationPossible", + &asn_OP_NativeEnumerated, + asn_DEF_SRVCCOperationPossible_tags_1, + sizeof(asn_DEF_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_SRVCCOperationPossible_tags_1[0]), /* 1 */ + asn_DEF_SRVCCOperationPossible_tags_1, /* Same as above */ + sizeof(asn_DEF_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_SRVCCOperationPossible_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SRVCCOperationPossible_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SRVCCOperationPossible_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.h b/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.h new file mode 100644 index 0000000..ccee0e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SRVCCOperationPossible.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SRVCCOperationPossible_H_ +#define _SRVCCOperationPossible_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SRVCCOperationPossible { + SRVCCOperationPossible_possible = 0 + /* + * Enumeration is extensible + */ +} e_SRVCCOperationPossible; + +/* SRVCCOperationPossible */ +typedef long SRVCCOperationPossible_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SRVCCOperationPossible_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SRVCCOperationPossible; +extern const asn_INTEGER_specifics_t asn_SPC_SRVCCOperationPossible_specs_1; +asn_struct_free_f SRVCCOperationPossible_free; +asn_struct_print_f SRVCCOperationPossible_print; +asn_constr_check_f SRVCCOperationPossible_constraint; +ber_type_decoder_f SRVCCOperationPossible_decode_ber; +der_type_encoder_f SRVCCOperationPossible_encode_der; +xer_type_decoder_f SRVCCOperationPossible_decode_xer; +xer_type_encoder_f SRVCCOperationPossible_encode_xer; +per_type_decoder_f SRVCCOperationPossible_decode_uper; +per_type_encoder_f SRVCCOperationPossible_encode_uper; +per_type_decoder_f SRVCCOperationPossible_decode_aper; +per_type_encoder_f SRVCCOperationPossible_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SRVCCOperationPossible_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SULInformation.c b/E2Manager/asn1codec/e2ap_engine/SULInformation.c new file mode 100644 index 0000000..9a15bc6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SULInformation.c @@ -0,0 +1,122 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SULInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_sUL_ARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3279165)) { + /* 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_sUL_ARFCN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, 0, 3279165 } /* (0..3279165) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SULInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SULInformation, sUL_ARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_sUL_ARFCN_constr_2, memb_sUL_ARFCN_constraint_1 }, + 0, 0, /* No default value */ + "sUL-ARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct SULInformation, sUL_TxBW), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sUL-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct SULInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P199, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SULInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_SULInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SULInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sUL-ARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sUL-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SULInformation_specs_1 = { + sizeof(struct SULInformation), + offsetof(struct SULInformation, _asn_ctx), + asn_MAP_SULInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SULInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SULInformation = { + "SULInformation", + "SULInformation", + &asn_OP_SEQUENCE, + asn_DEF_SULInformation_tags_1, + sizeof(asn_DEF_SULInformation_tags_1) + /sizeof(asn_DEF_SULInformation_tags_1[0]), /* 1 */ + asn_DEF_SULInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SULInformation_tags_1) + /sizeof(asn_DEF_SULInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SULInformation_1, + 3, /* Elements count */ + &asn_SPC_SULInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SULInformation.h b/E2Manager/asn1codec/e2ap_engine/SULInformation.h new file mode 100644 index 0000000..e1e53c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SULInformation.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SULInformation_H_ +#define _SULInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SULInformation */ +typedef struct SULInformation { + long sUL_ARFCN; + NR_TxBW_t sUL_TxBW; + 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; +} SULInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SULInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_SULInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_SULInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SULInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.c b/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.c new file mode 100644 index 0000000..88ccf34 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.c @@ -0,0 +1,198 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ScheduledCommunicationTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_dayofWeek_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_timeofDayStart_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86399)) { + /* 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_timeofDayEnd_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86399)) { + /* 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_dayofWeek_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_timeofDayStart_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 17, -1, 0, 86399 } /* (0..86399,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_timeofDayEnd_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 17, -1, 0, 86399 } /* (0..86399,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_1[] = { + { ATF_POINTER, 4, offsetof(struct ScheduledCommunicationTime, dayofWeek), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dayofWeek_constr_2, memb_dayofWeek_constraint_1 }, + 0, 0, /* No default value */ + "dayofWeek" + }, + { ATF_POINTER, 3, offsetof(struct ScheduledCommunicationTime, timeofDayStart), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_timeofDayStart_constr_3, memb_timeofDayStart_constraint_1 }, + 0, 0, /* No default value */ + "timeofDayStart" + }, + { ATF_POINTER, 2, offsetof(struct ScheduledCommunicationTime, timeofDayEnd), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_timeofDayEnd_constr_4, memb_timeofDayEnd_constraint_1 }, + 0, 0, /* No default value */ + "timeofDayEnd" + }, + { ATF_POINTER, 1, offsetof(struct ScheduledCommunicationTime, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P197, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ScheduledCommunicationTime_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ScheduledCommunicationTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ScheduledCommunicationTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dayofWeek */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeofDayStart */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeofDayEnd */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_specs_1 = { + sizeof(struct ScheduledCommunicationTime), + offsetof(struct ScheduledCommunicationTime, _asn_ctx), + asn_MAP_ScheduledCommunicationTime_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ScheduledCommunicationTime_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime = { + "ScheduledCommunicationTime", + "ScheduledCommunicationTime", + &asn_OP_SEQUENCE, + asn_DEF_ScheduledCommunicationTime_tags_1, + sizeof(asn_DEF_ScheduledCommunicationTime_tags_1) + /sizeof(asn_DEF_ScheduledCommunicationTime_tags_1[0]), /* 1 */ + asn_DEF_ScheduledCommunicationTime_tags_1, /* Same as above */ + sizeof(asn_DEF_ScheduledCommunicationTime_tags_1) + /sizeof(asn_DEF_ScheduledCommunicationTime_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ScheduledCommunicationTime_1, + 4, /* Elements count */ + &asn_SPC_ScheduledCommunicationTime_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.h b/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.h new file mode 100644 index 0000000..9756669 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ScheduledCommunicationTime.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ScheduledCommunicationTime_H_ +#define _ScheduledCommunicationTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ScheduledCommunicationTime */ +typedef struct ScheduledCommunicationTime { + BIT_STRING_t *dayofWeek; /* OPTIONAL */ + long *timeofDayStart; /* OPTIONAL */ + long *timeofDayEnd; /* 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; +} ScheduledCommunicationTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime; +extern asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_specs_1; +extern asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ScheduledCommunicationTime_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.c b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.c new file mode 100644 index 0000000..fa56f6c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_specs_1 = { + sizeof(struct SeNBAdditionRequest), + offsetof(struct SeNBAdditionRequest, _asn_ctx), + asn_MAP_SeNBAdditionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest = { + "SeNBAdditionRequest", + "SeNBAdditionRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequest_tags_1, + sizeof(asn_DEF_SeNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.h b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.h new file mode 100644 index 0000000..2839f88 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequest_H_ +#define _SeNBAdditionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequest */ +typedef struct SeNBAdditionRequest { + ProtocolIE_Container_119P44_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c new file mode 100644 index 0000000..7124048 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_specs_1 = { + sizeof(struct SeNBAdditionRequestAcknowledge), + offsetof(struct SeNBAdditionRequestAcknowledge, _asn_ctx), + asn_MAP_SeNBAdditionRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge = { + "SeNBAdditionRequestAcknowledge", + "SeNBAdditionRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestAcknowledge_tags_1, + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h new file mode 100644 index 0000000..07a226b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequestAcknowledge_H_ +#define _SeNBAdditionRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequestAcknowledge */ +typedef struct SeNBAdditionRequestAcknowledge { + ProtocolIE_Container_119P45_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c new file mode 100644 index 0000000..3b05796 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_specs_1 = { + sizeof(struct SeNBAdditionRequestReject), + offsetof(struct SeNBAdditionRequestReject, _asn_ctx), + asn_MAP_SeNBAdditionRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject = { + "SeNBAdditionRequestReject", + "SeNBAdditionRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestReject_tags_1, + sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h new file mode 100644 index 0000000..eff21bf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequestReject_H_ +#define _SeNBAdditionRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequestReject */ +typedef struct SeNBAdditionRequestReject { + ProtocolIE_Container_119P46_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequestReject_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c b/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c new file mode 100644 index 0000000..d800279 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBCounterCheckRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBCounterCheckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBCounterCheckRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_specs_1 = { + sizeof(struct SeNBCounterCheckRequest), + offsetof(struct SeNBCounterCheckRequest, _asn_ctx), + asn_MAP_SeNBCounterCheckRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest = { + "SeNBCounterCheckRequest", + "SeNBCounterCheckRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBCounterCheckRequest_tags_1, + sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBCounterCheckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBCounterCheckRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBCounterCheckRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h b/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h new file mode 100644 index 0000000..a80eb7e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBCounterCheckRequest_H_ +#define _SeNBCounterCheckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBCounterCheckRequest */ +typedef struct SeNBCounterCheckRequest { + ProtocolIE_Container_119P57_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBCounterCheckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBCounterCheckRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.c new file mode 100644 index 0000000..f6f3384 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationConfirm.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_specs_1 = { + sizeof(struct SeNBModificationConfirm), + offsetof(struct SeNBModificationConfirm, _asn_ctx), + asn_MAP_SeNBModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm = { + "SeNBModificationConfirm", + "SeNBModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationConfirm_tags_1, + sizeof(asn_DEF_SeNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SeNBModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SeNBModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.h new file mode 100644 index 0000000..80d3a6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationConfirm_H_ +#define _SeNBModificationConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationConfirm */ +typedef struct SeNBModificationConfirm { + ProtocolIE_Container_119P52_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.c new file mode 100644 index 0000000..8916106 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRefuse.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_specs_1 = { + sizeof(struct SeNBModificationRefuse), + offsetof(struct SeNBModificationRefuse, _asn_ctx), + asn_MAP_SeNBModificationRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse = { + "SeNBModificationRefuse", + "SeNBModificationRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRefuse_tags_1, + sizeof(asn_DEF_SeNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SeNBModificationRefuse_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SeNBModificationRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRefuse_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRefuse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.h new file mode 100644 index 0000000..9a66dce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRefuse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRefuse_H_ +#define _SeNBModificationRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRefuse */ +typedef struct SeNBModificationRefuse { + ProtocolIE_Container_119P53_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRefuse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.c new file mode 100644 index 0000000..d34ca7d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_specs_1 = { + sizeof(struct SeNBModificationRequest), + offsetof(struct SeNBModificationRequest, _asn_ctx), + asn_MAP_SeNBModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest = { + "SeNBModificationRequest", + "SeNBModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequest_tags_1, + sizeof(asn_DEF_SeNBModificationRequest_tags_1) + /sizeof(asn_DEF_SeNBModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequest_tags_1) + /sizeof(asn_DEF_SeNBModificationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.h new file mode 100644 index 0000000..e0ba3a9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequest_H_ +#define _SeNBModificationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequest */ +typedef struct SeNBModificationRequest { + ProtocolIE_Container_119P48_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c new file mode 100644 index 0000000..ccb75e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_specs_1 = { + sizeof(struct SeNBModificationRequestAcknowledge), + offsetof(struct SeNBModificationRequestAcknowledge, _asn_ctx), + asn_MAP_SeNBModificationRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge = { + "SeNBModificationRequestAcknowledge", + "SeNBModificationRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestAcknowledge_tags_1, + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h new file mode 100644 index 0000000..8087f70 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequestAcknowledge_H_ +#define _SeNBModificationRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequestAcknowledge */ +typedef struct SeNBModificationRequestAcknowledge { + ProtocolIE_Container_119P49_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.c new file mode 100644 index 0000000..a6d135f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_specs_1 = { + sizeof(struct SeNBModificationRequestReject), + offsetof(struct SeNBModificationRequestReject, _asn_ctx), + asn_MAP_SeNBModificationRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject = { + "SeNBModificationRequestReject", + "SeNBModificationRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestReject_tags_1, + sizeof(asn_DEF_SeNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.h new file mode 100644 index 0000000..9bc8226 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequestReject.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequestReject_H_ +#define _SeNBModificationRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequestReject */ +typedef struct SeNBModificationRequestReject { + ProtocolIE_Container_119P50_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequestReject_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.c b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.c new file mode 100644 index 0000000..3af0c04 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequired.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_specs_1 = { + sizeof(struct SeNBModificationRequired), + offsetof(struct SeNBModificationRequired, _asn_ctx), + asn_MAP_SeNBModificationRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired = { + "SeNBModificationRequired", + "SeNBModificationRequired", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequired_tags_1, + sizeof(asn_DEF_SeNBModificationRequired_tags_1) + /sizeof(asn_DEF_SeNBModificationRequired_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequired_tags_1) + /sizeof(asn_DEF_SeNBModificationRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequired_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.h b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.h new file mode 100644 index 0000000..e781072 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBModificationRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequired_H_ +#define _SeNBModificationRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequired */ +typedef struct SeNBModificationRequired { + ProtocolIE_Container_119P51_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c b/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c new file mode 100644 index 0000000..8a380b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReconfigurationComplete.h" + +static asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReconfigurationComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReconfigurationComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_specs_1 = { + sizeof(struct SeNBReconfigurationComplete), + offsetof(struct SeNBReconfigurationComplete, _asn_ctx), + asn_MAP_SeNBReconfigurationComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete = { + "SeNBReconfigurationComplete", + "SeNBReconfigurationComplete", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReconfigurationComplete_tags_1, + sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1[0]), /* 1 */ + asn_DEF_SeNBReconfigurationComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReconfigurationComplete_1, + 1, /* Elements count */ + &asn_SPC_SeNBReconfigurationComplete_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h b/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h new file mode 100644 index 0000000..f85af92 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReconfigurationComplete_H_ +#define _SeNBReconfigurationComplete_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReconfigurationComplete */ +typedef struct SeNBReconfigurationComplete { + ProtocolIE_Container_119P47_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReconfigurationComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReconfigurationComplete_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.c b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.c new file mode 100644 index 0000000..bd5ab22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseConfirm.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_specs_1 = { + sizeof(struct SeNBReleaseConfirm), + offsetof(struct SeNBReleaseConfirm, _asn_ctx), + asn_MAP_SeNBReleaseConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm = { + "SeNBReleaseConfirm", + "SeNBReleaseConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseConfirm_tags_1, + sizeof(asn_DEF_SeNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SeNBReleaseConfirm_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SeNBReleaseConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseConfirm_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.h b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.h new file mode 100644 index 0000000..7aff801 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseConfirm_H_ +#define _SeNBReleaseConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseConfirm */ +typedef struct SeNBReleaseConfirm { + ProtocolIE_Container_119P56_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.c b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.c new file mode 100644 index 0000000..9838d7a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_specs_1 = { + sizeof(struct SeNBReleaseRequest), + offsetof(struct SeNBReleaseRequest, _asn_ctx), + asn_MAP_SeNBReleaseRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest = { + "SeNBReleaseRequest", + "SeNBReleaseRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequest_tags_1, + sizeof(asn_DEF_SeNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.h b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.h new file mode 100644 index 0000000..c43d2b8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseRequest_H_ +#define _SeNBReleaseRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseRequest */ +typedef struct SeNBReleaseRequest { + ProtocolIE_Container_119P54_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.c b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.c new file mode 100644 index 0000000..cace455 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseRequired.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_specs_1 = { + sizeof(struct SeNBReleaseRequired), + offsetof(struct SeNBReleaseRequired, _asn_ctx), + asn_MAP_SeNBReleaseRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired = { + "SeNBReleaseRequired", + "SeNBReleaseRequired", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequired_tags_1, + sizeof(asn_DEF_SeNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequired_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequired_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.h b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.h new file mode 100644 index 0000000..c399efb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBReleaseRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseRequired_H_ +#define _SeNBReleaseRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseRequired */ +typedef struct SeNBReleaseRequired { + ProtocolIE_Container_119P55_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.c b/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.c new file mode 100644 index 0000000..90dffbe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBSecurityKey.h" + +int +SeNBSecurityKey_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SeNBSecurityKey_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SeNBSecurityKey_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SeNBSecurityKey = { + "SeNBSecurityKey", + "SeNBSecurityKey", + &asn_OP_BIT_STRING, + asn_DEF_SeNBSecurityKey_tags_1, + sizeof(asn_DEF_SeNBSecurityKey_tags_1) + /sizeof(asn_DEF_SeNBSecurityKey_tags_1[0]), /* 1 */ + asn_DEF_SeNBSecurityKey_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBSecurityKey_tags_1) + /sizeof(asn_DEF_SeNBSecurityKey_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SeNBSecurityKey_constr_1, SeNBSecurityKey_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.h b/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.h new file mode 100644 index 0000000..99fa236 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBSecurityKey.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBSecurityKey_H_ +#define _SeNBSecurityKey_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBSecurityKey */ +typedef BIT_STRING_t SeNBSecurityKey_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SeNBSecurityKey_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SeNBSecurityKey; +asn_struct_free_f SeNBSecurityKey_free; +asn_struct_print_f SeNBSecurityKey_print; +asn_constr_check_f SeNBSecurityKey_constraint; +ber_type_decoder_f SeNBSecurityKey_decode_ber; +der_type_encoder_f SeNBSecurityKey_encode_der; +xer_type_decoder_f SeNBSecurityKey_decode_xer; +xer_type_encoder_f SeNBSecurityKey_encode_xer; +per_type_decoder_f SeNBSecurityKey_decode_uper; +per_type_encoder_f SeNBSecurityKey_encode_uper; +per_type_decoder_f SeNBSecurityKey_decode_aper; +per_type_encoder_f SeNBSecurityKey_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBSecurityKey_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c b/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c new file mode 100644 index 0000000..f86cede --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBtoMeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SeNBtoMeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SeNBtoMeNBContainer = { + "SeNBtoMeNBContainer", + "SeNBtoMeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_SeNBtoMeNBContainer_tags_1, + sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_SeNBtoMeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h b/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h new file mode 100644 index 0000000..e2bc275 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBtoMeNBContainer_H_ +#define _SeNBtoMeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBtoMeNBContainer */ +typedef OCTET_STRING_t SeNBtoMeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBtoMeNBContainer; +asn_struct_free_f SeNBtoMeNBContainer_free; +asn_struct_print_f SeNBtoMeNBContainer_print; +asn_constr_check_f SeNBtoMeNBContainer_constraint; +ber_type_decoder_f SeNBtoMeNBContainer_decode_ber; +der_type_encoder_f SeNBtoMeNBContainer_encode_der; +xer_type_decoder_f SeNBtoMeNBContainer_decode_xer; +xer_type_encoder_f SeNBtoMeNBContainer_encode_xer; +per_type_decoder_f SeNBtoMeNBContainer_decode_uper; +per_type_encoder_f SeNBtoMeNBContainer_encode_uper; +per_type_decoder_f SeNBtoMeNBContainer_decode_aper; +per_type_encoder_f SeNBtoMeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBtoMeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c b/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c new file mode 100644 index 0000000..50fd5f9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATDataUsageReport.h" + +static asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P101, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATDataUsageReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATDataUsageReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_specs_1 = { + sizeof(struct SecondaryRATDataUsageReport), + offsetof(struct SecondaryRATDataUsageReport, _asn_ctx), + asn_MAP_SecondaryRATDataUsageReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport = { + "SecondaryRATDataUsageReport", + "SecondaryRATDataUsageReport", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATDataUsageReport_tags_1, + sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATDataUsageReport_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATDataUsageReport_1, + 1, /* Elements count */ + &asn_SPC_SecondaryRATDataUsageReport_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h b/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h new file mode 100644 index 0000000..6a9cded --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATDataUsageReport_H_ +#define _SecondaryRATDataUsageReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SecondaryRATDataUsageReport */ +typedef struct SecondaryRATDataUsageReport { + ProtocolIE_Container_119P101_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATDataUsageReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATDataUsageReport_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c new file mode 100644 index 0000000..a3ab0e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c @@ -0,0 +1,148 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATUsageReport-Item.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_secondaryRATType_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_secondaryRATType_value2enum_3[] = { + { 0, 2, "nr" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_secondaryRATType_enum2value_3[] = { + 0 /* nr(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_secondaryRATType_specs_3 = { + asn_MAP_secondaryRATType_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_secondaryRATType_enum2value_3, /* 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_secondaryRATType_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_secondaryRATType_3 = { + "secondaryRATType", + "secondaryRATType", + &asn_OP_NativeEnumerated, + asn_DEF_secondaryRATType_tags_3, + sizeof(asn_DEF_secondaryRATType_tags_3) + /sizeof(asn_DEF_secondaryRATType_tags_3[0]) - 1, /* 1 */ + asn_DEF_secondaryRATType_tags_3, /* Same as above */ + sizeof(asn_DEF_secondaryRATType_tags_3) + /sizeof(asn_DEF_secondaryRATType_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_secondaryRATType_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_secondaryRATType_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, secondaryRATType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_secondaryRATType_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondaryRATType" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, e_RABUsageReportList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABUsageReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABUsageReportList" + }, + { ATF_POINTER, 1, offsetof(struct SecondaryRATUsageReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P190, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SecondaryRATUsageReport_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondaryRATType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e-RABUsageReportList */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_specs_1 = { + sizeof(struct SecondaryRATUsageReport_Item), + offsetof(struct SecondaryRATUsageReport_Item, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SecondaryRATUsageReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item = { + "SecondaryRATUsageReport-Item", + "SecondaryRATUsageReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_Item_tags_1, + sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_Item_1, + 4, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h new file mode 100644 index 0000000..c6566ad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATUsageReport_Item_H_ +#define _SecondaryRATUsageReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeEnumerated.h" +#include "E-RABUsageReportList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SecondaryRATUsageReport_Item__secondaryRATType { + SecondaryRATUsageReport_Item__secondaryRATType_nr = 0 + /* + * Enumeration is extensible + */ +} e_SecondaryRATUsageReport_Item__secondaryRATType; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SecondaryRATUsageReport-Item */ +typedef struct SecondaryRATUsageReport_Item { + E_RAB_ID_t e_RAB_ID; + long secondaryRATType; + E_RABUsageReportList_t e_RABUsageReportList; + 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; +} SecondaryRATUsageReport_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_secondaryRATType_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATUsageReport_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c new file mode 100644 index 0000000..4a2753b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATUsageReportList.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_SecondaryRATUsageReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SecondaryRATUsageReportList_specs_1 = { + sizeof(struct SecondaryRATUsageReportList), + offsetof(struct SecondaryRATUsageReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReportList = { + "SecondaryRATUsageReportList", + "SecondaryRATUsageReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SecondaryRATUsageReportList_tags_1, + sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SecondaryRATUsageReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_SecondaryRATUsageReportList_1, + 1, /* Single element */ + &asn_SPC_SecondaryRATUsageReportList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h new file mode 100644 index 0000000..2c30aec --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATUsageReportList_H_ +#define _SecondaryRATUsageReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* SecondaryRATUsageReportList */ +typedef struct SecondaryRATUsageReportList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReportList; +extern asn_SET_OF_specifics_t asn_SPC_SecondaryRATUsageReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_SecondaryRATUsageReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATUsageReportList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.c b/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.c new file mode 100644 index 0000000..f87a486 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.c @@ -0,0 +1,122 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, pCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, cellId), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, tAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, broadcastPLMNs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BroadcastPLMNs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "broadcastPLMNs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, eUTRA_Mode_Info), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_EUTRA_Mode_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRA-Mode-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P192, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCell_Information_oms_1[] = { 5 }; +static const ber_tlv_tag_t asn_DEF_ServedCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* broadcastPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* eUTRA-Mode-Info */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_specs_1 = { + sizeof(struct ServedCell_Information), + offsetof(struct ServedCell_Information, _asn_ctx), + asn_MAP_ServedCell_Information_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_ServedCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_Information = { + "ServedCell-Information", + "ServedCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_Information_tags_1, + sizeof(asn_DEF_ServedCell_Information_tags_1) + /sizeof(asn_DEF_ServedCell_Information_tags_1[0]), /* 1 */ + asn_DEF_ServedCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCell_Information_tags_1) + /sizeof(asn_DEF_ServedCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_Information_1, + 6, /* Elements count */ + &asn_SPC_ServedCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.h b/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.h new file mode 100644 index 0000000..af6e70f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCell-Information.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCell_Information_H_ +#define _ServedCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PCI.h" +#include "ECGI.h" +#include "TAC.h" +#include "BroadcastPLMNs-Item.h" +#include "EUTRA-Mode-Info.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedCell-Information */ +typedef struct ServedCell_Information { + PCI_t pCI; + ECGI_t cellId; + TAC_t tAC; + BroadcastPLMNs_Item_t broadcastPLMNs; + EUTRA_Mode_Info_t eUTRA_Mode_Info; + 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; +} ServedCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCell_Information_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCells.c b/E2Manager/asn1codec/e2ap_engine/ServedCells.c new file mode 100644 index 0000000..a43d94c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCells.c @@ -0,0 +1,134 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCells.h" + +#include "Neighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_ServedCells_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCells__Member, servedCellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedCells__Member, neighbour_Info), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Neighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbour-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCells__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P191, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* neighbour-Info */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedCells__Member), + offsetof(struct ServedCells__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCells_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCells_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ServedCells_specs_1 = { + sizeof(struct ServedCells), + offsetof(struct ServedCells, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCells = { + "ServedCells", + "ServedCells", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCells_tags_1, + sizeof(asn_DEF_ServedCells_tags_1) + /sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */ + asn_DEF_ServedCells_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCells_tags_1) + /sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCells_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCells_1, + 1, /* Single element */ + &asn_SPC_ServedCells_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCells.h b/E2Manager/asn1codec/e2ap_engine/ServedCells.h new file mode 100644 index 0000000..a5c6df7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCells.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCells_H_ +#define _ServedCells_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Neighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedCells__Member { + ServedCell_Information_t servedCellInfo; + struct Neighbour_Information *neighbour_Info; /* 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; +} ServedCells__Member; + +/* ServedCells */ +typedef struct ServedCells { + A_SEQUENCE_OF(ServedCells__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCells_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCells; +extern asn_SET_OF_specifics_t asn_SPC_ServedCells_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCells_1[1]; +extern asn_per_constraints_t asn_PER_type_ServedCells_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCells_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c new file mode 100644 index 0000000..1c8b9ee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToActivate-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item, ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecgi" + }, + { ATF_POINTER, 1, offsetof(struct ServedCellsToActivate_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCellsToActivate_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToActivate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_specs_1 = { + sizeof(struct ServedCellsToActivate_Item), + offsetof(struct ServedCellsToActivate_Item, _asn_ctx), + asn_MAP_ServedCellsToActivate_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ServedCellsToActivate_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item = { + "ServedCellsToActivate-Item", + "ServedCellsToActivate-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToActivate_Item_tags_1, + sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToActivate_Item_1, + 2, /* Elements count */ + &asn_SPC_ServedCellsToActivate_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h new file mode 100644 index 0000000..cf9bc29 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToActivate_Item_H_ +#define _ServedCellsToActivate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedCellsToActivate-Item */ +typedef struct ServedCellsToActivate_Item { + ECGI_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; +} ServedCellsToActivate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToActivate_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.c b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.c new file mode 100644 index 0000000..c2d8207 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToActivate.h" + +#include "ServedCellsToActivate-Item.h" +static asn_per_constraints_t asn_PER_type_ServedCellsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedCellsToActivate_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedCellsToActivate_specs_1 = { + sizeof(struct ServedCellsToActivate), + offsetof(struct ServedCellsToActivate, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate = { + "ServedCellsToActivate", + "ServedCellsToActivate", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCellsToActivate_tags_1, + sizeof(asn_DEF_ServedCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCellsToActivate_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCellsToActivate_1, + 1, /* Single element */ + &asn_SPC_ServedCellsToActivate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.h b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.h new file mode 100644 index 0000000..6cf4a22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToActivate.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToActivate_H_ +#define _ServedCellsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedCellsToActivate_Item; + +/* ServedCellsToActivate */ +typedef struct ServedCellsToActivate { + A_SEQUENCE_OF(struct ServedCellsToActivate_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToActivate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToActivate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.c b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.c new file mode 100644 index 0000000..d6b2e0d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToModify-Item.h" + +#include "Neighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item, old_ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-ecgi" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item, servedCellInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedCellsToModify_Item, neighbour_Info), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Neighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbour-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCellsToModify_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCellsToModify_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToModify_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* neighbour-Info */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_specs_1 = { + sizeof(struct ServedCellsToModify_Item), + offsetof(struct ServedCellsToModify_Item, _asn_ctx), + asn_MAP_ServedCellsToModify_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ServedCellsToModify_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item = { + "ServedCellsToModify-Item", + "ServedCellsToModify-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToModify_Item_tags_1, + sizeof(asn_DEF_ServedCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToModify_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToModify_Item_1, + 4, /* Elements count */ + &asn_SPC_ServedCellsToModify_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.h b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.h new file mode 100644 index 0000000..974cbb1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToModify_Item_H_ +#define _ServedCellsToModify_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Neighbour_Information; +struct ProtocolExtensionContainer; + +/* ServedCellsToModify-Item */ +typedef struct ServedCellsToModify_Item { + ECGI_t old_ecgi; + ServedCell_Information_t servedCellInfo; + struct Neighbour_Information *neighbour_Info; /* 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; +} ServedCellsToModify_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToModify_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.c b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.c new file mode 100644 index 0000000..f240ad0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToModify.h" + +#include "ServedCellsToModify-Item.h" +static asn_per_constraints_t asn_PER_type_ServedCellsToModify_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedCellsToModify_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedCellsToModify_specs_1 = { + sizeof(struct ServedCellsToModify), + offsetof(struct ServedCellsToModify, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify = { + "ServedCellsToModify", + "ServedCellsToModify", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCellsToModify_tags_1, + sizeof(asn_DEF_ServedCellsToModify_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToModify_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCellsToModify_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCellsToModify_1, + 1, /* Single element */ + &asn_SPC_ServedCellsToModify_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.h b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.h new file mode 100644 index 0000000..b85e08a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedCellsToModify.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToModify_H_ +#define _ServedCellsToModify_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedCellsToModify_Item; + +/* ServedCellsToModify */ +typedef struct ServedCellsToModify { + A_SEQUENCE_OF(struct ServedCellsToModify_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToModify_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToModify_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c new file mode 100644 index 0000000..fe2c0ad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c @@ -0,0 +1,134 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsENDCX2ManagementList.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsENDCX2ManagementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, servedEUTRACellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedEUTRACellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, nrNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedEUTRACellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedEUTRAcellsENDCX2ManagementList__Member), + offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2ManagementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsENDCX2ManagementList_specs_1 = { + sizeof(struct ServedEUTRAcellsENDCX2ManagementList), + offsetof(struct ServedEUTRAcellsENDCX2ManagementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList = { + "ServedEUTRAcellsENDCX2ManagementList", + "ServedEUTRAcellsENDCX2ManagementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsENDCX2ManagementList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsENDCX2ManagementList_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsENDCX2ManagementList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h new file mode 100644 index 0000000..0d5a406 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsENDCX2ManagementList_H_ +#define _ServedEUTRAcellsENDCX2ManagementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedEUTRAcellsENDCX2ManagementList__Member { + ServedCell_Information_t servedEUTRACellInfo; + struct NRNeighbour_Information *nrNeighbourInfo; /* 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; +} ServedEUTRAcellsENDCX2ManagementList__Member; + +/* ServedEUTRAcellsENDCX2ManagementList */ +typedef struct ServedEUTRAcellsENDCX2ManagementList { + A_SEQUENCE_OF(ServedEUTRAcellsENDCX2ManagementList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsENDCX2ManagementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsENDCX2ManagementList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c new file mode 100644 index 0000000..817e6fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsToDeleteListENDCConfUpd.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsToDeleteListENDCConfUpd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToDeleteListENDCConfUpd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsToDeleteListENDCConfUpd_specs_1 = { + sizeof(struct ServedEUTRAcellsToDeleteListENDCConfUpd), + offsetof(struct ServedEUTRAcellsToDeleteListENDCConfUpd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd = { + "ServedEUTRAcellsToDeleteListENDCConfUpd", + "ServedEUTRAcellsToDeleteListENDCConfUpd", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsToDeleteListENDCConfUpd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsToDeleteListENDCConfUpd_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsToDeleteListENDCConfUpd_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h new file mode 100644 index 0000000..94cea60 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ +#define _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ServedEUTRAcellsToDeleteListENDCConfUpd */ +typedef struct ServedEUTRAcellsToDeleteListENDCConfUpd { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToDeleteListENDCConfUpd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c new file mode 100644 index 0000000..8e1118e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c @@ -0,0 +1,144 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsToModifyListENDCConfUpd.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsToModifyListENDCConfUpd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, old_ECGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, servedEUTRACellInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedEUTRACellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, nrNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P99, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-ECGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedEUTRACellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_specs_1 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd = { + "ServedEUTRAcellsToModifyListENDCConfUpd", + "ServedEUTRAcellsToModifyListENDCConfUpd", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsToModifyListENDCConfUpd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h new file mode 100644 index 0000000..41f9a39 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsToModifyListENDCConfUpd_H_ +#define _ServedEUTRAcellsToModifyListENDCConfUpd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd__Member { + ECGI_t old_ECGI; + ServedCell_Information_t servedEUTRACellInfo; + struct NRNeighbour_Information *nrNeighbourInfo; /* 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; +} ServedEUTRAcellsToModifyListENDCConfUpd__Member; + +/* ServedEUTRAcellsToModifyListENDCConfUpd */ +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd { + A_SEQUENCE_OF(ServedEUTRAcellsToModifyListENDCConfUpd__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToModifyListENDCConfUpd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsToModifyListENDCConfUpd_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.c b/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.c new file mode 100644 index 0000000..35d5558 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.c @@ -0,0 +1,198 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +#include "FDD-InfoServedNRCell-Information.h" +#include "TDD-InfoServedNRCell-Information.h" +static asn_per_constraints_t asn_PER_type_nrModeInfo_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nrModeInfo_7[] = { + { ATF_POINTER, 0, offsetof(struct ServedNRCell_Information__nrModeInfo, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_InfoServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct ServedNRCell_Information__nrModeInfo, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_InfoServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_nrModeInfo_tag2el_7[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +static asn_CHOICE_specifics_t asn_SPC_nrModeInfo_specs_7 = { + sizeof(struct ServedNRCell_Information__nrModeInfo), + offsetof(struct ServedNRCell_Information__nrModeInfo, _asn_ctx), + offsetof(struct ServedNRCell_Information__nrModeInfo, present), + sizeof(((struct ServedNRCell_Information__nrModeInfo *)0)->present), + asn_MAP_nrModeInfo_tag2el_7, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nrModeInfo_7 = { + "nrModeInfo", + "nrModeInfo", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_nrModeInfo_constr_7, CHOICE_constraint }, + asn_MBR_nrModeInfo_7, + 2, /* Elements count */ + &asn_SPC_nrModeInfo_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrpCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRPCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrpCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRCell_Information, fiveGS_TAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveGS_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fiveGS-TAC" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCell_Information, configured_TAC), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "configured-TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, broadcastPLMNs), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BroadcastPLMNs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "broadcastPLMNs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrModeInfo), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_nrModeInfo_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrModeInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, measurementTimingConfiguration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementTimingConfiguration" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P92, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCell_Information_oms_1[] = { 2, 3, 7 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrpCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* fiveGS-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* configured-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* broadcastPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nrModeInfo */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* measurementTimingConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_specs_1 = { + sizeof(struct ServedNRCell_Information), + offsetof(struct ServedNRCell_Information, _asn_ctx), + asn_MAP_ServedNRCell_Information_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_ServedNRCell_Information_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information = { + "ServedNRCell-Information", + "ServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCell_Information_tags_1, + sizeof(asn_DEF_ServedNRCell_Information_tags_1) + /sizeof(asn_DEF_ServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCell_Information_tags_1) + /sizeof(asn_DEF_ServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCell_Information_1, + 8, /* Elements count */ + &asn_SPC_ServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.h b/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.h new file mode 100644 index 0000000..d751ee5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCell-Information.h @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCell_Information_H_ +#define _ServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRPCI.h" +#include "NRCGI.h" +#include "FiveGS-TAC.h" +#include "TAC.h" +#include "BroadcastPLMNs-Item.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServedNRCell_Information__nrModeInfo_PR { + ServedNRCell_Information__nrModeInfo_PR_NOTHING, /* No components present */ + ServedNRCell_Information__nrModeInfo_PR_fdd, + ServedNRCell_Information__nrModeInfo_PR_tdd + /* Extensions may appear below */ + +} ServedNRCell_Information__nrModeInfo_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct FDD_InfoServedNRCell_Information; +struct TDD_InfoServedNRCell_Information; + +/* ServedNRCell-Information */ +typedef struct ServedNRCell_Information { + NRPCI_t nrpCI; + NRCGI_t nrCellID; + FiveGS_TAC_t *fiveGS_TAC; /* OPTIONAL */ + TAC_t *configured_TAC; /* OPTIONAL */ + BroadcastPLMNs_Item_t broadcastPLMNs; + struct ServedNRCell_Information__nrModeInfo { + ServedNRCell_Information__nrModeInfo_PR present; + union ServedNRCell_Information__nrModeInfo_u { + struct FDD_InfoServedNRCell_Information *fdd; + struct TDD_InfoServedNRCell_Information *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nrModeInfo; + OCTET_STRING_t measurementTimingConfiguration; + 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; +} ServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCell_Information_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c new file mode 100644 index 0000000..52f6051 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToActivate-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCellsToActivate_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P101, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCellsToActivate_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToActivate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_specs_1 = { + sizeof(struct ServedNRCellsToActivate_Item), + offsetof(struct ServedNRCellsToActivate_Item, _asn_ctx), + asn_MAP_ServedNRCellsToActivate_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ServedNRCellsToActivate_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item = { + "ServedNRCellsToActivate-Item", + "ServedNRCellsToActivate-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToActivate_Item_tags_1, + sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToActivate_Item_1, + 2, /* Elements count */ + &asn_SPC_ServedNRCellsToActivate_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h new file mode 100644 index 0000000..565a7f7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToActivate_Item_H_ +#define _ServedNRCellsToActivate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedNRCellsToActivate-Item */ +typedef struct ServedNRCellsToActivate_Item { + NRCGI_t nrCellID; + 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; +} ServedNRCellsToActivate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToActivate_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.c b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.c new file mode 100644 index 0000000..69a0f61 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToActivate.h" + +#include "ServedNRCellsToActivate-Item.h" +static asn_per_constraints_t asn_PER_type_ServedNRCellsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRCellsToActivate_specs_1 = { + sizeof(struct ServedNRCellsToActivate), + offsetof(struct ServedNRCellsToActivate, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate = { + "ServedNRCellsToActivate", + "ServedNRCellsToActivate", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRCellsToActivate_tags_1, + sizeof(asn_DEF_ServedNRCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRCellsToActivate_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRCellsToActivate_1, + 1, /* Single element */ + &asn_SPC_ServedNRCellsToActivate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.h b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.h new file mode 100644 index 0000000..4687aeb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToActivate.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToActivate_H_ +#define _ServedNRCellsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedNRCellsToActivate_Item; + +/* ServedNRCellsToActivate */ +typedef struct ServedNRCellsToActivate { + A_SEQUENCE_OF(struct ServedNRCellsToActivate_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToActivate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToActivate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c new file mode 100644 index 0000000..3a52c22 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c @@ -0,0 +1,113 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToModify-Item.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item, old_nrcgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-nrcgi" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item, servedNRCellInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedNRCellInformation" + }, + { ATF_POINTER, 3, offsetof(struct ServedNRCellsToModify_Item, nrNeighbourInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInformation" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRCellsToModify_Item, nrDeactivationIndication), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrDeactivationIndication" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCellsToModify_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P100, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCellsToModify_Item_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToModify_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToModify_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-nrcgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedNRCellInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrNeighbourInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrDeactivationIndication */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_specs_1 = { + sizeof(struct ServedNRCellsToModify_Item), + offsetof(struct ServedNRCellsToModify_Item, _asn_ctx), + asn_MAP_ServedNRCellsToModify_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ServedNRCellsToModify_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item = { + "ServedNRCellsToModify-Item", + "ServedNRCellsToModify-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToModify_Item_tags_1, + sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToModify_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToModify_Item_1, + 5, /* Elements count */ + &asn_SPC_ServedNRCellsToModify_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h new file mode 100644 index 0000000..54094c9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToModify_Item_H_ +#define _ServedNRCellsToModify_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "ServedNRCell-Information.h" +#include "DeactivationIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* ServedNRCellsToModify-Item */ +typedef struct ServedNRCellsToModify_Item { + NRCGI_t old_nrcgi; + ServedNRCell_Information_t servedNRCellInformation; + struct NRNeighbour_Information *nrNeighbourInformation; /* OPTIONAL */ + DeactivationIndication_t *nrDeactivationIndication; /* 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; +} ServedNRCellsToModify_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToModify_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c new file mode 100644 index 0000000..f3d428c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c @@ -0,0 +1,134 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsENDCX2ManagementList.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsENDCX2ManagementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, servedNRCellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedNRCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, nRNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P91, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedNRCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedNRcellsENDCX2ManagementList__Member), + offsetof(struct ServedNRcellsENDCX2ManagementList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedNRcellsENDCX2ManagementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsENDCX2ManagementList_specs_1 = { + sizeof(struct ServedNRcellsENDCX2ManagementList), + offsetof(struct ServedNRcellsENDCX2ManagementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsENDCX2ManagementList = { + "ServedNRcellsENDCX2ManagementList", + "ServedNRcellsENDCX2ManagementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1, + sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsENDCX2ManagementList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsENDCX2ManagementList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsENDCX2ManagementList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h new file mode 100644 index 0000000..ca7e06f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsENDCX2ManagementList_H_ +#define _ServedNRcellsENDCX2ManagementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedNRCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedNRcellsENDCX2ManagementList__Member { + ServedNRCell_Information_t servedNRCellInfo; + struct NRNeighbour_Information *nRNeighbourInfo; /* 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; +} ServedNRcellsENDCX2ManagementList__Member; + +/* ServedNRcellsENDCX2ManagementList */ +typedef struct ServedNRcellsENDCX2ManagementList { + A_SEQUENCE_OF(ServedNRcellsENDCX2ManagementList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsENDCX2ManagementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsENDCX2ManagementList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsENDCX2ManagementList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c new file mode 100644 index 0000000..9c15f7d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsToDeleteENDCConfUpdList.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsToDeleteENDCConfUpdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRcellsToDeleteENDCConfUpdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsToDeleteENDCConfUpdList_specs_1 = { + sizeof(struct ServedNRcellsToDeleteENDCConfUpdList), + offsetof(struct ServedNRcellsToDeleteENDCConfUpdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList = { + "ServedNRcellsToDeleteENDCConfUpdList", + "ServedNRcellsToDeleteENDCConfUpdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1, + sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsToDeleteENDCConfUpdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsToDeleteENDCConfUpdList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsToDeleteENDCConfUpdList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h new file mode 100644 index 0000000..8bb2cf0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsToDeleteENDCConfUpdList_H_ +#define _ServedNRcellsToDeleteENDCConfUpdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ServedNRcellsToDeleteENDCConfUpdList */ +typedef struct ServedNRcellsToDeleteENDCConfUpdList { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsToDeleteENDCConfUpdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsToDeleteENDCConfUpdList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c new file mode 100644 index 0000000..fd1b785 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsToModifyENDCConfUpdList.h" + +#include "ServedNRCellsToModify-Item.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsToModifyENDCConfUpdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRcellsToModifyENDCConfUpdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToModify_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsToModifyENDCConfUpdList_specs_1 = { + sizeof(struct ServedNRcellsToModifyENDCConfUpdList), + offsetof(struct ServedNRcellsToModifyENDCConfUpdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList = { + "ServedNRcellsToModifyENDCConfUpdList", + "ServedNRcellsToModifyENDCConfUpdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1, + sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsToModifyENDCConfUpdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsToModifyENDCConfUpdList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsToModifyENDCConfUpdList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h new file mode 100644 index 0000000..864ee5d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsToModifyENDCConfUpdList_H_ +#define _ServedNRcellsToModifyENDCConfUpdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedNRCellsToModify_Item; + +/* ServedNRcellsToModifyENDCConfUpdList */ +typedef struct ServedNRcellsToModifyENDCConfUpdList { + A_SEQUENCE_OF(struct ServedNRCellsToModify_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsToModifyENDCConfUpdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsToModifyENDCConfUpdList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ServiceType.c b/E2Manager/asn1codec/e2ap_engine/ServiceType.c new file mode 100644 index 0000000..acdae38 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServiceType.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServiceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ServiceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ServiceType_value2enum_1[] = { + { 0, 25, "qMC-for-streaming-service" }, + { 1, 20, "qMC-for-MTSI-service" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ServiceType_enum2value_1[] = { + 1, /* qMC-for-MTSI-service(1) */ + 0 /* qMC-for-streaming-service(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ServiceType_specs_1 = { + asn_MAP_ServiceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ServiceType_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_ServiceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ServiceType = { + "ServiceType", + "ServiceType", + &asn_OP_NativeEnumerated, + asn_DEF_ServiceType_tags_1, + sizeof(asn_DEF_ServiceType_tags_1) + /sizeof(asn_DEF_ServiceType_tags_1[0]), /* 1 */ + asn_DEF_ServiceType_tags_1, /* Same as above */ + sizeof(asn_DEF_ServiceType_tags_1) + /sizeof(asn_DEF_ServiceType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServiceType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ServiceType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ServiceType.h b/E2Manager/asn1codec/e2ap_engine/ServiceType.h new file mode 100644 index 0000000..934a446 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ServiceType.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServiceType_H_ +#define _ServiceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServiceType { + ServiceType_qMC_for_streaming_service = 0, + ServiceType_qMC_for_MTSI_service = 1 + /* + * Enumeration is extensible + */ +} e_ServiceType; + +/* ServiceType */ +typedef long ServiceType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ServiceType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ServiceType; +extern const asn_INTEGER_specifics_t asn_SPC_ServiceType_specs_1; +asn_struct_free_f ServiceType_free; +asn_struct_print_f ServiceType_print; +asn_constr_check_f ServiceType_constraint; +ber_type_decoder_f ServiceType_decode_ber; +der_type_encoder_f ServiceType_encode_der; +xer_type_decoder_f ServiceType_decode_xer; +xer_type_encoder_f ServiceType_encode_xer; +per_type_decoder_f ServiceType_decode_uper; +per_type_encoder_f ServiceType_encode_uper; +per_type_decoder_f ServiceType_decode_aper; +per_type_encoder_f ServiceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServiceType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c b/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c new file mode 100644 index 0000000..46381d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNB-UE-X2AP-ID.h" + +int +SgNB_UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNB_UE_X2AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +const asn_INTEGER_specifics_t asn_SPC_SgNB_UE_X2AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_SgNB_UE_X2AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNB_UE_X2AP_ID = { + "SgNB-UE-X2AP-ID", + "SgNB-UE-X2AP-ID", + &asn_OP_NativeInteger, + asn_DEF_SgNB_UE_X2AP_ID_tags_1, + sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1[0]), /* 1 */ + asn_DEF_SgNB_UE_X2AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNB_UE_X2AP_ID_constr_1, SgNB_UE_X2AP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_SgNB_UE_X2AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h b/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h new file mode 100644 index 0000000..84f79e4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNB_UE_X2AP_ID_H_ +#define _SgNB_UE_X2AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNB-UE-X2AP-ID */ +typedef unsigned long SgNB_UE_X2AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNB_UE_X2AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNB_UE_X2AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_SgNB_UE_X2AP_ID_specs_1; +asn_struct_free_f SgNB_UE_X2AP_ID_free; +asn_struct_print_f SgNB_UE_X2AP_ID_print; +asn_constr_check_f SgNB_UE_X2AP_ID_constraint; +ber_type_decoder_f SgNB_UE_X2AP_ID_decode_ber; +der_type_encoder_f SgNB_UE_X2AP_ID_encode_der; +xer_type_decoder_f SgNB_UE_X2AP_ID_decode_xer; +xer_type_encoder_f SgNB_UE_X2AP_ID_encode_xer; +per_type_decoder_f SgNB_UE_X2AP_ID_decode_uper; +per_type_encoder_f SgNB_UE_X2AP_ID_encode_uper; +per_type_decoder_f SgNB_UE_X2AP_ID_decode_aper; +per_type_encoder_f SgNB_UE_X2AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNB_UE_X2AP_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.c b/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.c new file mode 100644 index 0000000..a33d2e3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBActivityNotification.h" + +static asn_TYPE_member_t asn_MBR_SgNBActivityNotification_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P102, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBActivityNotification_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBActivityNotification_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_specs_1 = { + sizeof(struct SgNBActivityNotification), + offsetof(struct SgNBActivityNotification, _asn_ctx), + asn_MAP_SgNBActivityNotification_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification = { + "SgNBActivityNotification", + "SgNBActivityNotification", + &asn_OP_SEQUENCE, + asn_DEF_SgNBActivityNotification_tags_1, + sizeof(asn_DEF_SgNBActivityNotification_tags_1) + /sizeof(asn_DEF_SgNBActivityNotification_tags_1[0]), /* 1 */ + asn_DEF_SgNBActivityNotification_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBActivityNotification_tags_1) + /sizeof(asn_DEF_SgNBActivityNotification_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBActivityNotification_1, + 1, /* Elements count */ + &asn_SPC_SgNBActivityNotification_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.h b/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.h new file mode 100644 index 0000000..7e7aa33 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBActivityNotification.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBActivityNotification_H_ +#define _SgNBActivityNotification_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBActivityNotification */ +typedef struct SgNBActivityNotification { + ProtocolIE_Container_119P102_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBActivityNotification_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBActivityNotification_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.c b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.c new file mode 100644 index 0000000..d7ac136 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_specs_1 = { + sizeof(struct SgNBAdditionRequest), + offsetof(struct SgNBAdditionRequest, _asn_ctx), + asn_MAP_SgNBAdditionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest = { + "SgNBAdditionRequest", + "SgNBAdditionRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequest_tags_1, + sizeof(asn_DEF_SgNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.h b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.h new file mode 100644 index 0000000..cc775af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequest_H_ +#define _SgNBAdditionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequest */ +typedef struct SgNBAdditionRequest { + ProtocolIE_Container_119P64_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c new file mode 100644 index 0000000..6cd8870 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_specs_1 = { + sizeof(struct SgNBAdditionRequestAcknowledge), + offsetof(struct SgNBAdditionRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBAdditionRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge = { + "SgNBAdditionRequestAcknowledge", + "SgNBAdditionRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h new file mode 100644 index 0000000..1ff4f9b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequestAcknowledge_H_ +#define _SgNBAdditionRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequestAcknowledge */ +typedef struct SgNBAdditionRequestAcknowledge { + ProtocolIE_Container_119P65_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c new file mode 100644 index 0000000..38db112 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_specs_1 = { + sizeof(struct SgNBAdditionRequestReject), + offsetof(struct SgNBAdditionRequestReject, _asn_ctx), + asn_MAP_SgNBAdditionRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject = { + "SgNBAdditionRequestReject", + "SgNBAdditionRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestReject_tags_1, + sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h new file mode 100644 index 0000000..56ed084 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequestReject_H_ +#define _SgNBAdditionRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequestReject */ +typedef struct SgNBAdditionRequestReject { + ProtocolIE_Container_119P66_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequestReject_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.c b/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.c new file mode 100644 index 0000000..6d38e9e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_specs_1 = { + sizeof(struct SgNBChangeConfirm), + offsetof(struct SgNBChangeConfirm, _asn_ctx), + asn_MAP_SgNBChangeConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm = { + "SgNBChangeConfirm", + "SgNBChangeConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeConfirm_tags_1, + sizeof(asn_DEF_SgNBChangeConfirm_tags_1) + /sizeof(asn_DEF_SgNBChangeConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeConfirm_tags_1) + /sizeof(asn_DEF_SgNBChangeConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.h b/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.h new file mode 100644 index 0000000..e130fc4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeConfirm_H_ +#define _SgNBChangeConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeConfirm */ +typedef struct SgNBChangeConfirm { + ProtocolIE_Container_119P81_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.c b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.c new file mode 100644 index 0000000..8198444 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeRefuse.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_specs_1 = { + sizeof(struct SgNBChangeRefuse), + offsetof(struct SgNBChangeRefuse, _asn_ctx), + asn_MAP_SgNBChangeRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse = { + "SgNBChangeRefuse", + "SgNBChangeRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRefuse_tags_1, + sizeof(asn_DEF_SgNBChangeRefuse_tags_1) + /sizeof(asn_DEF_SgNBChangeRefuse_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRefuse_tags_1) + /sizeof(asn_DEF_SgNBChangeRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRefuse_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeRefuse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.h b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.h new file mode 100644 index 0000000..36de105 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRefuse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeRefuse_H_ +#define _SgNBChangeRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeRefuse */ +typedef struct SgNBChangeRefuse { + ProtocolIE_Container_119P83_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeRefuse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.c b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.c new file mode 100644 index 0000000..6edae95 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_specs_1 = { + sizeof(struct SgNBChangeRequired), + offsetof(struct SgNBChangeRequired, _asn_ctx), + asn_MAP_SgNBChangeRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired = { + "SgNBChangeRequired", + "SgNBChangeRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRequired_tags_1, + sizeof(asn_DEF_SgNBChangeRequired_tags_1) + /sizeof(asn_DEF_SgNBChangeRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRequired_tags_1) + /sizeof(asn_DEF_SgNBChangeRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.h b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.h new file mode 100644 index 0000000..669746a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBChangeRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeRequired_H_ +#define _SgNBChangeRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeRequired */ +typedef struct SgNBChangeRequired { + ProtocolIE_Container_119P80_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c b/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c new file mode 100644 index 0000000..0df013d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBCoordinationAssistanceInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SgNBCoordinationAssistanceInformation_value2enum_1[] = { + { 0, 25, "coordination-not-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SgNBCoordinationAssistanceInformation_enum2value_1[] = { + 0 /* coordination-not-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SgNBCoordinationAssistanceInformation_specs_1 = { + asn_MAP_SgNBCoordinationAssistanceInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SgNBCoordinationAssistanceInformation_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_SgNBCoordinationAssistanceInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCoordinationAssistanceInformation = { + "SgNBCoordinationAssistanceInformation", + "SgNBCoordinationAssistanceInformation", + &asn_OP_NativeEnumerated, + asn_DEF_SgNBCoordinationAssistanceInformation_tags_1, + sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + asn_DEF_SgNBCoordinationAssistanceInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SgNBCoordinationAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h b/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h new file mode 100644 index 0000000..2015800 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBCoordinationAssistanceInformation_H_ +#define _SgNBCoordinationAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SgNBCoordinationAssistanceInformation { + SgNBCoordinationAssistanceInformation_coordination_not_required = 0 + /* + * Enumeration is extensible + */ +} e_SgNBCoordinationAssistanceInformation; + +/* SgNBCoordinationAssistanceInformation */ +typedef long SgNBCoordinationAssistanceInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNBCoordinationAssistanceInformation; +extern const asn_INTEGER_specifics_t asn_SPC_SgNBCoordinationAssistanceInformation_specs_1; +asn_struct_free_f SgNBCoordinationAssistanceInformation_free; +asn_struct_print_f SgNBCoordinationAssistanceInformation_print; +asn_constr_check_f SgNBCoordinationAssistanceInformation_constraint; +ber_type_decoder_f SgNBCoordinationAssistanceInformation_decode_ber; +der_type_encoder_f SgNBCoordinationAssistanceInformation_encode_der; +xer_type_decoder_f SgNBCoordinationAssistanceInformation_decode_xer; +xer_type_encoder_f SgNBCoordinationAssistanceInformation_encode_xer; +per_type_decoder_f SgNBCoordinationAssistanceInformation_decode_uper; +per_type_encoder_f SgNBCoordinationAssistanceInformation_encode_uper; +per_type_decoder_f SgNBCoordinationAssistanceInformation_decode_aper; +per_type_encoder_f SgNBCoordinationAssistanceInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBCoordinationAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c b/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c new file mode 100644 index 0000000..c88a970 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBCounterCheckRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBCounterCheckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBCounterCheckRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_specs_1 = { + sizeof(struct SgNBCounterCheckRequest), + offsetof(struct SgNBCounterCheckRequest, _asn_ctx), + asn_MAP_SgNBCounterCheckRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest = { + "SgNBCounterCheckRequest", + "SgNBCounterCheckRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBCounterCheckRequest_tags_1, + sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBCounterCheckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBCounterCheckRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBCounterCheckRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h b/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h new file mode 100644 index 0000000..c7ba22c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBCounterCheckRequest_H_ +#define _SgNBCounterCheckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBCounterCheckRequest */ +typedef struct SgNBCounterCheckRequest { + ProtocolIE_Container_119P79_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBCounterCheckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBCounterCheckRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.c new file mode 100644 index 0000000..8931ac2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_specs_1 = { + sizeof(struct SgNBModificationConfirm), + offsetof(struct SgNBModificationConfirm, _asn_ctx), + asn_MAP_SgNBModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm = { + "SgNBModificationConfirm", + "SgNBModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationConfirm_tags_1, + sizeof(asn_DEF_SgNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SgNBModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SgNBModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.h new file mode 100644 index 0000000..f12af6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationConfirm_H_ +#define _SgNBModificationConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationConfirm */ +typedef struct SgNBModificationConfirm { + ProtocolIE_Container_119P72_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.c new file mode 100644 index 0000000..0c132fd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRefuse.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_specs_1 = { + sizeof(struct SgNBModificationRefuse), + offsetof(struct SgNBModificationRefuse, _asn_ctx), + asn_MAP_SgNBModificationRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse = { + "SgNBModificationRefuse", + "SgNBModificationRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRefuse_tags_1, + sizeof(asn_DEF_SgNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SgNBModificationRefuse_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SgNBModificationRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRefuse_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRefuse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.h new file mode 100644 index 0000000..751f29d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRefuse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRefuse_H_ +#define _SgNBModificationRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRefuse */ +typedef struct SgNBModificationRefuse { + ProtocolIE_Container_119P73_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRefuse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.c new file mode 100644 index 0000000..c46e23e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_specs_1 = { + sizeof(struct SgNBModificationRequest), + offsetof(struct SgNBModificationRequest, _asn_ctx), + asn_MAP_SgNBModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest = { + "SgNBModificationRequest", + "SgNBModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequest_tags_1, + sizeof(asn_DEF_SgNBModificationRequest_tags_1) + /sizeof(asn_DEF_SgNBModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequest_tags_1) + /sizeof(asn_DEF_SgNBModificationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.h new file mode 100644 index 0000000..705a36c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequest_H_ +#define _SgNBModificationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequest */ +typedef struct SgNBModificationRequest { + ProtocolIE_Container_119P68_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c new file mode 100644 index 0000000..8100bb5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_specs_1 = { + sizeof(struct SgNBModificationRequestAcknowledge), + offsetof(struct SgNBModificationRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBModificationRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge = { + "SgNBModificationRequestAcknowledge", + "SgNBModificationRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h new file mode 100644 index 0000000..2735ee3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequestAcknowledge_H_ +#define _SgNBModificationRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequestAcknowledge */ +typedef struct SgNBModificationRequestAcknowledge { + ProtocolIE_Container_119P69_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.c new file mode 100644 index 0000000..3008172 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_specs_1 = { + sizeof(struct SgNBModificationRequestReject), + offsetof(struct SgNBModificationRequestReject, _asn_ctx), + asn_MAP_SgNBModificationRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject = { + "SgNBModificationRequestReject", + "SgNBModificationRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestReject_tags_1, + sizeof(asn_DEF_SgNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.h new file mode 100644 index 0000000..3140702 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequestReject.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequestReject_H_ +#define _SgNBModificationRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequestReject */ +typedef struct SgNBModificationRequestReject { + ProtocolIE_Container_119P70_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequestReject_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.c b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.c new file mode 100644 index 0000000..e21906f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_specs_1 = { + sizeof(struct SgNBModificationRequired), + offsetof(struct SgNBModificationRequired, _asn_ctx), + asn_MAP_SgNBModificationRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired = { + "SgNBModificationRequired", + "SgNBModificationRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequired_tags_1, + sizeof(asn_DEF_SgNBModificationRequired_tags_1) + /sizeof(asn_DEF_SgNBModificationRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequired_tags_1) + /sizeof(asn_DEF_SgNBModificationRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.h b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.h new file mode 100644 index 0000000..19648fe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBModificationRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequired_H_ +#define _SgNBModificationRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequired */ +typedef struct SgNBModificationRequired { + ProtocolIE_Container_119P71_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c b/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c new file mode 100644 index 0000000..20ffee1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReconfigurationComplete.h" + +static asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReconfigurationComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReconfigurationComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_specs_1 = { + sizeof(struct SgNBReconfigurationComplete), + offsetof(struct SgNBReconfigurationComplete, _asn_ctx), + asn_MAP_SgNBReconfigurationComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete = { + "SgNBReconfigurationComplete", + "SgNBReconfigurationComplete", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReconfigurationComplete_tags_1, + sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1[0]), /* 1 */ + asn_DEF_SgNBReconfigurationComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReconfigurationComplete_1, + 1, /* Elements count */ + &asn_SPC_SgNBReconfigurationComplete_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h b/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h new file mode 100644 index 0000000..dc2c221 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReconfigurationComplete_H_ +#define _SgNBReconfigurationComplete_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReconfigurationComplete */ +typedef struct SgNBReconfigurationComplete { + ProtocolIE_Container_119P67_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReconfigurationComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReconfigurationComplete_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.c b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.c new file mode 100644 index 0000000..59aaa4d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_specs_1 = { + sizeof(struct SgNBReleaseConfirm), + offsetof(struct SgNBReleaseConfirm, _asn_ctx), + asn_MAP_SgNBReleaseConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm = { + "SgNBReleaseConfirm", + "SgNBReleaseConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseConfirm_tags_1, + sizeof(asn_DEF_SgNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SgNBReleaseConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SgNBReleaseConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseConfirm_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.h b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.h new file mode 100644 index 0000000..59f4a32 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseConfirm.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseConfirm_H_ +#define _SgNBReleaseConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseConfirm */ +typedef struct SgNBReleaseConfirm { + ProtocolIE_Container_119P78_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseConfirm_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.c b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.c new file mode 100644 index 0000000..dad9af6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_specs_1 = { + sizeof(struct SgNBReleaseRequest), + offsetof(struct SgNBReleaseRequest, _asn_ctx), + asn_MAP_SgNBReleaseRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest = { + "SgNBReleaseRequest", + "SgNBReleaseRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequest_tags_1, + sizeof(asn_DEF_SgNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.h b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.h new file mode 100644 index 0000000..3b6b612 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequest_H_ +#define _SgNBReleaseRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequest */ +typedef struct SgNBReleaseRequest { + ProtocolIE_Container_119P74_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c new file mode 100644 index 0000000..1c44d86 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_specs_1 = { + sizeof(struct SgNBReleaseRequestAcknowledge), + offsetof(struct SgNBReleaseRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBReleaseRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge = { + "SgNBReleaseRequestAcknowledge", + "SgNBReleaseRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h new file mode 100644 index 0000000..8285726 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequestAcknowledge_H_ +#define _SgNBReleaseRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequestAcknowledge */ +typedef struct SgNBReleaseRequestAcknowledge { + ProtocolIE_Container_119P75_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c new file mode 100644 index 0000000..378530b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_specs_1 = { + sizeof(struct SgNBReleaseRequestReject), + offsetof(struct SgNBReleaseRequestReject, _asn_ctx), + asn_MAP_SgNBReleaseRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject = { + "SgNBReleaseRequestReject", + "SgNBReleaseRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestReject_tags_1, + sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h new file mode 100644 index 0000000..497a007 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequestReject_H_ +#define _SgNBReleaseRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequestReject */ +typedef struct SgNBReleaseRequestReject { + ProtocolIE_Container_119P76_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequestReject_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.c b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.c new file mode 100644 index 0000000..eb03869 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_specs_1 = { + sizeof(struct SgNBReleaseRequired), + offsetof(struct SgNBReleaseRequired, _asn_ctx), + asn_MAP_SgNBReleaseRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired = { + "SgNBReleaseRequired", + "SgNBReleaseRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequired_tags_1, + sizeof(asn_DEF_SgNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequired_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.h b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.h new file mode 100644 index 0000000..1b4fda1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBReleaseRequired.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequired_H_ +#define _SgNBReleaseRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequired */ +typedef struct SgNBReleaseRequired { + ProtocolIE_Container_119P77_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequired_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c b/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c new file mode 100644 index 0000000..d37df90 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c @@ -0,0 +1,174 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBResourceCoordinationInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_uLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* 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_dLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* 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_uLCoordinationInformation_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dLCoordinationInformation_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformation, nR_CGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nR-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformation, uLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_uLCoordinationInformation_constr_3, memb_uLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "uLCoordinationInformation" + }, + { ATF_POINTER, 2, offsetof(struct SgNBResourceCoordinationInformation, dLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dLCoordinationInformation_constr_4, memb_dLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "dLCoordinationInformation" + }, + { ATF_POINTER, 1, offsetof(struct SgNBResourceCoordinationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P193, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SgNBResourceCoordinationInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_SgNBResourceCoordinationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBResourceCoordinationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformation_specs_1 = { + sizeof(struct SgNBResourceCoordinationInformation), + offsetof(struct SgNBResourceCoordinationInformation, _asn_ctx), + asn_MAP_SgNBResourceCoordinationInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SgNBResourceCoordinationInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformation = { + "SgNBResourceCoordinationInformation", + "SgNBResourceCoordinationInformation", + &asn_OP_SEQUENCE, + asn_DEF_SgNBResourceCoordinationInformation_tags_1, + sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + asn_DEF_SgNBResourceCoordinationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBResourceCoordinationInformation_1, + 4, /* Elements count */ + &asn_SPC_SgNBResourceCoordinationInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h b/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h new file mode 100644 index 0000000..6541a66 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBResourceCoordinationInformation_H_ +#define _SgNBResourceCoordinationInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SgNBResourceCoordinationInformation */ +typedef struct SgNBResourceCoordinationInformation { + NRCGI_t nR_CGI; + BIT_STRING_t uLCoordinationInformation; + BIT_STRING_t *dLCoordinationInformation; /* 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; +} SgNBResourceCoordinationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBResourceCoordinationInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.c b/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.c new file mode 100644 index 0000000..72a9f33 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBSecurityKey.h" + +int +SgNBSecurityKey_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNBSecurityKey_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SgNBSecurityKey_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBSecurityKey = { + "SgNBSecurityKey", + "SgNBSecurityKey", + &asn_OP_BIT_STRING, + asn_DEF_SgNBSecurityKey_tags_1, + sizeof(asn_DEF_SgNBSecurityKey_tags_1) + /sizeof(asn_DEF_SgNBSecurityKey_tags_1[0]), /* 1 */ + asn_DEF_SgNBSecurityKey_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBSecurityKey_tags_1) + /sizeof(asn_DEF_SgNBSecurityKey_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNBSecurityKey_constr_1, SgNBSecurityKey_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.h b/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.h new file mode 100644 index 0000000..67ddec1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBSecurityKey.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBSecurityKey_H_ +#define _SgNBSecurityKey_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBSecurityKey */ +typedef BIT_STRING_t SgNBSecurityKey_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNBSecurityKey_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNBSecurityKey; +asn_struct_free_f SgNBSecurityKey_free; +asn_struct_print_f SgNBSecurityKey_print; +asn_constr_check_f SgNBSecurityKey_constraint; +ber_type_decoder_f SgNBSecurityKey_decode_ber; +der_type_encoder_f SgNBSecurityKey_encode_der; +xer_type_decoder_f SgNBSecurityKey_decode_xer; +xer_type_encoder_f SgNBSecurityKey_encode_xer; +per_type_decoder_f SgNBSecurityKey_decode_uper; +per_type_encoder_f SgNBSecurityKey_encode_uper; +per_type_decoder_f SgNBSecurityKey_decode_aper; +per_type_encoder_f SgNBSecurityKey_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBSecurityKey_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c b/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c new file mode 100644 index 0000000..a936a5c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBtoMeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SgNBtoMeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBtoMeNBContainer = { + "SgNBtoMeNBContainer", + "SgNBtoMeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_SgNBtoMeNBContainer_tags_1, + sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_SgNBtoMeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h b/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h new file mode 100644 index 0000000..2de6e18 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBtoMeNBContainer_H_ +#define _SgNBtoMeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBtoMeNBContainer */ +typedef OCTET_STRING_t SgNBtoMeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBtoMeNBContainer; +asn_struct_free_f SgNBtoMeNBContainer_free; +asn_struct_print_f SgNBtoMeNBContainer_print; +asn_constr_check_f SgNBtoMeNBContainer_constraint; +ber_type_decoder_f SgNBtoMeNBContainer_decode_ber; +der_type_encoder_f SgNBtoMeNBContainer_encode_der; +xer_type_decoder_f SgNBtoMeNBContainer_decode_xer; +xer_type_encoder_f SgNBtoMeNBContainer_encode_xer; +per_type_decoder_f SgNBtoMeNBContainer_decode_uper; +per_type_encoder_f SgNBtoMeNBContainer_encode_uper; +per_type_decoder_f SgNBtoMeNBContainer_decode_aper; +per_type_encoder_f SgNBtoMeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBtoMeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SharedResourceType.c b/E2Manager/asn1codec/e2ap_engine/SharedResourceType.c new file mode 100644 index 0000000..ee3f33e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SharedResourceType.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SharedResourceType.h" + +#include "ULOnlySharing.h" +#include "ULandDLSharing.h" +asn_per_constraints_t asn_PER_type_SharedResourceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SharedResourceType_1[] = { + { ATF_POINTER, 0, offsetof(struct SharedResourceType, choice.uLOnlySharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULOnlySharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLOnlySharing" + }, + { ATF_POINTER, 0, offsetof(struct SharedResourceType, choice.uLandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLandDLSharing" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SharedResourceType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLOnlySharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uLandDLSharing */ +}; +asn_CHOICE_specifics_t asn_SPC_SharedResourceType_specs_1 = { + sizeof(struct SharedResourceType), + offsetof(struct SharedResourceType, _asn_ctx), + offsetof(struct SharedResourceType, present), + sizeof(((struct SharedResourceType *)0)->present), + asn_MAP_SharedResourceType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SharedResourceType = { + "SharedResourceType", + "SharedResourceType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SharedResourceType_constr_1, CHOICE_constraint }, + asn_MBR_SharedResourceType_1, + 2, /* Elements count */ + &asn_SPC_SharedResourceType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SharedResourceType.h b/E2Manager/asn1codec/e2ap_engine/SharedResourceType.h new file mode 100644 index 0000000..7da364b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SharedResourceType.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SharedResourceType_H_ +#define _SharedResourceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SharedResourceType_PR { + SharedResourceType_PR_NOTHING, /* No components present */ + SharedResourceType_PR_uLOnlySharing, + SharedResourceType_PR_uLandDLSharing + /* Extensions may appear below */ + +} SharedResourceType_PR; + +/* Forward declarations */ +struct ULOnlySharing; +struct ULandDLSharing; + +/* SharedResourceType */ +typedef struct SharedResourceType { + SharedResourceType_PR present; + union SharedResourceType_u { + struct ULOnlySharing *uLOnlySharing; + struct ULandDLSharing *uLandDLSharing; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SharedResourceType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SharedResourceType; +extern asn_CHOICE_specifics_t asn_SPC_SharedResourceType_specs_1; +extern asn_TYPE_member_t asn_MBR_SharedResourceType_1[2]; +extern asn_per_constraints_t asn_PER_type_SharedResourceType_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SharedResourceType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.c b/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.c new file mode 100644 index 0000000..f3efe6a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ShortMAC-I.h" + +int +ShortMAC_I_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ShortMAC_I_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ShortMAC_I = { + "ShortMAC-I", + "ShortMAC-I", + &asn_OP_BIT_STRING, + asn_DEF_ShortMAC_I_tags_1, + sizeof(asn_DEF_ShortMAC_I_tags_1) + /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */ + asn_DEF_ShortMAC_I_tags_1, /* Same as above */ + sizeof(asn_DEF_ShortMAC_I_tags_1) + /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ShortMAC_I_constr_1, ShortMAC_I_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.h b/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.h new file mode 100644 index 0000000..f5bdf02 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ShortMAC-I.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ShortMAC_I_H_ +#define _ShortMAC_I_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ShortMAC-I */ +typedef BIT_STRING_t ShortMAC_I_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ShortMAC_I; +asn_struct_free_f ShortMAC_I_free; +asn_struct_print_f ShortMAC_I_print; +asn_constr_check_f ShortMAC_I_constraint; +ber_type_decoder_f ShortMAC_I_decode_ber; +der_type_encoder_f ShortMAC_I_encode_der; +xer_type_decoder_f ShortMAC_I_decode_xer; +xer_type_encoder_f ShortMAC_I_encode_xer; +per_type_decoder_f ShortMAC_I_decode_uper; +per_type_encoder_f ShortMAC_I_encode_uper; +per_type_decoder_f ShortMAC_I_decode_aper; +per_type_encoder_f ShortMAC_I_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ShortMAC_I_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c b/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c new file mode 100644 index 0000000..a1b6fd4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SourceOfUEActivityBehaviourInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SourceOfUEActivityBehaviourInformation_value2enum_1[] = { + { 0, 24, "subscription-information" }, + { 1, 10, "statistics" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SourceOfUEActivityBehaviourInformation_enum2value_1[] = { + 1, /* statistics(1) */ + 0 /* subscription-information(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1 = { + asn_MAP_SourceOfUEActivityBehaviourInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SourceOfUEActivityBehaviourInformation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SourceOfUEActivityBehaviourInformation = { + "SourceOfUEActivityBehaviourInformation", + "SourceOfUEActivityBehaviourInformation", + &asn_OP_NativeEnumerated, + asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1, + sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h b/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h new file mode 100644 index 0000000..0722603 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SourceOfUEActivityBehaviourInformation_H_ +#define _SourceOfUEActivityBehaviourInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SourceOfUEActivityBehaviourInformation { + SourceOfUEActivityBehaviourInformation_subscription_information = 0, + SourceOfUEActivityBehaviourInformation_statistics = 1 + /* + * Enumeration is extensible + */ +} e_SourceOfUEActivityBehaviourInformation; + +/* SourceOfUEActivityBehaviourInformation */ +typedef long SourceOfUEActivityBehaviourInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SourceOfUEActivityBehaviourInformation; +extern const asn_INTEGER_specifics_t asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1; +asn_struct_free_f SourceOfUEActivityBehaviourInformation_free; +asn_struct_print_f SourceOfUEActivityBehaviourInformation_print; +asn_constr_check_f SourceOfUEActivityBehaviourInformation_constraint; +ber_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_ber; +der_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_der; +xer_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_xer; +xer_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_xer; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_uper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_uper; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_aper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SourceOfUEActivityBehaviourInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.c b/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.c new file mode 100644 index 0000000..d2d6e6b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpecialSubframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, specialSubframePatterns), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpecialSubframePatterns, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "specialSubframePatterns" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct SpecialSubframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P194, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SpecialSubframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_SpecialSubframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpecialSubframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* specialSubframePatterns */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_specs_1 = { + sizeof(struct SpecialSubframe_Info), + offsetof(struct SpecialSubframe_Info, _asn_ctx), + asn_MAP_SpecialSubframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SpecialSubframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info = { + "SpecialSubframe-Info", + "SpecialSubframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_SpecialSubframe_Info_tags_1, + sizeof(asn_DEF_SpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_SpecialSubframe_Info_tags_1[0]), /* 1 */ + asn_DEF_SpecialSubframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_SpecialSubframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SpecialSubframe_Info_1, + 4, /* Elements count */ + &asn_SPC_SpecialSubframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.h b/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.h new file mode 100644 index 0000000..246aac3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpecialSubframe-Info.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpecialSubframe_Info_H_ +#define _SpecialSubframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SpecialSubframePatterns.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SpecialSubframe-Info */ +typedef struct SpecialSubframe_Info { + SpecialSubframePatterns_t specialSubframePatterns; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + 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; +} SpecialSubframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpecialSubframe_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.c b/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.c new file mode 100644 index 0000000..318bc2d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpecialSubframePatterns.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SpecialSubframePatterns_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 8 } /* (0..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SpecialSubframePatterns_value2enum_1[] = { + { 0, 4, "ssp0" }, + { 1, 4, "ssp1" }, + { 2, 4, "ssp2" }, + { 3, 4, "ssp3" }, + { 4, 4, "ssp4" }, + { 5, 4, "ssp5" }, + { 6, 4, "ssp6" }, + { 7, 4, "ssp7" }, + { 8, 4, "ssp8" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SpecialSubframePatterns_enum2value_1[] = { + 0, /* ssp0(0) */ + 1, /* ssp1(1) */ + 2, /* ssp2(2) */ + 3, /* ssp3(3) */ + 4, /* ssp4(4) */ + 5, /* ssp5(5) */ + 6, /* ssp6(6) */ + 7, /* ssp7(7) */ + 8 /* ssp8(8) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SpecialSubframePatterns_specs_1 = { + asn_MAP_SpecialSubframePatterns_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SpecialSubframePatterns_enum2value_1, /* N => "tag"; sorted by N */ + 9, /* Number of elements in the maps */ + 10, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SpecialSubframePatterns_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframePatterns = { + "SpecialSubframePatterns", + "SpecialSubframePatterns", + &asn_OP_NativeEnumerated, + asn_DEF_SpecialSubframePatterns_tags_1, + sizeof(asn_DEF_SpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_SpecialSubframePatterns_tags_1[0]), /* 1 */ + asn_DEF_SpecialSubframePatterns_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_SpecialSubframePatterns_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SpecialSubframePatterns_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SpecialSubframePatterns_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.h b/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.h new file mode 100644 index 0000000..de1fa99 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpecialSubframePatterns.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpecialSubframePatterns_H_ +#define _SpecialSubframePatterns_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpecialSubframePatterns { + SpecialSubframePatterns_ssp0 = 0, + SpecialSubframePatterns_ssp1 = 1, + SpecialSubframePatterns_ssp2 = 2, + SpecialSubframePatterns_ssp3 = 3, + SpecialSubframePatterns_ssp4 = 4, + SpecialSubframePatterns_ssp5 = 5, + SpecialSubframePatterns_ssp6 = 6, + SpecialSubframePatterns_ssp7 = 7, + SpecialSubframePatterns_ssp8 = 8 + /* + * Enumeration is extensible + */ +} e_SpecialSubframePatterns; + +/* SpecialSubframePatterns */ +typedef long SpecialSubframePatterns_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpecialSubframePatterns_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframePatterns; +extern const asn_INTEGER_specifics_t asn_SPC_SpecialSubframePatterns_specs_1; +asn_struct_free_f SpecialSubframePatterns_free; +asn_struct_print_f SpecialSubframePatterns_print; +asn_constr_check_f SpecialSubframePatterns_constraint; +ber_type_decoder_f SpecialSubframePatterns_decode_ber; +der_type_encoder_f SpecialSubframePatterns_encode_der; +xer_type_decoder_f SpecialSubframePatterns_decode_xer; +xer_type_encoder_f SpecialSubframePatterns_encode_xer; +per_type_decoder_f SpecialSubframePatterns_decode_uper; +per_type_encoder_f SpecialSubframePatterns_encode_uper; +per_type_decoder_f SpecialSubframePatterns_decode_aper; +per_type_encoder_f SpecialSubframePatterns_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpecialSubframePatterns_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.c b/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.c new file mode 100644 index 0000000..cc7051d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpectrumSharingGroupID.h" + +int +SpectrumSharingGroupID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SpectrumSharingGroupID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SpectrumSharingGroupID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpectrumSharingGroupID = { + "SpectrumSharingGroupID", + "SpectrumSharingGroupID", + &asn_OP_NativeInteger, + asn_DEF_SpectrumSharingGroupID_tags_1, + sizeof(asn_DEF_SpectrumSharingGroupID_tags_1) + /sizeof(asn_DEF_SpectrumSharingGroupID_tags_1[0]), /* 1 */ + asn_DEF_SpectrumSharingGroupID_tags_1, /* Same as above */ + sizeof(asn_DEF_SpectrumSharingGroupID_tags_1) + /sizeof(asn_DEF_SpectrumSharingGroupID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SpectrumSharingGroupID_constr_1, SpectrumSharingGroupID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.h b/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.h new file mode 100644 index 0000000..a523e0d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SpectrumSharingGroupID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpectrumSharingGroupID_H_ +#define _SpectrumSharingGroupID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpectrumSharingGroupID */ +typedef long SpectrumSharingGroupID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpectrumSharingGroupID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpectrumSharingGroupID; +asn_struct_free_f SpectrumSharingGroupID_free; +asn_struct_print_f SpectrumSharingGroupID_print; +asn_constr_check_f SpectrumSharingGroupID_constraint; +ber_type_decoder_f SpectrumSharingGroupID_decode_ber; +der_type_encoder_f SpectrumSharingGroupID_encode_der; +xer_type_decoder_f SpectrumSharingGroupID_decode_xer; +xer_type_encoder_f SpectrumSharingGroupID_encode_xer; +per_type_decoder_f SpectrumSharingGroupID_decode_uper; +per_type_encoder_f SpectrumSharingGroupID_encode_uper; +per_type_decoder_f SpectrumSharingGroupID_decode_aper; +per_type_encoder_f SpectrumSharingGroupID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpectrumSharingGroupID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SplitSRB.c b/E2Manager/asn1codec/e2ap_engine/SplitSRB.c new file mode 100644 index 0000000..df5cfc8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SplitSRB.c @@ -0,0 +1,103 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SplitSRB.h" + +#include "DeliveryStatus.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SplitSRB_1[] = { + { ATF_POINTER, 1, offsetof(struct SplitSRB, rrcContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rrcContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB, srbType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SRBType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "srbType" + }, + { ATF_POINTER, 2, offsetof(struct SplitSRB, deliveryStatus), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeliveryStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "deliveryStatus" + }, + { ATF_POINTER, 1, offsetof(struct SplitSRB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P170, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SplitSRB_oms_1[] = { 0, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_SplitSRB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SplitSRB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srbType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* deliveryStatus */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_specs_1 = { + sizeof(struct SplitSRB), + offsetof(struct SplitSRB, _asn_ctx), + asn_MAP_SplitSRB_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SplitSRB_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRB = { + "SplitSRB", + "SplitSRB", + &asn_OP_SEQUENCE, + asn_DEF_SplitSRB_tags_1, + sizeof(asn_DEF_SplitSRB_tags_1) + /sizeof(asn_DEF_SplitSRB_tags_1[0]), /* 1 */ + asn_DEF_SplitSRB_tags_1, /* Same as above */ + sizeof(asn_DEF_SplitSRB_tags_1) + /sizeof(asn_DEF_SplitSRB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SplitSRB_1, + 4, /* Elements count */ + &asn_SPC_SplitSRB_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SplitSRB.h b/E2Manager/asn1codec/e2ap_engine/SplitSRB.h new file mode 100644 index 0000000..fa9aea3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SplitSRB.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SplitSRB_H_ +#define _SplitSRB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RRCContainer.h" +#include "SRBType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DeliveryStatus; +struct ProtocolExtensionContainer; + +/* SplitSRB */ +typedef struct SplitSRB { + RRCContainer_t *rrcContainer; /* OPTIONAL */ + SRBType_t srbType; + struct DeliveryStatus *deliveryStatus; /* 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; +} SplitSRB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SplitSRB; +extern asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_specs_1; +extern asn_TYPE_member_t asn_MBR_SplitSRB_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SplitSRB_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SplitSRBs.c b/E2Manager/asn1codec/e2ap_engine/SplitSRBs.c new file mode 100644 index 0000000..01c8233 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SplitSRBs.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SplitSRBs.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SplitSRBs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SplitSRBs_value2enum_1[] = { + { 0, 4, "srb1" }, + { 1, 4, "srb2" }, + { 2, 8, "srb1and2" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SplitSRBs_enum2value_1[] = { + 0, /* srb1(0) */ + 2, /* srb1and2(2) */ + 1 /* srb2(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SplitSRBs_specs_1 = { + asn_MAP_SplitSRBs_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SplitSRBs_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_SplitSRBs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRBs = { + "SplitSRBs", + "SplitSRBs", + &asn_OP_NativeEnumerated, + asn_DEF_SplitSRBs_tags_1, + sizeof(asn_DEF_SplitSRBs_tags_1) + /sizeof(asn_DEF_SplitSRBs_tags_1[0]), /* 1 */ + asn_DEF_SplitSRBs_tags_1, /* Same as above */ + sizeof(asn_DEF_SplitSRBs_tags_1) + /sizeof(asn_DEF_SplitSRBs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SplitSRBs_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SplitSRBs_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SplitSRBs.h b/E2Manager/asn1codec/e2ap_engine/SplitSRBs.h new file mode 100644 index 0000000..4524224 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SplitSRBs.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SplitSRBs_H_ +#define _SplitSRBs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SplitSRBs { + SplitSRBs_srb1 = 0, + SplitSRBs_srb2 = 1, + SplitSRBs_srb1and2 = 2 + /* + * Enumeration is extensible + */ +} e_SplitSRBs; + +/* SplitSRBs */ +typedef long SplitSRBs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SplitSRBs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SplitSRBs; +extern const asn_INTEGER_specifics_t asn_SPC_SplitSRBs_specs_1; +asn_struct_free_f SplitSRBs_free; +asn_struct_print_f SplitSRBs_print; +asn_constr_check_f SplitSRBs_constraint; +ber_type_decoder_f SplitSRBs_decode_ber; +der_type_encoder_f SplitSRBs_encode_der; +xer_type_decoder_f SplitSRBs_decode_xer; +xer_type_encoder_f SplitSRBs_encode_xer; +per_type_decoder_f SplitSRBs_decode_uper; +per_type_encoder_f SplitSRBs_encode_uper; +per_type_decoder_f SplitSRBs_decode_aper; +per_type_encoder_f SplitSRBs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SplitSRBs_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Style-ID.c b/E2Manager/asn1codec/e2ap_engine/Style-ID.c new file mode 100644 index 0000000..ed29b9c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Style-ID.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Style-ID.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_Style_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Style_ID = { + "Style-ID", + "Style-ID", + &asn_OP_NativeInteger, + asn_DEF_Style_ID_tags_1, + sizeof(asn_DEF_Style_ID_tags_1) + /sizeof(asn_DEF_Style_ID_tags_1[0]), /* 1 */ + asn_DEF_Style_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Style_ID_tags_1) + /sizeof(asn_DEF_Style_ID_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Style-ID.h b/E2Manager/asn1codec/e2ap_engine/Style-ID.h new file mode 100644 index 0000000..560a630 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Style-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Style_ID_H_ +#define _Style_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Style-ID */ +typedef long Style_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Style_ID; +asn_struct_free_f Style_ID_free; +asn_struct_print_f Style_ID_print; +asn_constr_check_f Style_ID_constraint; +ber_type_decoder_f Style_ID_decode_ber; +der_type_encoder_f Style_ID_encode_der; +xer_type_decoder_f Style_ID_decode_xer; +xer_type_encoder_f Style_ID_encode_xer; +per_type_decoder_f Style_ID_decode_uper; +per_type_encoder_f Style_ID_encode_uper; +per_type_decoder_f Style_ID_decode_aper; +per_type_encoder_f Style_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Style_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQI.c b/E2Manager/asn1codec/e2ap_engine/SubbandCQI.c new file mode 100644 index 0000000..f430a8d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQI.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQI.h" + +#include "SubbandCQICodeword1.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SubbandCQI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI, subbandCQICodeword0), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubbandCQICodeword0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQICodeword0" + }, + { ATF_POINTER, 2, offsetof(struct SubbandCQI, subbandCQICodeword1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubbandCQICodeword1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQICodeword1" + }, + { ATF_POINTER, 1, offsetof(struct SubbandCQI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P195, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SubbandCQI_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_SubbandCQI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subbandCQICodeword0 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subbandCQICodeword1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_specs_1 = { + sizeof(struct SubbandCQI), + offsetof(struct SubbandCQI, _asn_ctx), + asn_MAP_SubbandCQI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SubbandCQI_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQI = { + "SubbandCQI", + "SubbandCQI", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQI_tags_1, + sizeof(asn_DEF_SubbandCQI_tags_1) + /sizeof(asn_DEF_SubbandCQI_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQI_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQI_tags_1) + /sizeof(asn_DEF_SubbandCQI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQI_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQI.h b/E2Manager/asn1codec/e2ap_engine/SubbandCQI.h new file mode 100644 index 0000000..4d01e93 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQI.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQI_H_ +#define _SubbandCQI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubbandCQICodeword0.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQICodeword1; +struct ProtocolExtensionContainer; + +/* SubbandCQI */ +typedef struct SubbandCQI { + SubbandCQICodeword0_t subbandCQICodeword0; + struct SubbandCQICodeword1 *subbandCQICodeword1; /* 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; +} SubbandCQI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQI; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.c b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.c new file mode 100644 index 0000000..1ca4fda --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.c @@ -0,0 +1,181 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQICodeword0.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_two_bitSubbandDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_two_bitDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitSubbandDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitDifferentialCQI_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_SubbandCQICodeword0_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQICodeword0_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.two_bitSubbandDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitSubbandDifferentialCQI_constr_3, memb_two_bitSubbandDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitSubbandDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.two_bitDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitDifferentialCQI_constr_4, memb_two_bitDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQICodeword0_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-bitSubbandDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* two-bitDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword0_specs_1 = { + sizeof(struct SubbandCQICodeword0), + offsetof(struct SubbandCQICodeword0, _asn_ctx), + offsetof(struct SubbandCQICodeword0, present), + sizeof(((struct SubbandCQICodeword0 *)0)->present), + asn_MAP_SubbandCQICodeword0_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword0 = { + "SubbandCQICodeword0", + "SubbandCQICodeword0", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubbandCQICodeword0_constr_1, CHOICE_constraint }, + asn_MBR_SubbandCQICodeword0_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQICodeword0_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.h b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.h new file mode 100644 index 0000000..001a4c8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword0.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQICodeword0_H_ +#define _SubbandCQICodeword0_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandCQICodeword0_PR { + SubbandCQICodeword0_PR_NOTHING, /* No components present */ + SubbandCQICodeword0_PR_four_bitCQI, + SubbandCQICodeword0_PR_two_bitSubbandDifferentialCQI, + SubbandCQICodeword0_PR_two_bitDifferentialCQI + /* Extensions may appear below */ + +} SubbandCQICodeword0_PR; + +/* SubbandCQICodeword0 */ +typedef struct SubbandCQICodeword0 { + SubbandCQICodeword0_PR present; + union SubbandCQICodeword0_u { + long four_bitCQI; + long two_bitSubbandDifferentialCQI; + long two_bitDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQICodeword0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword0; +extern asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword0_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQICodeword0_1[3]; +extern asn_per_constraints_t asn_PER_type_SubbandCQICodeword0_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQICodeword0_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.c b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.c new file mode 100644 index 0000000..e4118a7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.c @@ -0,0 +1,221 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQICodeword1.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_three_bitSpatialDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_two_bitSubbandDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_two_bitDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* 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_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitSubbandDifferentialCQI_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitDifferentialCQI_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_SubbandCQICodeword1_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQICodeword1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.three_bitSpatialDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3, memb_three_bitSpatialDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "three-bitSpatialDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.two_bitSubbandDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitSubbandDifferentialCQI_constr_4, memb_two_bitSubbandDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitSubbandDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.two_bitDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitDifferentialCQI_constr_5, memb_two_bitDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQICodeword1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* three-bitSpatialDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* two-bitSubbandDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* two-bitDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword1_specs_1 = { + sizeof(struct SubbandCQICodeword1), + offsetof(struct SubbandCQICodeword1, _asn_ctx), + offsetof(struct SubbandCQICodeword1, present), + sizeof(((struct SubbandCQICodeword1 *)0)->present), + asn_MAP_SubbandCQICodeword1_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword1 = { + "SubbandCQICodeword1", + "SubbandCQICodeword1", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubbandCQICodeword1_constr_1, CHOICE_constraint }, + asn_MBR_SubbandCQICodeword1_1, + 4, /* Elements count */ + &asn_SPC_SubbandCQICodeword1_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.h b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.h new file mode 100644 index 0000000..5539283 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQICodeword1.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQICodeword1_H_ +#define _SubbandCQICodeword1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandCQICodeword1_PR { + SubbandCQICodeword1_PR_NOTHING, /* No components present */ + SubbandCQICodeword1_PR_four_bitCQI, + SubbandCQICodeword1_PR_three_bitSpatialDifferentialCQI, + SubbandCQICodeword1_PR_two_bitSubbandDifferentialCQI, + SubbandCQICodeword1_PR_two_bitDifferentialCQI + /* Extensions may appear below */ + +} SubbandCQICodeword1_PR; + +/* SubbandCQICodeword1 */ +typedef struct SubbandCQICodeword1 { + SubbandCQICodeword1_PR present; + union SubbandCQICodeword1_u { + long four_bitCQI; + long three_bitSpatialDifferentialCQI; + long two_bitSubbandDifferentialCQI; + long two_bitDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQICodeword1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword1; +extern asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword1_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQICodeword1_1[4]; +extern asn_per_constraints_t asn_PER_type_SubbandCQICodeword1_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQICodeword1_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.c b/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.c new file mode 100644 index 0000000..f65b8e9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.c @@ -0,0 +1,122 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQIItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_subbandIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 27)) { + /* 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_subbandIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 27 } /* (0..27,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQIItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem, subbandCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandCQI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem, subbandIndex), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_subbandIndex_constr_3, memb_subbandIndex_constraint_1 }, + 0, 0, /* No default value */ + "subbandIndex" + }, + { ATF_POINTER, 1, offsetof(struct SubbandCQIItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P198, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SubbandCQIItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_SubbandCQIItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQIItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subbandCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subbandIndex */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_specs_1 = { + sizeof(struct SubbandCQIItem), + offsetof(struct SubbandCQIItem, _asn_ctx), + asn_MAP_SubbandCQIItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SubbandCQIItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem = { + "SubbandCQIItem", + "SubbandCQIItem", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQIItem_tags_1, + sizeof(asn_DEF_SubbandCQIItem_tags_1) + /sizeof(asn_DEF_SubbandCQIItem_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQIItem_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQIItem_tags_1) + /sizeof(asn_DEF_SubbandCQIItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQIItem_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQIItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.h b/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.h new file mode 100644 index 0000000..5f8c822 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQIItem.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQIItem_H_ +#define _SubbandCQIItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubbandCQI.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SubbandCQIItem */ +typedef struct SubbandCQIItem { + SubbandCQI_t subbandCQI; + long subbandIndex; + 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; +} SubbandCQIItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQIItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQIItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.c b/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.c new file mode 100644 index 0000000..daaae14 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQIList.h" + +#include "SubbandCQIItem.h" +asn_per_constraints_t asn_PER_type_SubbandCQIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 14 } /* (SIZE(1..14)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQIItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SubbandCQIList_specs_1 = { + sizeof(struct SubbandCQIList), + offsetof(struct SubbandCQIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIList = { + "SubbandCQIList", + "SubbandCQIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SubbandCQIList_tags_1, + sizeof(asn_DEF_SubbandCQIList_tags_1) + /sizeof(asn_DEF_SubbandCQIList_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQIList_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQIList_tags_1) + /sizeof(asn_DEF_SubbandCQIList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubbandCQIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_SubbandCQIList_1, + 1, /* Single element */ + &asn_SPC_SubbandCQIList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.h b/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.h new file mode 100644 index 0000000..0ded822 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandCQIList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQIList_H_ +#define _SubbandCQIList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQIItem; + +/* SubbandCQIList */ +typedef struct SubbandCQIList { + A_SEQUENCE_OF(struct SubbandCQIItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIList; +extern asn_SET_OF_specifics_t asn_SPC_SubbandCQIList_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQIList_1[1]; +extern asn_per_constraints_t asn_PER_type_SubbandCQIList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQIList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandSize.c b/E2Manager/asn1codec/e2ap_engine/SubbandSize.c new file mode 100644 index 0000000..1169f58 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandSize.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandSize.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubbandSize_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubbandSize_value2enum_1[] = { + { 0, 5, "size2" }, + { 1, 5, "size3" }, + { 2, 5, "size4" }, + { 3, 5, "size6" }, + { 4, 5, "size8" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubbandSize_enum2value_1[] = { + 0, /* size2(0) */ + 1, /* size3(1) */ + 2, /* size4(2) */ + 3, /* size6(3) */ + 4 /* size8(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubbandSize_specs_1 = { + asn_MAP_SubbandSize_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubbandSize_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_SubbandSize_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubbandSize = { + "SubbandSize", + "SubbandSize", + &asn_OP_NativeEnumerated, + asn_DEF_SubbandSize_tags_1, + sizeof(asn_DEF_SubbandSize_tags_1) + /sizeof(asn_DEF_SubbandSize_tags_1[0]), /* 1 */ + asn_DEF_SubbandSize_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandSize_tags_1) + /sizeof(asn_DEF_SubbandSize_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubbandSize_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubbandSize_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubbandSize.h b/E2Manager/asn1codec/e2ap_engine/SubbandSize.h new file mode 100644 index 0000000..b6c8906 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubbandSize.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandSize_H_ +#define _SubbandSize_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandSize { + SubbandSize_size2 = 0, + SubbandSize_size3 = 1, + SubbandSize_size4 = 2, + SubbandSize_size6 = 3, + SubbandSize_size8 = 4 + /* + * Enumeration is extensible + */ +} e_SubbandSize; + +/* SubbandSize */ +typedef long SubbandSize_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubbandSize_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubbandSize; +extern const asn_INTEGER_specifics_t asn_SPC_SubbandSize_specs_1; +asn_struct_free_f SubbandSize_free; +asn_struct_print_f SubbandSize_print; +asn_constr_check_f SubbandSize_constraint; +ber_type_decoder_f SubbandSize_decode_ber; +der_type_encoder_f SubbandSize_encode_der; +xer_type_decoder_f SubbandSize_decode_xer; +xer_type_encoder_f SubbandSize_encode_xer; +per_type_decoder_f SubbandSize_decode_uper; +per_type_encoder_f SubbandSize_encode_uper; +per_type_decoder_f SubbandSize_decode_aper; +per_type_encoder_f SubbandSize_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandSize_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.c b/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.c new file mode 100644 index 0000000..a61c18f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeAllocation.h" + +asn_per_constraints_t asn_PER_type_SubframeAllocation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubframeAllocation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubframeAllocation, choice.oneframe), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Oneframe, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "oneframe" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubframeAllocation, choice.fourframes), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Fourframes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fourframes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubframeAllocation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneframe */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fourframes */ +}; +asn_CHOICE_specifics_t asn_SPC_SubframeAllocation_specs_1 = { + sizeof(struct SubframeAllocation), + offsetof(struct SubframeAllocation, _asn_ctx), + offsetof(struct SubframeAllocation, present), + sizeof(((struct SubframeAllocation *)0)->present), + asn_MAP_SubframeAllocation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubframeAllocation = { + "SubframeAllocation", + "SubframeAllocation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubframeAllocation_constr_1, CHOICE_constraint }, + asn_MBR_SubframeAllocation_1, + 2, /* Elements count */ + &asn_SPC_SubframeAllocation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.h b/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.h new file mode 100644 index 0000000..038ce4e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeAllocation.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeAllocation_H_ +#define _SubframeAllocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Oneframe.h" +#include "Fourframes.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeAllocation_PR { + SubframeAllocation_PR_NOTHING, /* No components present */ + SubframeAllocation_PR_oneframe, + SubframeAllocation_PR_fourframes + /* Extensions may appear below */ + +} SubframeAllocation_PR; + +/* SubframeAllocation */ +typedef struct SubframeAllocation { + SubframeAllocation_PR present; + union SubframeAllocation_u { + Oneframe_t oneframe; + Fourframes_t fourframes; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubframeAllocation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubframeAllocation; +extern asn_CHOICE_specifics_t asn_SPC_SubframeAllocation_specs_1; +extern asn_TYPE_member_t asn_MBR_SubframeAllocation_1[2]; +extern asn_per_constraints_t asn_PER_type_SubframeAllocation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeAllocation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.c b/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.c new file mode 100644 index 0000000..7f4f3b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.c @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeAssignment.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubframeAssignment_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubframeAssignment_value2enum_1[] = { + { 0, 3, "sa0" }, + { 1, 3, "sa1" }, + { 2, 3, "sa2" }, + { 3, 3, "sa3" }, + { 4, 3, "sa4" }, + { 5, 3, "sa5" }, + { 6, 3, "sa6" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubframeAssignment_enum2value_1[] = { + 0, /* sa0(0) */ + 1, /* sa1(1) */ + 2, /* sa2(2) */ + 3, /* sa3(3) */ + 4, /* sa4(4) */ + 5, /* sa5(5) */ + 6 /* sa6(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubframeAssignment_specs_1 = { + asn_MAP_SubframeAssignment_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubframeAssignment_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_SubframeAssignment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubframeAssignment = { + "SubframeAssignment", + "SubframeAssignment", + &asn_OP_NativeEnumerated, + asn_DEF_SubframeAssignment_tags_1, + sizeof(asn_DEF_SubframeAssignment_tags_1) + /sizeof(asn_DEF_SubframeAssignment_tags_1[0]), /* 1 */ + asn_DEF_SubframeAssignment_tags_1, /* Same as above */ + sizeof(asn_DEF_SubframeAssignment_tags_1) + /sizeof(asn_DEF_SubframeAssignment_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubframeAssignment_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubframeAssignment_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.h b/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.h new file mode 100644 index 0000000..43166da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeAssignment.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeAssignment_H_ +#define _SubframeAssignment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeAssignment { + SubframeAssignment_sa0 = 0, + SubframeAssignment_sa1 = 1, + SubframeAssignment_sa2 = 2, + SubframeAssignment_sa3 = 3, + SubframeAssignment_sa4 = 4, + SubframeAssignment_sa5 = 5, + SubframeAssignment_sa6 = 6 + /* + * Enumeration is extensible + */ +} e_SubframeAssignment; + +/* SubframeAssignment */ +typedef long SubframeAssignment_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubframeAssignment_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubframeAssignment; +extern const asn_INTEGER_specifics_t asn_SPC_SubframeAssignment_specs_1; +asn_struct_free_f SubframeAssignment_free; +asn_struct_print_f SubframeAssignment_print; +asn_constr_check_f SubframeAssignment_constraint; +ber_type_decoder_f SubframeAssignment_decode_ber; +der_type_encoder_f SubframeAssignment_encode_der; +xer_type_decoder_f SubframeAssignment_decode_xer; +xer_type_encoder_f SubframeAssignment_encode_xer; +per_type_decoder_f SubframeAssignment_decode_uper; +per_type_encoder_f SubframeAssignment_encode_uper; +per_type_decoder_f SubframeAssignment_decode_aper; +per_type_encoder_f SubframeAssignment_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeAssignment_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeType.c b/E2Manager/asn1codec/e2ap_engine/SubframeType.c new file mode 100644 index 0000000..bbf1677 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeType.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubframeType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubframeType_value2enum_1[] = { + { 0, 5, "mbsfn" }, + { 1, 8, "nonmbsfn" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubframeType_enum2value_1[] = { + 0, /* mbsfn(0) */ + 1 /* nonmbsfn(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubframeType_specs_1 = { + asn_MAP_SubframeType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubframeType_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_SubframeType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubframeType = { + "SubframeType", + "SubframeType", + &asn_OP_NativeEnumerated, + asn_DEF_SubframeType_tags_1, + sizeof(asn_DEF_SubframeType_tags_1) + /sizeof(asn_DEF_SubframeType_tags_1[0]), /* 1 */ + asn_DEF_SubframeType_tags_1, /* Same as above */ + sizeof(asn_DEF_SubframeType_tags_1) + /sizeof(asn_DEF_SubframeType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubframeType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubframeType_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubframeType.h b/E2Manager/asn1codec/e2ap_engine/SubframeType.h new file mode 100644 index 0000000..f2d0876 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubframeType.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeType_H_ +#define _SubframeType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeType { + SubframeType_mbsfn = 0, + SubframeType_nonmbsfn = 1 + /* + * Enumeration is extensible + */ +} e_SubframeType; + +/* SubframeType */ +typedef long SubframeType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubframeType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubframeType; +extern const asn_INTEGER_specifics_t asn_SPC_SubframeType_specs_1; +asn_struct_free_f SubframeType_free; +asn_struct_print_f SubframeType_print; +asn_constr_check_f SubframeType_constraint; +ber_type_decoder_f SubframeType_decode_ber; +der_type_encoder_f SubframeType_encode_der; +xer_type_decoder_f SubframeType_decode_xer; +xer_type_encoder_f SubframeType_encode_xer; +per_type_decoder_f SubframeType_decode_uper; +per_type_encoder_f SubframeType_encode_uper; +per_type_decoder_f SubframeType_decode_aper; +per_type_encoder_f SubframeType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeType_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c b/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c new file mode 100644 index 0000000..f83422a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubscriberProfileIDforRFP.h" + +int +SubscriberProfileIDforRFP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SubscriberProfileIDforRFP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP = { + "SubscriberProfileIDforRFP", + "SubscriberProfileIDforRFP", + &asn_OP_NativeInteger, + asn_DEF_SubscriberProfileIDforRFP_tags_1, + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + asn_DEF_SubscriberProfileIDforRFP_tags_1, /* Same as above */ + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubscriberProfileIDforRFP_constr_1, SubscriberProfileIDforRFP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h b/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h new file mode 100644 index 0000000..39f1472 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubscriberProfileIDforRFP_H_ +#define _SubscriberProfileIDforRFP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SubscriberProfileIDforRFP */ +typedef long SubscriberProfileIDforRFP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP; +asn_struct_free_f SubscriberProfileIDforRFP_free; +asn_struct_print_f SubscriberProfileIDforRFP_print; +asn_constr_check_f SubscriberProfileIDforRFP_constraint; +ber_type_decoder_f SubscriberProfileIDforRFP_decode_ber; +der_type_encoder_f SubscriberProfileIDforRFP_encode_der; +xer_type_decoder_f SubscriberProfileIDforRFP_decode_xer; +xer_type_encoder_f SubscriberProfileIDforRFP_encode_xer; +per_type_decoder_f SubscriberProfileIDforRFP_decode_uper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_uper; +per_type_decoder_f SubscriberProfileIDforRFP_decode_aper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubscriberProfileIDforRFP_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c b/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c new file mode 100644 index 0000000..8eb0f64 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c @@ -0,0 +1,359 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Subscription-Based-UE-DifferentiationInfo.h" + +#include "ScheduledCommunicationTime.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_periodicTime_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 3600)) { + /* 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_type_periodicCommunicationIndicator_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_stationaryIndication_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_trafficProfile_constr_12 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_batteryIndication_constr_17 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_periodicTime_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 1, 3600 } /* (1..3600,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_periodicCommunicationIndicator_value2enum_2[] = { + { 0, 12, "periodically" }, + { 1, 8, "ondemand" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_periodicCommunicationIndicator_enum2value_2[] = { + 1, /* ondemand(1) */ + 0 /* periodically(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_periodicCommunicationIndicator_specs_2 = { + asn_MAP_periodicCommunicationIndicator_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_periodicCommunicationIndicator_enum2value_2, /* 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_periodicCommunicationIndicator_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_periodicCommunicationIndicator_2 = { + "periodicCommunicationIndicator", + "periodicCommunicationIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_periodicCommunicationIndicator_tags_2, + sizeof(asn_DEF_periodicCommunicationIndicator_tags_2) + /sizeof(asn_DEF_periodicCommunicationIndicator_tags_2[0]) - 1, /* 1 */ + asn_DEF_periodicCommunicationIndicator_tags_2, /* Same as above */ + sizeof(asn_DEF_periodicCommunicationIndicator_tags_2) + /sizeof(asn_DEF_periodicCommunicationIndicator_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_periodicCommunicationIndicator_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_periodicCommunicationIndicator_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_stationaryIndication_value2enum_8[] = { + { 0, 10, "stationary" }, + { 1, 6, "mobile" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_stationaryIndication_enum2value_8[] = { + 1, /* mobile(1) */ + 0 /* stationary(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_stationaryIndication_specs_8 = { + asn_MAP_stationaryIndication_value2enum_8, /* "tag" => N; sorted by tag */ + asn_MAP_stationaryIndication_enum2value_8, /* 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_stationaryIndication_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_stationaryIndication_8 = { + "stationaryIndication", + "stationaryIndication", + &asn_OP_NativeEnumerated, + asn_DEF_stationaryIndication_tags_8, + sizeof(asn_DEF_stationaryIndication_tags_8) + /sizeof(asn_DEF_stationaryIndication_tags_8[0]) - 1, /* 1 */ + asn_DEF_stationaryIndication_tags_8, /* Same as above */ + sizeof(asn_DEF_stationaryIndication_tags_8) + /sizeof(asn_DEF_stationaryIndication_tags_8[0]), /* 2 */ + { 0, &asn_PER_type_stationaryIndication_constr_8, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_stationaryIndication_specs_8 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_trafficProfile_value2enum_12[] = { + { 0, 13, "single-packet" }, + { 1, 12, "dual-packets" }, + { 2, 16, "multiple-packets" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_trafficProfile_enum2value_12[] = { + 1, /* dual-packets(1) */ + 2, /* multiple-packets(2) */ + 0 /* single-packet(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_trafficProfile_specs_12 = { + asn_MAP_trafficProfile_value2enum_12, /* "tag" => N; sorted by tag */ + asn_MAP_trafficProfile_enum2value_12, /* 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_trafficProfile_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_trafficProfile_12 = { + "trafficProfile", + "trafficProfile", + &asn_OP_NativeEnumerated, + asn_DEF_trafficProfile_tags_12, + sizeof(asn_DEF_trafficProfile_tags_12) + /sizeof(asn_DEF_trafficProfile_tags_12[0]) - 1, /* 1 */ + asn_DEF_trafficProfile_tags_12, /* Same as above */ + sizeof(asn_DEF_trafficProfile_tags_12) + /sizeof(asn_DEF_trafficProfile_tags_12[0]), /* 2 */ + { 0, &asn_PER_type_trafficProfile_constr_12, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_trafficProfile_specs_12 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_batteryIndication_value2enum_17[] = { + { 0, 15, "battery-powered" }, + { 1, 47, "battery-powered-not-rechargeable-or-replaceable" }, + { 2, 19, "not-battery-powered" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_batteryIndication_enum2value_17[] = { + 0, /* battery-powered(0) */ + 1, /* battery-powered-not-rechargeable-or-replaceable(1) */ + 2 /* not-battery-powered(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_batteryIndication_specs_17 = { + asn_MAP_batteryIndication_value2enum_17, /* "tag" => N; sorted by tag */ + asn_MAP_batteryIndication_enum2value_17, /* 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_batteryIndication_tags_17[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_batteryIndication_17 = { + "batteryIndication", + "batteryIndication", + &asn_OP_NativeEnumerated, + asn_DEF_batteryIndication_tags_17, + sizeof(asn_DEF_batteryIndication_tags_17) + /sizeof(asn_DEF_batteryIndication_tags_17[0]) - 1, /* 1 */ + asn_DEF_batteryIndication_tags_17, /* Same as above */ + sizeof(asn_DEF_batteryIndication_tags_17) + /sizeof(asn_DEF_batteryIndication_tags_17[0]), /* 2 */ + { 0, &asn_PER_type_batteryIndication_constr_17, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_batteryIndication_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_1[] = { + { ATF_POINTER, 7, offsetof(struct Subscription_Based_UE_DifferentiationInfo, periodicCommunicationIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_periodicCommunicationIndicator_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "periodicCommunicationIndicator" + }, + { ATF_POINTER, 6, offsetof(struct Subscription_Based_UE_DifferentiationInfo, periodicTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_periodicTime_constr_6, memb_periodicTime_constraint_1 }, + 0, 0, /* No default value */ + "periodicTime" + }, + { ATF_POINTER, 5, offsetof(struct Subscription_Based_UE_DifferentiationInfo, scheduledCommunicationTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ScheduledCommunicationTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "scheduledCommunicationTime" + }, + { ATF_POINTER, 4, offsetof(struct Subscription_Based_UE_DifferentiationInfo, stationaryIndication), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_stationaryIndication_8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "stationaryIndication" + }, + { ATF_POINTER, 3, offsetof(struct Subscription_Based_UE_DifferentiationInfo, trafficProfile), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_trafficProfile_12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trafficProfile" + }, + { ATF_POINTER, 2, offsetof(struct Subscription_Based_UE_DifferentiationInfo, batteryIndication), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_batteryIndication_17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "batteryIndication" + }, + { ATF_POINTER, 1, offsetof(struct Subscription_Based_UE_DifferentiationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P196, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Subscription_Based_UE_DifferentiationInfo_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Subscription_Based_UE_DifferentiationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodicCommunicationIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* periodicTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scheduledCommunicationTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* stationaryIndication */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* trafficProfile */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* batteryIndication */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo), + offsetof(struct Subscription_Based_UE_DifferentiationInfo, _asn_ctx), + asn_MAP_Subscription_Based_UE_DifferentiationInfo_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_Subscription_Based_UE_DifferentiationInfo_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo = { + "Subscription-Based-UE-DifferentiationInfo", + "Subscription-Based-UE-DifferentiationInfo", + &asn_OP_SEQUENCE, + asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1, + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[0]), /* 1 */ + asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Subscription_Based_UE_DifferentiationInfo_1, + 7, /* Elements count */ + &asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h b/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h new file mode 100644 index 0000000..e9778b5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h @@ -0,0 +1,110 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Subscription_Based_UE_DifferentiationInfo_H_ +#define _Subscription_Based_UE_DifferentiationInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator { + Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator_periodically = 0, + Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator_ondemand = 1 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator; +typedef enum Subscription_Based_UE_DifferentiationInfo__stationaryIndication { + Subscription_Based_UE_DifferentiationInfo__stationaryIndication_stationary = 0, + Subscription_Based_UE_DifferentiationInfo__stationaryIndication_mobile = 1 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__stationaryIndication; +typedef enum Subscription_Based_UE_DifferentiationInfo__trafficProfile { + Subscription_Based_UE_DifferentiationInfo__trafficProfile_single_packet = 0, + Subscription_Based_UE_DifferentiationInfo__trafficProfile_dual_packets = 1, + Subscription_Based_UE_DifferentiationInfo__trafficProfile_multiple_packets = 2 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__trafficProfile; +typedef enum Subscription_Based_UE_DifferentiationInfo__batteryIndication { + Subscription_Based_UE_DifferentiationInfo__batteryIndication_battery_powered = 0, + Subscription_Based_UE_DifferentiationInfo__batteryIndication_battery_powered_not_rechargeable_or_replaceable = 1, + Subscription_Based_UE_DifferentiationInfo__batteryIndication_not_battery_powered = 2 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__batteryIndication; + +/* Forward declarations */ +struct ScheduledCommunicationTime; +struct ProtocolExtensionContainer; + +/* Subscription-Based-UE-DifferentiationInfo */ +typedef struct Subscription_Based_UE_DifferentiationInfo { + long *periodicCommunicationIndicator; /* OPTIONAL */ + long *periodicTime; /* OPTIONAL */ + struct ScheduledCommunicationTime *scheduledCommunicationTime; /* OPTIONAL */ + long *stationaryIndication; /* OPTIONAL */ + long *trafficProfile; /* OPTIONAL */ + long *batteryIndication; /* 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; +} Subscription_Based_UE_DifferentiationInfo_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_periodicCommunicationIndicator_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_stationaryIndication_8; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_trafficProfile_12; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_batteryIndication_17; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Subscription_Based_UE_DifferentiationInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.c b/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.c new file mode 100644 index 0000000..353ea4a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.c @@ -0,0 +1,467 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SuccessfulOutcome.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.X2SetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENDCX2SetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResourceStatusResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENBConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENDCConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetResponse" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 9 }, /* RICsubscriptionResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 8 }, /* RICsubscriptionDeleteResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 7 }, /* RICserviceUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 6 }, /* RICcontrolAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 5 }, /* X2SetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 4 }, /* ENDCX2SetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 3 }, /* ResourceStatusResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 2 }, /* ENBConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 1 }, /* ENDCConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 0 } /* ResetResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct SuccessfulOutcome__value), + offsetof(struct SuccessfulOutcome__value, _asn_ctx), + offsetof(struct SuccessfulOutcome__value, present), + sizeof(((struct SuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 10, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 10, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_SuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.h b/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.h new file mode 100644 index 0000000..878098e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SuccessfulOutcome.h @@ -0,0 +1,133 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_RICsubscriptionResponse, + SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, + SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, + SuccessfulOutcome__value_PR_RICcontrolAcknowledge, + SuccessfulOutcome__value_PR_X2SetupResponse, + SuccessfulOutcome__value_PR_ENDCX2SetupResponse, + SuccessfulOutcome__value_PR_ResourceStatusResponse, + SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_ENDCConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_ResetResponse +} SuccessfulOutcome__value_PR; + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct SuccessfulOutcome__value { + SuccessfulOutcome__value_PR present; + union SuccessfulOutcome__value_u { + RICsubscriptionResponse_t RICsubscriptionResponse; + RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; + RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; + RICcontrolAcknowledge_t RICcontrolAcknowledge; + X2SetupResponse_t X2SetupResponse; + ENDCX2SetupResponse_t ENDCX2SetupResponse; + ResourceStatusResponse_t ResourceStatusResponse; + ENBConfigurationUpdateAcknowledge_t ENBConfigurationUpdateAcknowledge; + ENDCConfigurationUpdateAcknowledge_t ENDCConfigurationUpdateAcknowledge; + ResetResponse_t ResetResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c b/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c new file mode 100644 index 0000000..cac996f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SupportedSULFreqBandItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1024)) { + /* 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_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_freqBandIndicatorNr_constr_2, memb_freqBandIndicatorNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, + { ATF_POINTER, 1, offsetof(struct SupportedSULFreqBandItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P200, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SupportedSULFreqBandItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1 = { + sizeof(struct SupportedSULFreqBandItem), + offsetof(struct SupportedSULFreqBandItem, _asn_ctx), + asn_MAP_SupportedSULFreqBandItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_SupportedSULFreqBandItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem = { + "SupportedSULFreqBandItem", + "SupportedSULFreqBandItem", + &asn_OP_SEQUENCE, + asn_DEF_SupportedSULFreqBandItem_tags_1, + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + asn_DEF_SupportedSULFreqBandItem_tags_1, /* Same as above */ + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SupportedSULFreqBandItem_1, + 2, /* Elements count */ + &asn_SPC_SupportedSULFreqBandItem_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h b/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h new file mode 100644 index 0000000..60f3f85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SupportedSULFreqBandItem_H_ +#define _SupportedSULFreqBandItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SupportedSULFreqBandItem */ +typedef struct SupportedSULFreqBandItem { + long freqBandIndicatorNr; + 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; +} SupportedSULFreqBandItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem; +extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1; +extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SupportedSULFreqBandItem_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TABasedMDT.c b/E2Manager/asn1codec/e2ap_engine/TABasedMDT.c new file mode 100644 index 0000000..3ba7286 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TABasedMDT.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TABasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TABasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT, tAListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct TABasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P201, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TABasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TABasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_specs_1 = { + sizeof(struct TABasedMDT), + offsetof(struct TABasedMDT, _asn_ctx), + asn_MAP_TABasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TABasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedMDT = { + "TABasedMDT", + "TABasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_TABasedMDT_tags_1, + sizeof(asn_DEF_TABasedMDT_tags_1) + /sizeof(asn_DEF_TABasedMDT_tags_1[0]), /* 1 */ + asn_DEF_TABasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TABasedMDT_tags_1) + /sizeof(asn_DEF_TABasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedMDT_1, + 2, /* Elements count */ + &asn_SPC_TABasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TABasedMDT.h b/E2Manager/asn1codec/e2ap_engine/TABasedMDT.h new file mode 100644 index 0000000..0a4c825 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TABasedMDT.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TABasedMDT_H_ +#define _TABasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TABasedMDT */ +typedef struct TABasedMDT { + 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; +} TABasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TABasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TABasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TABasedMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TABasedQMC.c b/E2Manager/asn1codec/e2ap_engine/TABasedQMC.c new file mode 100644 index 0000000..48ccec6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TABasedQMC.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TABasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TABasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC, tAListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct TABasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P204, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TABasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TABasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_specs_1 = { + sizeof(struct TABasedQMC), + offsetof(struct TABasedQMC, _asn_ctx), + asn_MAP_TABasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TABasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedQMC = { + "TABasedQMC", + "TABasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_TABasedQMC_tags_1, + sizeof(asn_DEF_TABasedQMC_tags_1) + /sizeof(asn_DEF_TABasedQMC_tags_1[0]), /* 1 */ + asn_DEF_TABasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TABasedQMC_tags_1) + /sizeof(asn_DEF_TABasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedQMC_1, + 2, /* Elements count */ + &asn_SPC_TABasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TABasedQMC.h b/E2Manager/asn1codec/e2ap_engine/TABasedQMC.h new file mode 100644 index 0000000..19b7afd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TABasedQMC.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TABasedQMC_H_ +#define _TABasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TABasedQMC */ +typedef struct TABasedQMC { + TAListforQMC_t tAListforQMC; + 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; +} TABasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TABasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TABasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TABasedQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAC.c b/E2Manager/asn1codec/e2ap_engine/TAC.c new file mode 100644 index 0000000..20d50fe --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAC.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAC.h" + +int +TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TAC = { + "TAC", + "TAC", + &asn_OP_OCTET_STRING, + asn_DEF_TAC_tags_1, + sizeof(asn_DEF_TAC_tags_1) + /sizeof(asn_DEF_TAC_tags_1[0]), /* 1 */ + asn_DEF_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAC_tags_1) + /sizeof(asn_DEF_TAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAC_constr_1, TAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAC.h b/E2Manager/asn1codec/e2ap_engine/TAC.h new file mode 100644 index 0000000..ad2741a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAC.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAC_H_ +#define _TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAC */ +typedef OCTET_STRING_t TAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TAC; +asn_struct_free_f TAC_free; +asn_struct_print_f TAC_print; +asn_constr_check_f TAC_constraint; +ber_type_decoder_f TAC_decode_ber; +der_type_encoder_f TAC_encode_der; +xer_type_decoder_f TAC_decode_xer; +xer_type_encoder_f TAC_encode_xer; +per_type_decoder_f TAC_decode_uper; +per_type_encoder_f TAC_encode_uper; +per_type_decoder_f TAC_decode_aper; +per_type_encoder_f TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAI-Item.c b/E2Manager/asn1codec/e2ap_engine/TAI-Item.c new file mode 100644 index 0000000..f00efba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAI-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAI-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item, tAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_POINTER, 1, offsetof(struct TAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P203, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAI_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_TAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_specs_1 = { + sizeof(struct TAI_Item), + offsetof(struct TAI_Item, _asn_ctx), + asn_MAP_TAI_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAI_Item = { + "TAI-Item", + "TAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_TAI_Item_tags_1, + sizeof(asn_DEF_TAI_Item_tags_1) + /sizeof(asn_DEF_TAI_Item_tags_1[0]), /* 1 */ + asn_DEF_TAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_TAI_Item_tags_1) + /sizeof(asn_DEF_TAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAI_Item_1, + 3, /* Elements count */ + &asn_SPC_TAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAI-Item.h b/E2Manager/asn1codec/e2ap_engine/TAI-Item.h new file mode 100644 index 0000000..9499a4f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAI-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAI_Item_H_ +#define _TAI_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "PLMN-Identity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAI-Item */ +typedef struct TAI_Item { + TAC_t tAC; + PLMN_Identity_t pLMN_Identity; + 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; +} TAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_TAI_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAI_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.c b/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.c new file mode 100644 index 0000000..9788200 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIBasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAIBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT, tAIListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct TAIBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P202, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAIBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TAIBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAIListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_specs_1 = { + sizeof(struct TAIBasedMDT), + offsetof(struct TAIBasedMDT, _asn_ctx), + asn_MAP_TAIBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TAIBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT = { + "TAIBasedMDT", + "TAIBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedMDT_tags_1, + sizeof(asn_DEF_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_TAIBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_TAIBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_TAIBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_TAIBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.h b/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.h new file mode 100644 index 0000000..fabca63 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIBasedMDT.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIBasedMDT_H_ +#define _TAIBasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAIListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAIBasedMDT */ +typedef struct TAIBasedMDT { + TAIListforMDT_t tAIListforMDT; + 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; +} TAIBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIBasedMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.c b/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.c new file mode 100644 index 0000000..3091dd2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAIBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC, tAIListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct TAIBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P205, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAIBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TAIBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAIListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_specs_1 = { + sizeof(struct TAIBasedQMC), + offsetof(struct TAIBasedQMC, _asn_ctx), + asn_MAP_TAIBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TAIBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC = { + "TAIBasedQMC", + "TAIBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedQMC_tags_1, + sizeof(asn_DEF_TAIBasedQMC_tags_1) + /sizeof(asn_DEF_TAIBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_TAIBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIBasedQMC_tags_1) + /sizeof(asn_DEF_TAIBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_TAIBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.h b/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.h new file mode 100644 index 0000000..20d7b43 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIBasedQMC.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIBasedQMC_H_ +#define _TAIBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAIListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAIBasedQMC */ +typedef struct TAIBasedQMC { + TAIListforQMC_t tAIListforQMC; + 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; +} TAIBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.c b/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.c new file mode 100644 index 0000000..ecad0dc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIListforMDT.h" + +#include "TAI-Item.h" +asn_per_constraints_t asn_PER_type_TAIListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAIListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAIListforMDT_specs_1 = { + sizeof(struct TAIListforMDT), + offsetof(struct TAIListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIListforMDT = { + "TAIListforMDT", + "TAIListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAIListforMDT_tags_1, + sizeof(asn_DEF_TAIListforMDT_tags_1) + /sizeof(asn_DEF_TAIListforMDT_tags_1[0]), /* 1 */ + asn_DEF_TAIListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIListforMDT_tags_1) + /sizeof(asn_DEF_TAIListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAIListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAIListforMDT_1, + 1, /* Single element */ + &asn_SPC_TAIListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.h b/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.h new file mode 100644 index 0000000..38a151c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIListforMDT.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIListforMDT_H_ +#define _TAIListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TAI_Item; + +/* TAIListforMDT */ +typedef struct TAIListforMDT { + A_SEQUENCE_OF(struct TAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_TAIListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_TAIListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIListforMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.c b/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.c new file mode 100644 index 0000000..b1b2680 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIListforQMC.h" + +#include "TAI-Item.h" +asn_per_constraints_t asn_PER_type_TAIListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAIListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAIListforQMC_specs_1 = { + sizeof(struct TAIListforQMC), + offsetof(struct TAIListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIListforQMC = { + "TAIListforQMC", + "TAIListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAIListforQMC_tags_1, + sizeof(asn_DEF_TAIListforQMC_tags_1) + /sizeof(asn_DEF_TAIListforQMC_tags_1[0]), /* 1 */ + asn_DEF_TAIListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIListforQMC_tags_1) + /sizeof(asn_DEF_TAIListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAIListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAIListforQMC_1, + 1, /* Single element */ + &asn_SPC_TAIListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.h b/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.h new file mode 100644 index 0000000..e16349a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAIListforQMC.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIListforQMC_H_ +#define _TAIListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TAI_Item; + +/* TAIListforQMC */ +typedef struct TAIListforQMC { + A_SEQUENCE_OF(struct TAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_TAIListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_TAIListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIListforQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAListforMDT.c b/E2Manager/asn1codec/e2ap_engine/TAListforMDT.c new file mode 100644 index 0000000..8cc861d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAListforMDT.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAListforMDT.h" + +asn_per_constraints_t asn_PER_type_TAListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAListforMDT_specs_1 = { + sizeof(struct TAListforMDT), + offsetof(struct TAListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAListforMDT = { + "TAListforMDT", + "TAListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAListforMDT_tags_1, + sizeof(asn_DEF_TAListforMDT_tags_1) + /sizeof(asn_DEF_TAListforMDT_tags_1[0]), /* 1 */ + asn_DEF_TAListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAListforMDT_tags_1) + /sizeof(asn_DEF_TAListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAListforMDT_1, + 1, /* Single element */ + &asn_SPC_TAListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAListforMDT.h b/E2Manager/asn1codec/e2ap_engine/TAListforMDT.h new file mode 100644 index 0000000..cc7386e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAListforMDT.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAListforMDT_H_ +#define _TAListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAListforMDT */ +typedef struct TAListforMDT { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_TAListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_TAListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAListforMDT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TAListforQMC.c b/E2Manager/asn1codec/e2ap_engine/TAListforQMC.c new file mode 100644 index 0000000..d06ef8c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAListforQMC.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAListforQMC.h" + +asn_per_constraints_t asn_PER_type_TAListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAListforQMC_specs_1 = { + sizeof(struct TAListforQMC), + offsetof(struct TAListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAListforQMC = { + "TAListforQMC", + "TAListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAListforQMC_tags_1, + sizeof(asn_DEF_TAListforQMC_tags_1) + /sizeof(asn_DEF_TAListforQMC_tags_1[0]), /* 1 */ + asn_DEF_TAListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAListforQMC_tags_1) + /sizeof(asn_DEF_TAListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAListforQMC_1, + 1, /* Single element */ + &asn_SPC_TAListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TAListforQMC.h b/E2Manager/asn1codec/e2ap_engine/TAListforQMC.h new file mode 100644 index 0000000..d19d126 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TAListforQMC.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAListforQMC_H_ +#define _TAListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAListforQMC */ +typedef struct TAListforQMC { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_TAListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_TAListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAListforQMC_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-Info.c b/E2Manager/asn1codec/e2ap_engine/TDD-Info.c new file mode 100644 index 0000000..3151cb4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-Info.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, eARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transmission-Bandwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, subframeAssignment), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubframeAssignment, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeAssignment" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, specialSubframe_Info), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpecialSubframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "specialSubframe-Info" + }, + { ATF_POINTER, 1, offsetof(struct TDD_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P206, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_Info_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_TDD_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subframeAssignment */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* specialSubframe-Info */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_specs_1 = { + sizeof(struct TDD_Info), + offsetof(struct TDD_Info, _asn_ctx), + asn_MAP_TDD_Info_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TDD_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_Info = { + "TDD-Info", + "TDD-Info", + &asn_OP_SEQUENCE, + asn_DEF_TDD_Info_tags_1, + sizeof(asn_DEF_TDD_Info_tags_1) + /sizeof(asn_DEF_TDD_Info_tags_1[0]), /* 1 */ + asn_DEF_TDD_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_Info_tags_1) + /sizeof(asn_DEF_TDD_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_Info_1, + 5, /* Elements count */ + &asn_SPC_TDD_Info_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-Info.h b/E2Manager/asn1codec/e2ap_engine/TDD-Info.h new file mode 100644 index 0000000..db43081 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-Info.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_Info_H_ +#define _TDD_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EARFCN.h" +#include "Transmission-Bandwidth.h" +#include "SubframeAssignment.h" +#include "SpecialSubframe-Info.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-Info */ +typedef struct TDD_Info { + EARFCN_t eARFCN; + Transmission_Bandwidth_t transmission_Bandwidth; + SubframeAssignment_t subframeAssignment; + SpecialSubframe_Info_t specialSubframe_Info; + 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; +} TDD_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_Info_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_Info_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c b/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c new file mode 100644 index 0000000..b9760e8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-InfoNeighbourServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information, nRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRFreqInfo" + }, + { ATF_POINTER, 1, offsetof(struct TDD_InfoNeighbourServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P96, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_InfoNeighbourServedNRCell_Information_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoNeighbourServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information, _asn_ctx), + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information = { + "TDD-InfoNeighbourServedNRCell-Information", + "TDD-InfoNeighbourServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1, + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1, + 2, /* Elements count */ + &asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h b/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h new file mode 100644 index 0000000..ef4edcd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_InfoNeighbourServedNRCell_Information_H_ +#define _TDD_InfoNeighbourServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-InfoNeighbourServedNRCell-Information */ +typedef struct TDD_InfoNeighbourServedNRCell_Information { + NRFreqInfo_t nRFreqInfo; + 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; +} TDD_InfoNeighbourServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_InfoNeighbourServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c b/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c new file mode 100644 index 0000000..6232360 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-InfoServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information, nRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information, nR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nR-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct TDD_InfoServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P95, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_InfoServedNRCell_Information_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_TDD_InfoServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_specs_1 = { + sizeof(struct TDD_InfoServedNRCell_Information), + offsetof(struct TDD_InfoServedNRCell_Information, _asn_ctx), + asn_MAP_TDD_InfoServedNRCell_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TDD_InfoServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information = { + "TDD-InfoServedNRCell-Information", + "TDD-InfoServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoServedNRCell_Information_tags_1, + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_TDD_InfoServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoServedNRCell_Information_1, + 3, /* Elements count */ + &asn_SPC_TDD_InfoServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h b/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h new file mode 100644 index 0000000..4fbaa86 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_InfoServedNRCell_Information_H_ +#define _TDD_InfoServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-InfoServedNRCell-Information */ +typedef struct TDD_InfoServedNRCell_Information { + NRFreqInfo_t nRFreqInfo; + NR_TxBW_t nR_TxBW; + 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; +} TDD_InfoServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_InfoServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.c b/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.c new file mode 100644 index 0000000..dfa9950 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TargetCellInUTRAN.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_TargetCellInUTRAN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TargetCellInUTRAN = { + "TargetCellInUTRAN", + "TargetCellInUTRAN", + &asn_OP_OCTET_STRING, + asn_DEF_TargetCellInUTRAN_tags_1, + sizeof(asn_DEF_TargetCellInUTRAN_tags_1) + /sizeof(asn_DEF_TargetCellInUTRAN_tags_1[0]), /* 1 */ + asn_DEF_TargetCellInUTRAN_tags_1, /* Same as above */ + sizeof(asn_DEF_TargetCellInUTRAN_tags_1) + /sizeof(asn_DEF_TargetCellInUTRAN_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.h b/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.h new file mode 100644 index 0000000..bdd48ee --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TargetCellInUTRAN.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TargetCellInUTRAN_H_ +#define _TargetCellInUTRAN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TargetCellInUTRAN */ +typedef OCTET_STRING_t TargetCellInUTRAN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TargetCellInUTRAN; +asn_struct_free_f TargetCellInUTRAN_free; +asn_struct_print_f TargetCellInUTRAN_print; +asn_constr_check_f TargetCellInUTRAN_constraint; +ber_type_decoder_f TargetCellInUTRAN_decode_ber; +der_type_encoder_f TargetCellInUTRAN_encode_der; +xer_type_decoder_f TargetCellInUTRAN_decode_xer; +xer_type_encoder_f TargetCellInUTRAN_encode_xer; +per_type_decoder_f TargetCellInUTRAN_decode_uper; +per_type_encoder_f TargetCellInUTRAN_encode_uper; +per_type_decoder_f TargetCellInUTRAN_decode_aper; +per_type_encoder_f TargetCellInUTRAN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TargetCellInUTRAN_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c b/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c new file mode 100644 index 0000000..71b74ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TargeteNBtoSource-eNBTransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer = { + "TargeteNBtoSource-eNBTransparentContainer", + "TargeteNBtoSource-eNBTransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1, + sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1) + /sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1) + /sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h b/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h new file mode 100644 index 0000000..1ede439 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TargeteNBtoSource_eNBTransparentContainer_H_ +#define _TargeteNBtoSource_eNBTransparentContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TargeteNBtoSource-eNBTransparentContainer */ +typedef OCTET_STRING_t TargeteNBtoSource_eNBTransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer; +asn_struct_free_f TargeteNBtoSource_eNBTransparentContainer_free; +asn_struct_print_f TargeteNBtoSource_eNBTransparentContainer_print; +asn_constr_check_f TargeteNBtoSource_eNBTransparentContainer_constraint; +ber_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_ber; +der_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_der; +xer_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_xer; +xer_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_xer; +per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_uper; +per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_uper; +per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_aper; +per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TargeteNBtoSource_eNBTransparentContainer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.c b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.c new file mode 100644 index 0000000..17caead --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Threshold-RSRP.h" + +int +Threshold_RSRP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 97)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Threshold_RSRP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 97 } /* (0..97) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Threshold_RSRP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Threshold_RSRP = { + "Threshold-RSRP", + "Threshold-RSRP", + &asn_OP_NativeInteger, + asn_DEF_Threshold_RSRP_tags_1, + sizeof(asn_DEF_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_Threshold_RSRP_tags_1[0]), /* 1 */ + asn_DEF_Threshold_RSRP_tags_1, /* Same as above */ + sizeof(asn_DEF_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_Threshold_RSRP_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Threshold_RSRP_constr_1, Threshold_RSRP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.h b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.h new file mode 100644 index 0000000..98d74a8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRP.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Threshold_RSRP_H_ +#define _Threshold_RSRP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Threshold-RSRP */ +typedef long Threshold_RSRP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Threshold_RSRP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Threshold_RSRP; +asn_struct_free_f Threshold_RSRP_free; +asn_struct_print_f Threshold_RSRP_print; +asn_constr_check_f Threshold_RSRP_constraint; +ber_type_decoder_f Threshold_RSRP_decode_ber; +der_type_encoder_f Threshold_RSRP_encode_der; +xer_type_decoder_f Threshold_RSRP_decode_xer; +xer_type_encoder_f Threshold_RSRP_encode_xer; +per_type_decoder_f Threshold_RSRP_decode_uper; +per_type_encoder_f Threshold_RSRP_encode_uper; +per_type_decoder_f Threshold_RSRP_decode_aper; +per_type_encoder_f Threshold_RSRP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Threshold_RSRP_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.c b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.c new file mode 100644 index 0000000..2d90bce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Threshold-RSRQ.h" + +int +Threshold_RSRQ_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 34)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Threshold_RSRQ_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 34 } /* (0..34) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Threshold_RSRQ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Threshold_RSRQ = { + "Threshold-RSRQ", + "Threshold-RSRQ", + &asn_OP_NativeInteger, + asn_DEF_Threshold_RSRQ_tags_1, + sizeof(asn_DEF_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_Threshold_RSRQ_tags_1[0]), /* 1 */ + asn_DEF_Threshold_RSRQ_tags_1, /* Same as above */ + sizeof(asn_DEF_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_Threshold_RSRQ_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Threshold_RSRQ_constr_1, Threshold_RSRQ_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.h b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.h new file mode 100644 index 0000000..a74838a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Threshold-RSRQ.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Threshold_RSRQ_H_ +#define _Threshold_RSRQ_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Threshold-RSRQ */ +typedef long Threshold_RSRQ_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Threshold_RSRQ_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Threshold_RSRQ; +asn_struct_free_f Threshold_RSRQ_free; +asn_struct_print_f Threshold_RSRQ_print; +asn_constr_check_f Threshold_RSRQ_constraint; +ber_type_decoder_f Threshold_RSRQ_decode_ber; +der_type_encoder_f Threshold_RSRQ_encode_der; +xer_type_decoder_f Threshold_RSRQ_decode_xer; +xer_type_encoder_f Threshold_RSRQ_encode_xer; +per_type_decoder_f Threshold_RSRQ_decode_uper; +per_type_encoder_f Threshold_RSRQ_encode_uper; +per_type_decoder_f Threshold_RSRQ_decode_aper; +per_type_encoder_f Threshold_RSRQ_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Threshold_RSRQ_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c new file mode 100644 index 0000000..8d143e1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Time-UE-StayedInCell-EnhancedGranularity.h" + +int +Time_UE_StayedInCell_EnhancedGranularity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 40950)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 40950 } /* (0..40950) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity = { + "Time-UE-StayedInCell-EnhancedGranularity", + "Time-UE-StayedInCell-EnhancedGranularity", + &asn_OP_NativeInteger, + asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1, + sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1, /* Same as above */ + sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1, Time_UE_StayedInCell_EnhancedGranularity_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h new file mode 100644 index 0000000..a218598 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Time_UE_StayedInCell_EnhancedGranularity_H_ +#define _Time_UE_StayedInCell_EnhancedGranularity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Time-UE-StayedInCell-EnhancedGranularity */ +typedef long Time_UE_StayedInCell_EnhancedGranularity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity; +asn_struct_free_f Time_UE_StayedInCell_EnhancedGranularity_free; +asn_struct_print_f Time_UE_StayedInCell_EnhancedGranularity_print; +asn_constr_check_f Time_UE_StayedInCell_EnhancedGranularity_constraint; +ber_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_ber; +der_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_der; +xer_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_xer; +xer_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_xer; +per_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_uper; +per_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_uper; +per_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_aper; +per_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Time_UE_StayedInCell_EnhancedGranularity_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.c b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.c new file mode 100644 index 0000000..eb242cb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Time-UE-StayedInCell.h" + +int +Time_UE_StayedInCell_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Time_UE_StayedInCell_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell = { + "Time-UE-StayedInCell", + "Time-UE-StayedInCell", + &asn_OP_NativeInteger, + asn_DEF_Time_UE_StayedInCell_tags_1, + sizeof(asn_DEF_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + asn_DEF_Time_UE_StayedInCell_tags_1, /* Same as above */ + sizeof(asn_DEF_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Time_UE_StayedInCell_constr_1, Time_UE_StayedInCell_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.h b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.h new file mode 100644 index 0000000..513c0c4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Time-UE-StayedInCell.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Time_UE_StayedInCell_H_ +#define _Time_UE_StayedInCell_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Time-UE-StayedInCell */ +typedef long Time_UE_StayedInCell_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell; +asn_struct_free_f Time_UE_StayedInCell_free; +asn_struct_print_f Time_UE_StayedInCell_print; +asn_constr_check_f Time_UE_StayedInCell_constraint; +ber_type_decoder_f Time_UE_StayedInCell_decode_ber; +der_type_encoder_f Time_UE_StayedInCell_encode_der; +xer_type_decoder_f Time_UE_StayedInCell_decode_xer; +xer_type_encoder_f Time_UE_StayedInCell_encode_xer; +per_type_decoder_f Time_UE_StayedInCell_decode_uper; +per_type_encoder_f Time_UE_StayedInCell_encode_uper; +per_type_decoder_f Time_UE_StayedInCell_decode_aper; +per_type_encoder_f Time_UE_StayedInCell_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Time_UE_StayedInCell_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TimeStamp.c b/E2Manager/asn1codec/e2ap_engine/TimeStamp.c new file mode 100644 index 0000000..e649122 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TimeStamp.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TimeStamp.h" + +int +TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeStamp = { + "TimeStamp", + "TimeStamp", + &asn_OP_OCTET_STRING, + asn_DEF_TimeStamp_tags_1, + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + asn_DEF_TimeStamp_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeStamp_constr_1, TimeStamp_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TimeStamp.h b/E2Manager/asn1codec/e2ap_engine/TimeStamp.h new file mode 100644 index 0000000..04985da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TimeStamp.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TimeStamp_H_ +#define _TimeStamp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeStamp */ +typedef OCTET_STRING_t TimeStamp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeStamp; +asn_struct_free_f TimeStamp_free; +asn_struct_print_f TimeStamp_print; +asn_constr_check_f TimeStamp_constraint; +ber_type_decoder_f TimeStamp_decode_ber; +der_type_encoder_f TimeStamp_encode_der; +xer_type_decoder_f TimeStamp_decode_xer; +xer_type_encoder_f TimeStamp_encode_xer; +per_type_decoder_f TimeStamp_decode_uper; +per_type_encoder_f TimeStamp_encode_uper; +per_type_decoder_f TimeStamp_decode_aper; +per_type_encoder_f TimeStamp_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeStamp_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TimeToWait.c b/E2Manager/asn1codec/e2ap_engine/TimeToWait.c new file mode 100644 index 0000000..6bd8db7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TimeToWait.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_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 */ +}; +const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { + asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_TimeToWait_tags_1, + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TimeToWait.h b/E2Manager/asn1codec/e2ap_engine/TimeToWait.h new file mode 100644 index 0000000..66cbf58 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TimeToWait.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TimeToWait_H_ +#define _TimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeToWait { + TimeToWait_v1s = 0, + TimeToWait_v2s = 1, + TimeToWait_v5s = 2, + TimeToWait_v10s = 3, + TimeToWait_v20s = 4, + TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_TimeToWait; + +/* TimeToWait */ +typedef long TimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1; +asn_struct_free_f TimeToWait_free; +asn_struct_print_f TimeToWait_print; +asn_constr_check_f TimeToWait_constraint; +ber_type_decoder_f TimeToWait_decode_ber; +der_type_encoder_f TimeToWait_encode_der; +xer_type_decoder_f TimeToWait_decode_xer; +xer_type_encoder_f TimeToWait_encode_xer; +per_type_decoder_f TimeToWait_decode_uper; +per_type_encoder_f TimeToWait_encode_uper; +per_type_decoder_f TimeToWait_decode_aper; +per_type_encoder_f TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeToWait_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TraceActivation.c b/E2Manager/asn1codec/e2ap_engine/TraceActivation.c new file mode 100644 index 0000000..d3185da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceActivation.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceActivation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TraceActivation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, eUTRANTraceID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRANTraceID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRANTraceID" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, interfacesToTrace), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfacesToTrace, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfacesToTrace" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, traceDepth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TraceDepth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceDepth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, traceCollectionEntityIPAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TraceCollectionEntityIPAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceCollectionEntityIPAddress" + }, + { ATF_POINTER, 1, offsetof(struct TraceActivation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P207, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TraceActivation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_TraceActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TraceActivation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRANTraceID */ + { (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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_specs_1 = { + sizeof(struct TraceActivation), + offsetof(struct TraceActivation, _asn_ctx), + asn_MAP_TraceActivation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TraceActivation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TraceActivation = { + "TraceActivation", + "TraceActivation", + &asn_OP_SEQUENCE, + asn_DEF_TraceActivation_tags_1, + sizeof(asn_DEF_TraceActivation_tags_1) + /sizeof(asn_DEF_TraceActivation_tags_1[0]), /* 1 */ + asn_DEF_TraceActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceActivation_tags_1) + /sizeof(asn_DEF_TraceActivation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TraceActivation_1, + 5, /* Elements count */ + &asn_SPC_TraceActivation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TraceActivation.h b/E2Manager/asn1codec/e2ap_engine/TraceActivation.h new file mode 100644 index 0000000..0ef3f0f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceActivation.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceActivation_H_ +#define _TraceActivation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EUTRANTraceID.h" +#include "InterfacesToTrace.h" +#include "TraceDepth.h" +#include "TraceCollectionEntityIPAddress.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TraceActivation */ +typedef struct TraceActivation { + EUTRANTraceID_t eUTRANTraceID; + InterfacesToTrace_t interfacesToTrace; + TraceDepth_t traceDepth; + TraceCollectionEntityIPAddress_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; +} TraceActivation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TraceActivation; +extern asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_specs_1; +extern asn_TYPE_member_t asn_MBR_TraceActivation_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceActivation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c b/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c new file mode 100644 index 0000000..fd83d30 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceCollectionEntityIPAddress.h" + +int +TraceCollectionEntityIPAddress_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TraceCollectionEntityIPAddress_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TraceCollectionEntityIPAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TraceCollectionEntityIPAddress = { + "TraceCollectionEntityIPAddress", + "TraceCollectionEntityIPAddress", + &asn_OP_BIT_STRING, + asn_DEF_TraceCollectionEntityIPAddress_tags_1, + sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1) + /sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1[0]), /* 1 */ + asn_DEF_TraceCollectionEntityIPAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1) + /sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TraceCollectionEntityIPAddress_constr_1, TraceCollectionEntityIPAddress_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h b/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h new file mode 100644 index 0000000..d2199ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceCollectionEntityIPAddress_H_ +#define _TraceCollectionEntityIPAddress_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TraceCollectionEntityIPAddress */ +typedef BIT_STRING_t TraceCollectionEntityIPAddress_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TraceCollectionEntityIPAddress_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TraceCollectionEntityIPAddress; +asn_struct_free_f TraceCollectionEntityIPAddress_free; +asn_struct_print_f TraceCollectionEntityIPAddress_print; +asn_constr_check_f TraceCollectionEntityIPAddress_constraint; +ber_type_decoder_f TraceCollectionEntityIPAddress_decode_ber; +der_type_encoder_f TraceCollectionEntityIPAddress_encode_der; +xer_type_decoder_f TraceCollectionEntityIPAddress_decode_xer; +xer_type_encoder_f TraceCollectionEntityIPAddress_encode_xer; +per_type_decoder_f TraceCollectionEntityIPAddress_decode_uper; +per_type_encoder_f TraceCollectionEntityIPAddress_encode_uper; +per_type_decoder_f TraceCollectionEntityIPAddress_decode_aper; +per_type_encoder_f TraceCollectionEntityIPAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceCollectionEntityIPAddress_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TraceDepth.c b/E2Manager/asn1codec/e2ap_engine/TraceDepth.c new file mode 100644 index 0000000..8f861e0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceDepth.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceDepth.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TraceDepth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_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_TraceDepth_enum2value_1[] = { + 2, /* maximum(2) */ + 5, /* maximumWithoutVendorSpecificExtension(5) */ + 1, /* medium(1) */ + 4, /* mediumWithoutVendorSpecificExtension(4) */ + 0, /* minimum(0) */ + 3 /* minimumWithoutVendorSpecificExtension(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TraceDepth_specs_1 = { + asn_MAP_TraceDepth_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_TraceDepth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TraceDepth = { + "TraceDepth", + "TraceDepth", + &asn_OP_NativeEnumerated, + asn_DEF_TraceDepth_tags_1, + sizeof(asn_DEF_TraceDepth_tags_1) + /sizeof(asn_DEF_TraceDepth_tags_1[0]), /* 1 */ + asn_DEF_TraceDepth_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceDepth_tags_1) + /sizeof(asn_DEF_TraceDepth_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TraceDepth_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TraceDepth_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TraceDepth.h b/E2Manager/asn1codec/e2ap_engine/TraceDepth.h new file mode 100644 index 0000000..1b546d1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TraceDepth.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceDepth_H_ +#define _TraceDepth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TraceDepth { + TraceDepth_minimum = 0, + TraceDepth_medium = 1, + TraceDepth_maximum = 2, + TraceDepth_minimumWithoutVendorSpecificExtension = 3, + TraceDepth_mediumWithoutVendorSpecificExtension = 4, + TraceDepth_maximumWithoutVendorSpecificExtension = 5 + /* + * Enumeration is extensible + */ +} e_TraceDepth; + +/* TraceDepth */ +typedef long TraceDepth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TraceDepth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TraceDepth; +extern const asn_INTEGER_specifics_t asn_SPC_TraceDepth_specs_1; +asn_struct_free_f TraceDepth_free; +asn_struct_print_f TraceDepth_print; +asn_constr_check_f TraceDepth_constraint; +ber_type_decoder_f TraceDepth_decode_ber; +der_type_encoder_f TraceDepth_encode_der; +xer_type_decoder_f TraceDepth_decode_xer; +xer_type_encoder_f TraceDepth_encode_xer; +per_type_decoder_f TraceDepth_decode_uper; +per_type_encoder_f TraceDepth_encode_uper; +per_type_decoder_f TraceDepth_decode_aper; +per_type_encoder_f TraceDepth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceDepth_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.c b/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.c new file mode 100644 index 0000000..e793610 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.c @@ -0,0 +1,84 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Transmission-Bandwidth.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Transmission_Bandwidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Transmission_Bandwidth_value2enum_1[] = { + { 0, 3, "bw6" }, + { 1, 4, "bw15" }, + { 2, 4, "bw25" }, + { 3, 4, "bw50" }, + { 4, 4, "bw75" }, + { 5, 5, "bw100" }, + { 6, 3, "bw1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Transmission_Bandwidth_enum2value_1[] = { + 6, /* bw1(6) */ + 5, /* bw100(5) */ + 1, /* bw15(1) */ + 2, /* bw25(2) */ + 3, /* bw50(3) */ + 0, /* bw6(0) */ + 4 /* bw75(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Transmission_Bandwidth_specs_1 = { + asn_MAP_Transmission_Bandwidth_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Transmission_Bandwidth_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* 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_Transmission_Bandwidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Transmission_Bandwidth = { + "Transmission-Bandwidth", + "Transmission-Bandwidth", + &asn_OP_NativeEnumerated, + asn_DEF_Transmission_Bandwidth_tags_1, + sizeof(asn_DEF_Transmission_Bandwidth_tags_1) + /sizeof(asn_DEF_Transmission_Bandwidth_tags_1[0]), /* 1 */ + asn_DEF_Transmission_Bandwidth_tags_1, /* Same as above */ + sizeof(asn_DEF_Transmission_Bandwidth_tags_1) + /sizeof(asn_DEF_Transmission_Bandwidth_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Transmission_Bandwidth_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Transmission_Bandwidth_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.h b/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.h new file mode 100644 index 0000000..d001457 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/Transmission-Bandwidth.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Transmission_Bandwidth_H_ +#define _Transmission_Bandwidth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Transmission_Bandwidth { + Transmission_Bandwidth_bw6 = 0, + Transmission_Bandwidth_bw15 = 1, + Transmission_Bandwidth_bw25 = 2, + Transmission_Bandwidth_bw50 = 3, + Transmission_Bandwidth_bw75 = 4, + Transmission_Bandwidth_bw100 = 5, + /* + * Enumeration is extensible + */ + Transmission_Bandwidth_bw1 = 6 +} e_Transmission_Bandwidth; + +/* Transmission-Bandwidth */ +typedef long Transmission_Bandwidth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Transmission_Bandwidth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Transmission_Bandwidth; +extern const asn_INTEGER_specifics_t asn_SPC_Transmission_Bandwidth_specs_1; +asn_struct_free_f Transmission_Bandwidth_free; +asn_struct_print_f Transmission_Bandwidth_print; +asn_constr_check_f Transmission_Bandwidth_constraint; +ber_type_decoder_f Transmission_Bandwidth_decode_ber; +der_type_encoder_f Transmission_Bandwidth_encode_der; +xer_type_decoder_f Transmission_Bandwidth_decode_xer; +xer_type_encoder_f Transmission_Bandwidth_encode_xer; +per_type_decoder_f Transmission_Bandwidth_decode_uper; +per_type_encoder_f Transmission_Bandwidth_encode_uper; +per_type_decoder_f Transmission_Bandwidth_decode_aper; +per_type_encoder_f Transmission_Bandwidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Transmission_Bandwidth_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.c b/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.c new file mode 100644 index 0000000..bd9b23d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TransportLayerAddress.h" + +int +TransportLayerAddress_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TransportLayerAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress = { + "TransportLayerAddress", + "TransportLayerAddress", + &asn_OP_BIT_STRING, + asn_DEF_TransportLayerAddress_tags_1, + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + asn_DEF_TransportLayerAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TransportLayerAddress_constr_1, TransportLayerAddress_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.h b/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.h new file mode 100644 index 0000000..78ce1ff --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TransportLayerAddress.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TransportLayerAddress_H_ +#define _TransportLayerAddress_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransportLayerAddress */ +typedef BIT_STRING_t TransportLayerAddress_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress; +asn_struct_free_f TransportLayerAddress_free; +asn_struct_print_f TransportLayerAddress_print; +asn_constr_check_f TransportLayerAddress_constraint; +ber_type_decoder_f TransportLayerAddress_decode_ber; +der_type_encoder_f TransportLayerAddress_encode_der; +xer_type_decoder_f TransportLayerAddress_decode_xer; +xer_type_encoder_f TransportLayerAddress_encode_xer; +per_type_decoder_f TransportLayerAddress_decode_uper; +per_type_encoder_f TransportLayerAddress_encode_uper; +per_type_decoder_f TransportLayerAddress_decode_aper; +per_type_encoder_f TransportLayerAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransportLayerAddress_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.c b/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.c new file mode 100644 index 0000000..9db5d44 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 20, "unsuccessful-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessful-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.h b/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.h new file mode 100644 index 0000000..0742eb7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TriggeringMessage.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessful_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TunnelInformation.c b/E2Manager/asn1codec/e2ap_engine/TunnelInformation.c new file mode 100644 index 0000000..a3e718b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TunnelInformation.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TunnelInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TunnelInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TunnelInformation, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct TunnelInformation, uDP_Port_Number), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Port_Number, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uDP-Port-Number" + }, + { ATF_POINTER, 1, offsetof(struct TunnelInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P208, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TunnelInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_TunnelInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TunnelInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TunnelInformation_specs_1 = { + sizeof(struct TunnelInformation), + offsetof(struct TunnelInformation, _asn_ctx), + asn_MAP_TunnelInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TunnelInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TunnelInformation = { + "TunnelInformation", + "TunnelInformation", + &asn_OP_SEQUENCE, + asn_DEF_TunnelInformation_tags_1, + sizeof(asn_DEF_TunnelInformation_tags_1) + /sizeof(asn_DEF_TunnelInformation_tags_1[0]), /* 1 */ + asn_DEF_TunnelInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_TunnelInformation_tags_1) + /sizeof(asn_DEF_TunnelInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TunnelInformation_1, + 3, /* Elements count */ + &asn_SPC_TunnelInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TunnelInformation.h b/E2Manager/asn1codec/e2ap_engine/TunnelInformation.h new file mode 100644 index 0000000..94daaab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TunnelInformation.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TunnelInformation_H_ +#define _TunnelInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TransportLayerAddress.h" +#include "Port-Number.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TunnelInformation */ +typedef struct TunnelInformation { + TransportLayerAddress_t transportLayerAddress; + Port_Number_t *uDP_Port_Number; /* 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; +} TunnelInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TunnelInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_TunnelInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_TunnelInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TunnelInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TypeOfError.c b/E2Manager/asn1codec/e2ap_engine/TypeOfError.c new file mode 100644 index 0000000..df6d2c1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TypeOfError.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_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_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TypeOfError.h b/E2Manager/asn1codec/e2ap_engine/TypeOfError.h new file mode 100644 index 0000000..ee6e44c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TypeOfError.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.c b/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.c new file mode 100644 index 0000000..f8a4f86 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TypeOfMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfMessage_value2enum_1[] = { + { 0, 7, "nothing" }, + { 1, 18, "initiating-message" }, + { 2, 18, "successful-outcome" }, + { 3, 20, "unsuccessful-outcome" } +}; +static const unsigned int asn_MAP_TypeOfMessage_enum2value_1[] = { + 1, /* initiating-message(1) */ + 0, /* nothing(0) */ + 2, /* successful-outcome(2) */ + 3 /* unsuccessful-outcome(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfMessage_specs_1 = { + asn_MAP_TypeOfMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfMessage_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* 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_TypeOfMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfMessage = { + "TypeOfMessage", + "TypeOfMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfMessage_tags_1, + sizeof(asn_DEF_TypeOfMessage_tags_1) + /sizeof(asn_DEF_TypeOfMessage_tags_1[0]), /* 1 */ + asn_DEF_TypeOfMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfMessage_tags_1) + /sizeof(asn_DEF_TypeOfMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfMessage_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.h b/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.h new file mode 100644 index 0000000..d2ffbae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/TypeOfMessage.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TypeOfMessage_H_ +#define _TypeOfMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfMessage { + TypeOfMessage_nothing = 0, + TypeOfMessage_initiating_message = 1, + TypeOfMessage_successful_outcome = 2, + TypeOfMessage_unsuccessful_outcome = 3 +} e_TypeOfMessage; + +/* TypeOfMessage */ +typedef long TypeOfMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfMessage_specs_1; +asn_struct_free_f TypeOfMessage_free; +asn_struct_print_f TypeOfMessage_print; +asn_constr_check_f TypeOfMessage_constraint; +ber_type_decoder_f TypeOfMessage_decode_ber; +der_type_encoder_f TypeOfMessage_encode_der; +xer_type_decoder_f TypeOfMessage_decode_xer; +xer_type_encoder_f TypeOfMessage_encode_xer; +per_type_decoder_f TypeOfMessage_decode_uper; +per_type_encoder_f TypeOfMessage_encode_uper; +per_type_decoder_f TypeOfMessage_decode_aper; +per_type_encoder_f TypeOfMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfMessage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c new file mode 100644 index 0000000..664a57a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c @@ -0,0 +1,137 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformation-SgNBModReq.h" + +#include "NRUESecurityCapabilities.h" +#include "UEAggregateMaximumBitRate.h" +#include "E-RABs-ToBeAdded-SgNBModReq-List.h" +#include "E-RABs-ToBeModified-SgNBModReq-List.h" +#include "E-RABs-ToBeReleased-SgNBModReq-List.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformation_SgNBModReq_1[] = { + { ATF_POINTER, 7, offsetof(struct UE_ContextInformation_SgNBModReq, nRUE_SecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRUE-SecurityCapabilities" + }, + { ATF_POINTER, 6, offsetof(struct UE_ContextInformation_SgNBModReq, sgNB_SecurityKey), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-SecurityKey" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformation_SgNBModReq, sgNBUEAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBUEAggregateMaximumBitRate" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeAdded), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeAdded" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeModified), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeModified" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeReleased), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeReleased" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation_SgNBModReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformation_SgNBModReq_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_SgNBModReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRUE-SecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-SecurityKey */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNBUEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RABs-ToBeAdded */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e-RABs-ToBeModified */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeReleased */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_SgNBModReq_specs_1 = { + sizeof(struct UE_ContextInformation_SgNBModReq), + offsetof(struct UE_ContextInformation_SgNBModReq, _asn_ctx), + asn_MAP_UE_ContextInformation_SgNBModReq_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_UE_ContextInformation_SgNBModReq_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_SgNBModReq = { + "UE-ContextInformation-SgNBModReq", + "UE-ContextInformation-SgNBModReq", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_SgNBModReq_tags_1, + sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_SgNBModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_SgNBModReq_1, + 7, /* Elements count */ + &asn_SPC_UE_ContextInformation_SgNBModReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h new file mode 100644 index 0000000..a83c922 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformation_SgNBModReq_H_ +#define _UE_ContextInformation_SgNBModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SgNBSecurityKey.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRUESecurityCapabilities; +struct UEAggregateMaximumBitRate; +struct E_RABs_ToBeAdded_SgNBModReq_List; +struct E_RABs_ToBeModified_SgNBModReq_List; +struct E_RABs_ToBeReleased_SgNBModReq_List; +struct ProtocolExtensionContainer; + +/* UE-ContextInformation-SgNBModReq */ +typedef struct UE_ContextInformation_SgNBModReq { + struct NRUESecurityCapabilities *nRUE_SecurityCapabilities; /* OPTIONAL */ + SgNBSecurityKey_t *sgNB_SecurityKey; /* OPTIONAL */ + struct UEAggregateMaximumBitRate *sgNBUEAggregateMaximumBitRate; /* OPTIONAL */ + struct E_RABs_ToBeAdded_SgNBModReq_List *e_RABs_ToBeAdded; /* OPTIONAL */ + struct E_RABs_ToBeModified_SgNBModReq_List *e_RABs_ToBeModified; /* OPTIONAL */ + struct E_RABs_ToBeReleased_SgNBModReq_List *e_RABs_ToBeReleased; /* 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; +} UE_ContextInformation_SgNBModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_SgNBModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformation_SgNBModReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.c new file mode 100644 index 0000000..d1c697b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.c @@ -0,0 +1,164 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformation.h" + +#include "HandoverRestrictionList.h" +#include "LocationReportingInformation.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, uESecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, aS_SecurityInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AS_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "aS-SecurityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, uEaggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation, subscriberProfileIDforRFP), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, e_RABs_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeSetup-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, rRC_Context), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRC_Context, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Context" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformation, handoverRestrictionList), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "handoverRestrictionList" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformation, locationReportingInformation), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LocationReportingInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "locationReportingInformation" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformation_oms_1[] = { 4, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uESecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aS-SecurityInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uEaggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* subscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeSetup-List */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rRC-Context */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* handoverRestrictionList */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* locationReportingInformation */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_specs_1 = { + sizeof(struct UE_ContextInformation), + offsetof(struct UE_ContextInformation, _asn_ctx), + asn_MAP_UE_ContextInformation_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_UE_ContextInformation_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation = { + "UE-ContextInformation", + "UE-ContextInformation", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_tags_1, + sizeof(asn_DEF_UE_ContextInformation_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_1, + 10, /* Elements count */ + &asn_SPC_UE_ContextInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.h new file mode 100644 index 0000000..8a70e39 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformation.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformation_H_ +#define _UE_ContextInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-S1AP-ID.h" +#include "UESecurityCapabilities.h" +#include "AS-SecurityInformation.h" +#include "UEAggregateMaximumBitRate.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-ToBeSetup-List.h" +#include "RRC-Context.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HandoverRestrictionList; +struct LocationReportingInformation; +struct ProtocolExtensionContainer; + +/* UE-ContextInformation */ +typedef struct UE_ContextInformation { + UE_S1AP_ID_t mME_UE_S1AP_ID; + UESecurityCapabilities_t uESecurityCapabilities; + AS_SecurityInformation_t aS_SecurityInformation; + UEAggregateMaximumBitRate_t uEaggregateMaximumBitRate; + SubscriberProfileIDforRFP_t *subscriberProfileIDforRFP; /* OPTIONAL */ + E_RABs_ToBeSetup_List_t e_RABs_ToBeSetup_List; + RRC_Context_t rRC_Context; + struct HandoverRestrictionList *handoverRestrictionList; /* OPTIONAL */ + struct LocationReportingInformation *locationReportingInformation; /* 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; +} UE_ContextInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c new file mode 100644 index 0000000..7df24b4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c @@ -0,0 +1,185 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformationRetrieve.h" + +#include "HandoverRestrictionList.h" +#include "LocationReportingInformation.h" +#include "MDTPLMNList.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, uESecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, aS_SecurityInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AS_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "aS-SecurityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, uEaggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationRetrieve, subscriberProfileIDforRFP), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, e_RABs_ToBeSetup_ListRetrieve), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeSetup_ListRetrieve, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeSetup-ListRetrieve" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, rRC_Context), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRC_Context, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Context" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformationRetrieve, handoverRestrictionList), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "handoverRestrictionList" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformationRetrieve, locationReportingInformation), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LocationReportingInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "locationReportingInformation" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformationRetrieve, managBasedMDTallowed), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ManagementBasedMDTallowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "managBasedMDTallowed" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformationRetrieve, managBasedMDTPLMNList), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "managBasedMDTPLMNList" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationRetrieve, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformationRetrieve_oms_1[] = { 4, 7, 8, 9, 10, 11 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationRetrieve_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationRetrieve_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uESecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aS-SecurityInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uEaggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* subscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeSetup-ListRetrieve */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rRC-Context */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* handoverRestrictionList */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* locationReportingInformation */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* managBasedMDTallowed */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* managBasedMDTPLMNList */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_specs_1 = { + sizeof(struct UE_ContextInformationRetrieve), + offsetof(struct UE_ContextInformationRetrieve, _asn_ctx), + asn_MAP_UE_ContextInformationRetrieve_tag2el_1, + 12, /* Count of tags in the map */ + asn_MAP_UE_ContextInformationRetrieve_oms_1, /* Optional members */ + 6, 0, /* Root/Additions */ + 12, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve = { + "UE-ContextInformationRetrieve", + "UE-ContextInformationRetrieve", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationRetrieve_tags_1, + sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformationRetrieve_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationRetrieve_1, + 12, /* Elements count */ + &asn_SPC_UE_ContextInformationRetrieve_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h new file mode 100644 index 0000000..aa4d602 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h @@ -0,0 +1,85 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformationRetrieve_H_ +#define _UE_ContextInformationRetrieve_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-S1AP-ID.h" +#include "UESecurityCapabilities.h" +#include "AS-SecurityInformation.h" +#include "UEAggregateMaximumBitRate.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-ToBeSetup-ListRetrieve.h" +#include "RRC-Context.h" +#include "ManagementBasedMDTallowed.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HandoverRestrictionList; +struct LocationReportingInformation; +struct MDTPLMNList; +struct ProtocolExtensionContainer; + +/* UE-ContextInformationRetrieve */ +typedef struct UE_ContextInformationRetrieve { + UE_S1AP_ID_t mME_UE_S1AP_ID; + UESecurityCapabilities_t uESecurityCapabilities; + AS_SecurityInformation_t aS_SecurityInformation; + UEAggregateMaximumBitRate_t uEaggregateMaximumBitRate; + SubscriberProfileIDforRFP_t *subscriberProfileIDforRFP; /* OPTIONAL */ + E_RABs_ToBeSetup_ListRetrieve_t e_RABs_ToBeSetup_ListRetrieve; + RRC_Context_t rRC_Context; + struct HandoverRestrictionList *handoverRestrictionList; /* OPTIONAL */ + struct LocationReportingInformation *locationReportingInformation; /* OPTIONAL */ + ManagementBasedMDTallowed_t *managBasedMDTallowed; /* OPTIONAL */ + struct MDTPLMNList *managBasedMDTPLMNList; /* 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; +} UE_ContextInformationRetrieve_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformationRetrieve_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c new file mode 100644 index 0000000..8b08f77 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c @@ -0,0 +1,137 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformationSeNBModReq.h" + +#include "UESecurityCapabilities.h" +#include "UEAggregateMaximumBitRate.h" +#include "E-RABs-ToBeAdded-List-ModReq.h" +#include "E-RABs-ToBeModified-List-ModReq.h" +#include "E-RABs-ToBeReleased-List-ModReq.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReq_1[] = { + { ATF_POINTER, 7, offsetof(struct UE_ContextInformationSeNBModReq, uE_SecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-SecurityCapabilities" + }, + { ATF_POINTER, 6, offsetof(struct UE_ContextInformationSeNBModReq, seNB_SecurityKey), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SeNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-SecurityKey" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformationSeNBModReq, seNBUEAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNBUEAggregateMaximumBitRate" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeAdded), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeAdded" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeModified), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeModified" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeReleased), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeReleased" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationSeNBModReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformationSeNBModReq_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSeNBModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSeNBModReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-SecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-SecurityKey */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seNBUEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RABs-ToBeAdded */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e-RABs-ToBeModified */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeReleased */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReq_specs_1 = { + sizeof(struct UE_ContextInformationSeNBModReq), + offsetof(struct UE_ContextInformationSeNBModReq, _asn_ctx), + asn_MAP_UE_ContextInformationSeNBModReq_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_UE_ContextInformationSeNBModReq_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReq = { + "UE-ContextInformationSeNBModReq", + "UE-ContextInformationSeNBModReq", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSeNBModReq_tags_1, + sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformationSeNBModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSeNBModReq_1, + 7, /* Elements count */ + &asn_SPC_UE_ContextInformationSeNBModReq_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h new file mode 100644 index 0000000..cc45e4c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h @@ -0,0 +1,75 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformationSeNBModReq_H_ +#define _UE_ContextInformationSeNBModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SeNBSecurityKey.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UESecurityCapabilities; +struct UEAggregateMaximumBitRate; +struct E_RABs_ToBeAdded_List_ModReq; +struct E_RABs_ToBeModified_List_ModReq; +struct E_RABs_ToBeReleased_List_ModReq; +struct ProtocolExtensionContainer; + +/* UE-ContextInformationSeNBModReq */ +typedef struct UE_ContextInformationSeNBModReq { + struct UESecurityCapabilities *uE_SecurityCapabilities; /* OPTIONAL */ + SeNBSecurityKey_t *seNB_SecurityKey; /* OPTIONAL */ + struct UEAggregateMaximumBitRate *seNBUEAggregateMaximumBitRate; /* OPTIONAL */ + struct E_RABs_ToBeAdded_List_ModReq *e_RABs_ToBeAdded; /* OPTIONAL */ + struct E_RABs_ToBeModified_List_ModReq *e_RABs_ToBeModified; /* OPTIONAL */ + struct E_RABs_ToBeReleased_List_ModReq *e_RABs_ToBeReleased; /* 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; +} UE_ContextInformationSeNBModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformationSeNBModReq_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c new file mode 100644 index 0000000..67724cc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextKeptIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_ContextKeptIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UE_ContextKeptIndicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UE_ContextKeptIndicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UE_ContextKeptIndicator_specs_1 = { + asn_MAP_UE_ContextKeptIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UE_ContextKeptIndicator_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_UE_ContextKeptIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextKeptIndicator = { + "UE-ContextKeptIndicator", + "UE-ContextKeptIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_UE_ContextKeptIndicator_tags_1, + sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1) + /sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextKeptIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1) + /sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_ContextKeptIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UE_ContextKeptIndicator_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h new file mode 100644 index 0000000..8d34f7b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextKeptIndicator_H_ +#define _UE_ContextKeptIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UE_ContextKeptIndicator { + UE_ContextKeptIndicator_true = 0 + /* + * Enumeration is extensible + */ +} e_UE_ContextKeptIndicator; + +/* UE-ContextKeptIndicator */ +typedef long UE_ContextKeptIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_ContextKeptIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextKeptIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_UE_ContextKeptIndicator_specs_1; +asn_struct_free_f UE_ContextKeptIndicator_free; +asn_struct_print_f UE_ContextKeptIndicator_print; +asn_constr_check_f UE_ContextKeptIndicator_constraint; +ber_type_decoder_f UE_ContextKeptIndicator_decode_ber; +der_type_encoder_f UE_ContextKeptIndicator_encode_der; +xer_type_decoder_f UE_ContextKeptIndicator_decode_xer; +xer_type_encoder_f UE_ContextKeptIndicator_encode_xer; +per_type_decoder_f UE_ContextKeptIndicator_decode_uper; +per_type_encoder_f UE_ContextKeptIndicator_encode_uper; +per_type_decoder_f UE_ContextKeptIndicator_decode_aper; +per_type_encoder_f UE_ContextKeptIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextKeptIndicator_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c new file mode 100644 index 0000000..b3f8051 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtSeNB.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, source_GlobalSeNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalSeNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, seNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, seNB_UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-UE-X2AP-ID-Extension" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtSeNB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtSeNB_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSeNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSeNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalSeNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seNB-UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_specs_1 = { + sizeof(struct UE_ContextReferenceAtSeNB), + offsetof(struct UE_ContextReferenceAtSeNB, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSeNB_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtSeNB_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB = { + "UE-ContextReferenceAtSeNB", + "UE-ContextReferenceAtSeNB", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSeNB_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSeNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSeNB_1, + 4, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSeNB_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h new file mode 100644 index 0000000..5f14108 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtSeNB_H_ +#define _UE_ContextReferenceAtSeNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include "UE-X2AP-ID.h" +#include "UE-X2AP-ID-Extension.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtSeNB */ +typedef struct UE_ContextReferenceAtSeNB { + GlobalENB_ID_t source_GlobalSeNB_ID; + UE_X2AP_ID_t seNB_UE_X2AP_ID; + UE_X2AP_ID_Extension_t seNB_UE_X2AP_ID_Extension; + 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; +} UE_ContextReferenceAtSeNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtSeNB_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c new file mode 100644 index 0000000..8d96afc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtSgNB.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB, source_GlobalSgNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalSgNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB, sgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UE-X2AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtSgNB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtSgNB_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSgNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSgNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalSgNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_specs_1 = { + sizeof(struct UE_ContextReferenceAtSgNB), + offsetof(struct UE_ContextReferenceAtSgNB, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSgNB_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtSgNB_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB = { + "UE-ContextReferenceAtSgNB", + "UE-ContextReferenceAtSgNB", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSgNB_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSgNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSgNB_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSgNB_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h new file mode 100644 index 0000000..b7ea193 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtSgNB_H_ +#define _UE_ContextReferenceAtSgNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalGNB-ID.h" +#include "SgNB-UE-X2AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtSgNB */ +typedef struct UE_ContextReferenceAtSgNB { + GlobalGNB_ID_t source_GlobalSgNB_ID; + SgNB_UE_X2AP_ID_t sgNB_UE_X2AP_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; +} UE_ContextReferenceAtSgNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtSgNB_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c new file mode 100644 index 0000000..e390e6c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtWT.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT, wTID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_WTID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT, wT_UE_XwAP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WT_UE_XwAP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wT-UE-XwAP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtWT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtWT_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtWT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtWT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wTID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* wT-UE-XwAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_specs_1 = { + sizeof(struct UE_ContextReferenceAtWT), + offsetof(struct UE_ContextReferenceAtWT, _asn_ctx), + asn_MAP_UE_ContextReferenceAtWT_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtWT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT = { + "UE-ContextReferenceAtWT", + "UE-ContextReferenceAtWT", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtWT_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtWT_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtWT_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtWT_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h new file mode 100644 index 0000000..245e72f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtWT_H_ +#define _UE_ContextReferenceAtWT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WTID.h" +#include "WT-UE-XwAP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtWT */ +typedef struct UE_ContextReferenceAtWT { + WTID_t wTID; + WT_UE_XwAP_ID_t wT_UE_XwAP_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; +} UE_ContextReferenceAtWT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtWT_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.c b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.c new file mode 100644 index 0000000..2eb6a16 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-HistoryInformation.h" + +#include "LastVisitedCell-Item.h" +asn_per_constraints_t asn_PER_type_UE_HistoryInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UE_HistoryInformation_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_LastVisitedCell_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_HistoryInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UE_HistoryInformation_specs_1 = { + sizeof(struct UE_HistoryInformation), + offsetof(struct UE_HistoryInformation, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformation = { + "UE-HistoryInformation", + "UE-HistoryInformation", + &asn_OP_SEQUENCE_OF, + asn_DEF_UE_HistoryInformation_tags_1, + sizeof(asn_DEF_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_UE_HistoryInformation_tags_1[0]), /* 1 */ + asn_DEF_UE_HistoryInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_UE_HistoryInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_HistoryInformation_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UE_HistoryInformation_1, + 1, /* Single element */ + &asn_SPC_UE_HistoryInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.h b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.h new file mode 100644 index 0000000..d4ba842 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformation.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_HistoryInformation_H_ +#define _UE_HistoryInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct LastVisitedCell_Item; + +/* UE-HistoryInformation */ +typedef struct UE_HistoryInformation { + A_SEQUENCE_OF(struct LastVisitedCell_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_HistoryInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformation; +extern asn_SET_OF_specifics_t asn_SPC_UE_HistoryInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_UE_HistoryInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_UE_HistoryInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_HistoryInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c new file mode 100644 index 0000000..1254098 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-HistoryInformationFromTheUE.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_HistoryInformationFromTheUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformationFromTheUE = { + "UE-HistoryInformationFromTheUE", + "UE-HistoryInformationFromTheUE", + &asn_OP_OCTET_STRING, + asn_DEF_UE_HistoryInformationFromTheUE_tags_1, + sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + asn_DEF_UE_HistoryInformationFromTheUE_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h new file mode 100644 index 0000000..c34c8af --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_HistoryInformationFromTheUE_H_ +#define _UE_HistoryInformationFromTheUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-HistoryInformationFromTheUE */ +typedef OCTET_STRING_t UE_HistoryInformationFromTheUE_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformationFromTheUE; +asn_struct_free_f UE_HistoryInformationFromTheUE_free; +asn_struct_print_f UE_HistoryInformationFromTheUE_print; +asn_constr_check_f UE_HistoryInformationFromTheUE_constraint; +ber_type_decoder_f UE_HistoryInformationFromTheUE_decode_ber; +der_type_encoder_f UE_HistoryInformationFromTheUE_encode_der; +xer_type_decoder_f UE_HistoryInformationFromTheUE_decode_xer; +xer_type_encoder_f UE_HistoryInformationFromTheUE_encode_xer; +per_type_decoder_f UE_HistoryInformationFromTheUE_decode_uper; +per_type_encoder_f UE_HistoryInformationFromTheUE_encode_uper; +per_type_decoder_f UE_HistoryInformationFromTheUE_decode_aper; +per_type_encoder_f UE_HistoryInformationFromTheUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_HistoryInformationFromTheUE_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c new file mode 100644 index 0000000..ed39385 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-RLF-Report-Container-for-extended-bands.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container_for_extended_bands = { + "UE-RLF-Report-Container-for-extended-bands", + "UE-RLF-Report-Container-for-extended-bands", + &asn_OP_OCTET_STRING, + asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1, + sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h new file mode 100644 index 0000000..16198e8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_RLF_Report_Container_for_extended_bands_H_ +#define _UE_RLF_Report_Container_for_extended_bands_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-RLF-Report-Container-for-extended-bands */ +typedef OCTET_STRING_t UE_RLF_Report_Container_for_extended_bands_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container_for_extended_bands; +asn_struct_free_f UE_RLF_Report_Container_for_extended_bands_free; +asn_struct_print_f UE_RLF_Report_Container_for_extended_bands_print; +asn_constr_check_f UE_RLF_Report_Container_for_extended_bands_constraint; +ber_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_ber; +der_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_der; +xer_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_xer; +xer_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_xer; +per_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_uper; +per_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_uper; +per_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_aper; +per_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_RLF_Report_Container_for_extended_bands_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.c b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.c new file mode 100644 index 0000000..31e70b3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-RLF-Report-Container.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_RLF_Report_Container_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container = { + "UE-RLF-Report-Container", + "UE-RLF-Report-Container", + &asn_OP_OCTET_STRING, + asn_DEF_UE_RLF_Report_Container_tags_1, + sizeof(asn_DEF_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + asn_DEF_UE_RLF_Report_Container_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.h b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.h new file mode 100644 index 0000000..4dfa175 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-RLF-Report-Container.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_RLF_Report_Container_H_ +#define _UE_RLF_Report_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-RLF-Report-Container */ +typedef OCTET_STRING_t UE_RLF_Report_Container_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container; +asn_struct_free_f UE_RLF_Report_Container_free; +asn_struct_print_f UE_RLF_Report_Container_print; +asn_constr_check_f UE_RLF_Report_Container_constraint; +ber_type_decoder_f UE_RLF_Report_Container_decode_ber; +der_type_encoder_f UE_RLF_Report_Container_encode_der; +xer_type_decoder_f UE_RLF_Report_Container_decode_xer; +xer_type_encoder_f UE_RLF_Report_Container_encode_xer; +per_type_decoder_f UE_RLF_Report_Container_decode_uper; +per_type_encoder_f UE_RLF_Report_Container_encode_uper; +per_type_decoder_f UE_RLF_Report_Container_decode_aper; +per_type_encoder_f UE_RLF_Report_Container_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_RLF_Report_Container_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.c b/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.c new file mode 100644 index 0000000..3ab64f7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-S1AP-ID.h" + +int +UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +const asn_INTEGER_specifics_t asn_SPC_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_UE_S1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_S1AP_ID = { + "UE-S1AP-ID", + "UE-S1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_UE_S1AP_ID_tags_1, + sizeof(asn_DEF_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_UE_S1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_UE_S1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_UE_S1AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_S1AP_ID_constr_1, UE_S1AP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_UE_S1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.h b/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.h new file mode 100644 index 0000000..095d614 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-S1AP-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_S1AP_ID_H_ +#define _UE_S1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-S1AP-ID */ +typedef unsigned long UE_S1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_S1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_S1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_UE_S1AP_ID_specs_1; +asn_struct_free_f UE_S1AP_ID_free; +asn_struct_print_f UE_S1AP_ID_print; +asn_constr_check_f UE_S1AP_ID_constraint; +ber_type_decoder_f UE_S1AP_ID_decode_ber; +der_type_encoder_f UE_S1AP_ID_encode_der; +xer_type_decoder_f UE_S1AP_ID_decode_xer; +xer_type_encoder_f UE_S1AP_ID_encode_xer; +per_type_decoder_f UE_S1AP_ID_decode_uper; +per_type_encoder_f UE_S1AP_ID_encode_uper; +per_type_decoder_f UE_S1AP_ID_decode_aper; +per_type_encoder_f UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_S1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c new file mode 100644 index 0000000..da5d8fa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-X2AP-ID-Extension.h" + +int +UE_X2AP_ID_Extension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 0, 4095 } /* (0..4095,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UE_X2AP_ID_Extension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID_Extension = { + "UE-X2AP-ID-Extension", + "UE-X2AP-ID-Extension", + &asn_OP_NativeInteger, + asn_DEF_UE_X2AP_ID_Extension_tags_1, + sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + asn_DEF_UE_X2AP_ID_Extension_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_X2AP_ID_Extension_constr_1, UE_X2AP_ID_Extension_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h new file mode 100644 index 0000000..4b9ef70 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_X2AP_ID_Extension_H_ +#define _UE_X2AP_ID_Extension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-X2AP-ID-Extension */ +typedef long UE_X2AP_ID_Extension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_X2AP_ID_Extension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID_Extension; +asn_struct_free_f UE_X2AP_ID_Extension_free; +asn_struct_print_f UE_X2AP_ID_Extension_print; +asn_constr_check_f UE_X2AP_ID_Extension_constraint; +ber_type_decoder_f UE_X2AP_ID_Extension_decode_ber; +der_type_encoder_f UE_X2AP_ID_Extension_encode_der; +xer_type_decoder_f UE_X2AP_ID_Extension_decode_xer; +xer_type_encoder_f UE_X2AP_ID_Extension_encode_xer; +per_type_decoder_f UE_X2AP_ID_Extension_decode_uper; +per_type_encoder_f UE_X2AP_ID_Extension_encode_uper; +per_type_decoder_f UE_X2AP_ID_Extension_decode_aper; +per_type_encoder_f UE_X2AP_ID_Extension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_X2AP_ID_Extension_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.c b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.c new file mode 100644 index 0000000..a04b705 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-X2AP-ID.h" + +int +UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_X2AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UE_X2AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID = { + "UE-X2AP-ID", + "UE-X2AP-ID", + &asn_OP_NativeInteger, + asn_DEF_UE_X2AP_ID_tags_1, + sizeof(asn_DEF_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_tags_1[0]), /* 1 */ + asn_DEF_UE_X2AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_X2AP_ID_constr_1, UE_X2AP_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.h b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.h new file mode 100644 index 0000000..8092a54 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UE-X2AP-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_X2AP_ID_H_ +#define _UE_X2AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-X2AP-ID */ +typedef long UE_X2AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_X2AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID; +asn_struct_free_f UE_X2AP_ID_free; +asn_struct_print_f UE_X2AP_ID_print; +asn_constr_check_f UE_X2AP_ID_constraint; +ber_type_decoder_f UE_X2AP_ID_decode_ber; +der_type_encoder_f UE_X2AP_ID_encode_der; +xer_type_decoder_f UE_X2AP_ID_decode_xer; +xer_type_encoder_f UE_X2AP_ID_encode_xer; +per_type_decoder_f UE_X2AP_ID_decode_uper; +per_type_encoder_f UE_X2AP_ID_encode_uper; +per_type_decoder_f UE_X2AP_ID_decode_aper; +per_type_encoder_f UE_X2AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_X2AP_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c b/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c new file mode 100644 index 0000000..f78787a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEAggregateMaximumBitRate.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UEAggregateMaximumBitRate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregateMaximumBitRate, uEaggregateMaximumBitRateDownlink), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateDownlink" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAggregateMaximumBitRate, uEaggregateMaximumBitRateUplink), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateUplink" + }, + { ATF_POINTER, 1, offsetof(struct UEAggregateMaximumBitRate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P209, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEAggregateMaximumBitRate_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UEAggregateMaximumBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAggregateMaximumBitRate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uEaggregateMaximumBitRateDownlink */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uEaggregateMaximumBitRateUplink */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAggregateMaximumBitRate_specs_1 = { + sizeof(struct UEAggregateMaximumBitRate), + offsetof(struct UEAggregateMaximumBitRate, _asn_ctx), + asn_MAP_UEAggregateMaximumBitRate_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UEAggregateMaximumBitRate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAggregateMaximumBitRate = { + "UEAggregateMaximumBitRate", + "UEAggregateMaximumBitRate", + &asn_OP_SEQUENCE, + asn_DEF_UEAggregateMaximumBitRate_tags_1, + sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1[0]), /* 1 */ + asn_DEF_UEAggregateMaximumBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAggregateMaximumBitRate_1, + 3, /* Elements count */ + &asn_SPC_UEAggregateMaximumBitRate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h b/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h new file mode 100644 index 0000000..1061fba --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEAggregateMaximumBitRate_H_ +#define _UEAggregateMaximumBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEAggregateMaximumBitRate */ +typedef struct UEAggregateMaximumBitRate { + BitRate_t uEaggregateMaximumBitRateDownlink; + BitRate_t uEaggregateMaximumBitRateUplink; + 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; +} UEAggregateMaximumBitRate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEAggregateMaximumBitRate; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAggregateMaximumBitRate_specs_1; +extern asn_TYPE_member_t asn_MBR_UEAggregateMaximumBitRate_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEAggregateMaximumBitRate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c b/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c new file mode 100644 index 0000000..198559c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c @@ -0,0 +1,123 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEAppLayerMeasConfig.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_containerForAppLayerMeasConfig_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 1000)) { + /* 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_containerForAppLayerMeasConfig_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1000 } /* (SIZE(1..1000)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig, containerForAppLayerMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_containerForAppLayerMeasConfig_constr_2, memb_containerForAppLayerMeasConfig_constraint_1 }, + 0, 0, /* No default value */ + "containerForAppLayerMeasConfig" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig, areaScopeOfQMC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_AreaScopeOfQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "areaScopeOfQMC" + }, + { ATF_POINTER, 1, offsetof(struct UEAppLayerMeasConfig, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P210, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEAppLayerMeasConfig_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UEAppLayerMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAppLayerMeasConfig_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* containerForAppLayerMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* areaScopeOfQMC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_specs_1 = { + sizeof(struct UEAppLayerMeasConfig), + offsetof(struct UEAppLayerMeasConfig, _asn_ctx), + asn_MAP_UEAppLayerMeasConfig_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UEAppLayerMeasConfig_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig = { + "UEAppLayerMeasConfig", + "UEAppLayerMeasConfig", + &asn_OP_SEQUENCE, + asn_DEF_UEAppLayerMeasConfig_tags_1, + sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1) + /sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_UEAppLayerMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1) + /sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAppLayerMeasConfig_1, + 3, /* Elements count */ + &asn_SPC_UEAppLayerMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h b/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h new file mode 100644 index 0000000..41c92aa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEAppLayerMeasConfig_H_ +#define _UEAppLayerMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "AreaScopeOfQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEAppLayerMeasConfig */ +typedef struct UEAppLayerMeasConfig { + OCTET_STRING_t containerForAppLayerMeasConfig; + AreaScopeOfQMC_t areaScopeOfQMC; + 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; +} UEAppLayerMeasConfig_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_specs_1; +extern asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEAppLayerMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEContextRelease.c b/E2Manager/asn1codec/e2ap_engine/UEContextRelease.c new file mode 100644 index 0000000..d032b37 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEContextRelease.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEContextRelease.h" + +static asn_TYPE_member_t asn_MBR_UEContextRelease_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEContextRelease_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEContextRelease_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_specs_1 = { + sizeof(struct UEContextRelease), + offsetof(struct UEContextRelease, _asn_ctx), + asn_MAP_UEContextRelease_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEContextRelease = { + "UEContextRelease", + "UEContextRelease", + &asn_OP_SEQUENCE, + asn_DEF_UEContextRelease_tags_1, + sizeof(asn_DEF_UEContextRelease_tags_1) + /sizeof(asn_DEF_UEContextRelease_tags_1[0]), /* 1 */ + asn_DEF_UEContextRelease_tags_1, /* Same as above */ + sizeof(asn_DEF_UEContextRelease_tags_1) + /sizeof(asn_DEF_UEContextRelease_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEContextRelease_1, + 1, /* Elements count */ + &asn_SPC_UEContextRelease_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEContextRelease.h b/E2Manager/asn1codec/e2ap_engine/UEContextRelease.h new file mode 100644 index 0000000..4209768 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEContextRelease.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEContextRelease_H_ +#define _UEContextRelease_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEContextRelease */ +typedef struct UEContextRelease { + ProtocolIE_Container_119P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEContextRelease_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEContextRelease; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEContextRelease_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEID.c b/E2Manager/asn1codec/e2ap_engine/UEID.c new file mode 100644 index 0000000..c042eaa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEID.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEID.h" + +int +UEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UEID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UEID = { + "UEID", + "UEID", + &asn_OP_BIT_STRING, + asn_DEF_UEID_tags_1, + sizeof(asn_DEF_UEID_tags_1) + /sizeof(asn_DEF_UEID_tags_1[0]), /* 1 */ + asn_DEF_UEID_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_tags_1) + /sizeof(asn_DEF_UEID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UEID_constr_1, UEID_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEID.h b/E2Manager/asn1codec/e2ap_engine/UEID.h new file mode 100644 index 0000000..8c82be7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEID_H_ +#define _UEID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID */ +typedef BIT_STRING_t UEID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UEID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UEID; +asn_struct_free_f UEID_free; +asn_struct_print_f UEID_print; +asn_constr_check_f UEID_constraint; +ber_type_decoder_f UEID_decode_ber; +der_type_encoder_f UEID_encode_der; +xer_type_decoder_f UEID_decode_xer; +xer_type_encoder_f UEID_encode_xer; +per_type_decoder_f UEID_decode_uper; +per_type_encoder_f UEID_encode_uper; +per_type_decoder_f UEID_decode_aper; +per_type_encoder_f UEID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.c b/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.c new file mode 100644 index 0000000..ad9dd18 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UENRMeasurement.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UENRMeasurement_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement, uENRMeasurements), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uENRMeasurements" + }, + { ATF_POINTER, 1, offsetof(struct UENRMeasurement, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P171, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UENRMeasurement_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UENRMeasurement_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UENRMeasurement_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uENRMeasurements */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_specs_1 = { + sizeof(struct UENRMeasurement), + offsetof(struct UENRMeasurement, _asn_ctx), + asn_MAP_UENRMeasurement_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UENRMeasurement_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UENRMeasurement = { + "UENRMeasurement", + "UENRMeasurement", + &asn_OP_SEQUENCE, + asn_DEF_UENRMeasurement_tags_1, + sizeof(asn_DEF_UENRMeasurement_tags_1) + /sizeof(asn_DEF_UENRMeasurement_tags_1[0]), /* 1 */ + asn_DEF_UENRMeasurement_tags_1, /* Same as above */ + sizeof(asn_DEF_UENRMeasurement_tags_1) + /sizeof(asn_DEF_UENRMeasurement_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UENRMeasurement_1, + 2, /* Elements count */ + &asn_SPC_UENRMeasurement_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.h b/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.h new file mode 100644 index 0000000..c12a6d5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UENRMeasurement.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UENRMeasurement_H_ +#define _UENRMeasurement_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RRCContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UENRMeasurement */ +typedef struct UENRMeasurement { + RRCContainer_t uENRMeasurements; + 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; +} UENRMeasurement_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UENRMeasurement; +extern asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_specs_1; +extern asn_TYPE_member_t asn_MBR_UENRMeasurement_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UENRMeasurement_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.c b/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.c new file mode 100644 index 0000000..f506901 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UESecurityCapabilities.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UESecurityCapabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities, encryptionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EncryptionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "encryptionAlgorithms" + }, + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities, integrityProtectionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntegrityProtectionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "integrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct UESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P211, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UESecurityCapabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UESecurityCapabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_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 */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_specs_1 = { + sizeof(struct UESecurityCapabilities), + offsetof(struct UESecurityCapabilities, _asn_ctx), + asn_MAP_UESecurityCapabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UESecurityCapabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities = { + "UESecurityCapabilities", + "UESecurityCapabilities", + &asn_OP_SEQUENCE, + asn_DEF_UESecurityCapabilities_tags_1, + sizeof(asn_DEF_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_UESecurityCapabilities_tags_1[0]), /* 1 */ + asn_DEF_UESecurityCapabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_UESecurityCapabilities_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_UESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.h b/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.h new file mode 100644 index 0000000..4e8f810 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UESecurityCapabilities.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UESecurityCapabilities_H_ +#define _UESecurityCapabilities_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EncryptionAlgorithms.h" +#include "IntegrityProtectionAlgorithms.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UESecurityCapabilities */ +typedef struct UESecurityCapabilities { + EncryptionAlgorithms_t encryptionAlgorithms; + 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; +} UESecurityCapabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities; +extern asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_specs_1; +extern asn_TYPE_member_t asn_MBR_UESecurityCapabilities_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UESecurityCapabilities_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c b/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c new file mode 100644 index 0000000..f6fc584 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UESidelinkAggregateMaximumBitRate.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UESidelinkAggregateMaximumBitRate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESidelinkAggregateMaximumBitRate, uESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESidelinkAggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UESidelinkAggregateMaximumBitRate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P212, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UESidelinkAggregateMaximumBitRate_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UESidelinkAggregateMaximumBitRate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uESidelinkAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1 = { + sizeof(struct UESidelinkAggregateMaximumBitRate), + offsetof(struct UESidelinkAggregateMaximumBitRate, _asn_ctx), + asn_MAP_UESidelinkAggregateMaximumBitRate_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UESidelinkAggregateMaximumBitRate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESidelinkAggregateMaximumBitRate = { + "UESidelinkAggregateMaximumBitRate", + "UESidelinkAggregateMaximumBitRate", + &asn_OP_SEQUENCE, + asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1, + sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[0]), /* 1 */ + asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESidelinkAggregateMaximumBitRate_1, + 2, /* Elements count */ + &asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h b/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h new file mode 100644 index 0000000..96d183e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UESidelinkAggregateMaximumBitRate_H_ +#define _UESidelinkAggregateMaximumBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UESidelinkAggregateMaximumBitRate */ +typedef struct UESidelinkAggregateMaximumBitRate { + BitRate_t uESidelinkAggregateMaximumBitRate; + 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; +} UESidelinkAggregateMaximumBitRate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UESidelinkAggregateMaximumBitRate; +extern asn_SEQUENCE_specifics_t asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1; +extern asn_TYPE_member_t asn_MBR_UESidelinkAggregateMaximumBitRate_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UESidelinkAggregateMaximumBitRate_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.c b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.c new file mode 100644 index 0000000..cfd7cea --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.c @@ -0,0 +1,102 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEsToBeResetList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item, meNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-ID" + }, + { ATF_POINTER, 3, offsetof(struct UEsToBeResetList_Item, meNB_ID_ext), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-ID-ext" + }, + { ATF_POINTER, 2, offsetof(struct UEsToBeResetList_Item, sgNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEsToBeResetList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P213, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEsToBeResetList_Item_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEsToBeResetList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-ID-ext */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_specs_1 = { + sizeof(struct UEsToBeResetList_Item), + offsetof(struct UEsToBeResetList_Item, _asn_ctx), + asn_MAP_UEsToBeResetList_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_UEsToBeResetList_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item = { + "UEsToBeResetList-Item", + "UEsToBeResetList-Item", + &asn_OP_SEQUENCE, + asn_DEF_UEsToBeResetList_Item_tags_1, + sizeof(asn_DEF_UEsToBeResetList_Item_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_Item_tags_1[0]), /* 1 */ + asn_DEF_UEsToBeResetList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_Item_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEsToBeResetList_Item_1, + 4, /* Elements count */ + &asn_SPC_UEsToBeResetList_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.h b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.h new file mode 100644 index 0000000..64cf229 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList-Item.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEsToBeResetList_Item_H_ +#define _UEsToBeResetList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-X2AP-ID.h" +#include "UE-X2AP-ID-Extension.h" +#include "SgNB-UE-X2AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEsToBeResetList-Item */ +typedef struct UEsToBeResetList_Item { + UE_X2AP_ID_t meNB_ID; + UE_X2AP_ID_Extension_t *meNB_ID_ext; /* OPTIONAL */ + SgNB_UE_X2AP_ID_t *sgNB_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; +} UEsToBeResetList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEsToBeResetList_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.c b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.c new file mode 100644 index 0000000..1338e3d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEsToBeResetList.h" + +#include "UEsToBeResetList-Item.h" +asn_per_constraints_t asn_PER_type_UEsToBeResetList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 13, 13, 1, 8192 } /* (SIZE(1..8192)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UEsToBeResetList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UEsToBeResetList_specs_1 = { + sizeof(struct UEsToBeResetList), + offsetof(struct UEsToBeResetList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList = { + "UEsToBeResetList", + "UEsToBeResetList", + &asn_OP_SEQUENCE_OF, + asn_DEF_UEsToBeResetList_tags_1, + sizeof(asn_DEF_UEsToBeResetList_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_tags_1[0]), /* 1 */ + asn_DEF_UEsToBeResetList_tags_1, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UEsToBeResetList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UEsToBeResetList_1, + 1, /* Single element */ + &asn_SPC_UEsToBeResetList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.h b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.h new file mode 100644 index 0000000..83a0eb2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UEsToBeResetList.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEsToBeResetList_H_ +#define _UEsToBeResetList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEsToBeResetList_Item; + +/* UEsToBeResetList */ +typedef struct UEsToBeResetList { + A_SEQUENCE_OF(struct UEsToBeResetList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEsToBeResetList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList; +extern asn_SET_OF_specifics_t asn_SPC_UEsToBeResetList_specs_1; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_1[1]; +extern asn_per_constraints_t asn_PER_type_UEsToBeResetList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEsToBeResetList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c new file mode 100644 index 0000000..a9d6c46 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-GBR-PRB-usage.h" + +int +UL_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_UL_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_GBR_PRB_usage = { + "UL-GBR-PRB-usage", + "UL-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_GBR_PRB_usage_constr_1, UL_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h new file mode 100644 index 0000000..1e7c539 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_GBR_PRB_usage_H_ +#define _UL_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-GBR-PRB-usage */ +typedef long UL_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_GBR_PRB_usage; +asn_struct_free_f UL_GBR_PRB_usage_free; +asn_struct_print_f UL_GBR_PRB_usage_print; +asn_constr_check_f UL_GBR_PRB_usage_constraint; +ber_type_decoder_f UL_GBR_PRB_usage_decode_ber; +der_type_encoder_f UL_GBR_PRB_usage_encode_der; +xer_type_decoder_f UL_GBR_PRB_usage_decode_xer; +xer_type_encoder_f UL_GBR_PRB_usage_encode_xer; +per_type_decoder_f UL_GBR_PRB_usage_decode_uper; +per_type_encoder_f UL_GBR_PRB_usage_encode_uper; +per_type_decoder_f UL_GBR_PRB_usage_decode_aper; +per_type_encoder_f UL_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c new file mode 100644 index 0000000..5664da7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndication.h" + +int +UL_HighInterferenceIndication_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 110)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 110 } /* (SIZE(1..110,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndication = { + "UL-HighInterferenceIndication", + "UL-HighInterferenceIndication", + &asn_OP_BIT_STRING, + asn_DEF_UL_HighInterferenceIndication_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_HighInterferenceIndication_constr_1, UL_HighInterferenceIndication_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h new file mode 100644 index 0000000..4367bf9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndication_H_ +#define _UL_HighInterferenceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-HighInterferenceIndication */ +typedef BIT_STRING_t UL_HighInterferenceIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndication; +asn_struct_free_f UL_HighInterferenceIndication_free; +asn_struct_print_f UL_HighInterferenceIndication_print; +asn_constr_check_f UL_HighInterferenceIndication_constraint; +ber_type_decoder_f UL_HighInterferenceIndication_decode_ber; +der_type_encoder_f UL_HighInterferenceIndication_encode_der; +xer_type_decoder_f UL_HighInterferenceIndication_decode_xer; +xer_type_encoder_f UL_HighInterferenceIndication_encode_xer; +per_type_decoder_f UL_HighInterferenceIndication_decode_uper; +per_type_encoder_f UL_HighInterferenceIndication_encode_uper; +per_type_decoder_f UL_HighInterferenceIndication_decode_aper; +per_type_encoder_f UL_HighInterferenceIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c new file mode 100644 index 0000000..21868e8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndicationInfo-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item, target_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "target-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item, ul_interferenceindication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_HighInterferenceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-interferenceindication" + }, + { ATF_POINTER, 1, offsetof(struct UL_HighInterferenceIndicationInfo_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P216, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UL_HighInterferenceIndicationInfo_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UL_HighInterferenceIndicationInfo_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* target-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-interferenceindication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item), + offsetof(struct UL_HighInterferenceIndicationInfo_Item, _asn_ctx), + asn_MAP_UL_HighInterferenceIndicationInfo_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UL_HighInterferenceIndicationInfo_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item = { + "UL-HighInterferenceIndicationInfo-Item", + "UL-HighInterferenceIndicationInfo-Item", + &asn_OP_SEQUENCE, + asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_Item_1, + 3, /* Elements count */ + &asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h new file mode 100644 index 0000000..29903a9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndicationInfo_Item_H_ +#define _UL_HighInterferenceIndicationInfo_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "UL-HighInterferenceIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UL-HighInterferenceIndicationInfo-Item */ +typedef struct UL_HighInterferenceIndicationInfo_Item { + ECGI_t target_Cell_ID; + UL_HighInterferenceIndication_t ul_interferenceindication; + 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; +} UL_HighInterferenceIndicationInfo_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndicationInfo_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c new file mode 100644 index 0000000..6afcfcc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndicationInfo.h" + +#include "UL-HighInterferenceIndicationInfo-Item.h" +asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UL_HighInterferenceIndicationInfo_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_specs_1 = { + sizeof(struct UL_HighInterferenceIndicationInfo), + offsetof(struct UL_HighInterferenceIndicationInfo, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo = { + "UL-HighInterferenceIndicationInfo", + "UL-HighInterferenceIndicationInfo", + &asn_OP_SEQUENCE_OF, + asn_DEF_UL_HighInterferenceIndicationInfo_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_1, + 1, /* Single element */ + &asn_SPC_UL_HighInterferenceIndicationInfo_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h new file mode 100644 index 0000000..02420d0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndicationInfo_H_ +#define _UL_HighInterferenceIndicationInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UL_HighInterferenceIndicationInfo_Item; + +/* UL-HighInterferenceIndicationInfo */ +typedef struct UL_HighInterferenceIndicationInfo { + A_SEQUENCE_OF(struct UL_HighInterferenceIndicationInfo_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_HighInterferenceIndicationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo; +extern asn_SET_OF_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_1[1]; +extern asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndicationInfo_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c new file mode 100644 index 0000000..9132e02 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-InterferenceOverloadIndication-Item.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UL_InterferenceOverloadIndication_Item_value2enum_1[] = { + { 0, 17, "high-interference" }, + { 1, 19, "medium-interference" }, + { 2, 16, "low-interference" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UL_InterferenceOverloadIndication_Item_enum2value_1[] = { + 0, /* high-interference(0) */ + 2, /* low-interference(2) */ + 1 /* medium-interference(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1 = { + asn_MAP_UL_InterferenceOverloadIndication_Item_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UL_InterferenceOverloadIndication_Item_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_UL_InterferenceOverloadIndication_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication_Item = { + "UL-InterferenceOverloadIndication-Item", + "UL-InterferenceOverloadIndication-Item", + &asn_OP_NativeEnumerated, + asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1, + sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1[0]), /* 1 */ + asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h new file mode 100644 index 0000000..9023892 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_InterferenceOverloadIndication_Item_H_ +#define _UL_InterferenceOverloadIndication_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UL_InterferenceOverloadIndication_Item { + UL_InterferenceOverloadIndication_Item_high_interference = 0, + UL_InterferenceOverloadIndication_Item_medium_interference = 1, + UL_InterferenceOverloadIndication_Item_low_interference = 2 + /* + * Enumeration is extensible + */ +} e_UL_InterferenceOverloadIndication_Item; + +/* UL-InterferenceOverloadIndication-Item */ +typedef long UL_InterferenceOverloadIndication_Item_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication_Item; +extern const asn_INTEGER_specifics_t asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1; +asn_struct_free_f UL_InterferenceOverloadIndication_Item_free; +asn_struct_print_f UL_InterferenceOverloadIndication_Item_print; +asn_constr_check_f UL_InterferenceOverloadIndication_Item_constraint; +ber_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_ber; +der_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_der; +xer_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_xer; +xer_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_xer; +per_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_uper; +per_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_uper; +per_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_aper; +per_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_InterferenceOverloadIndication_Item_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c new file mode 100644 index 0000000..edc8ba3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-InterferenceOverloadIndication.h" + +asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 110 } /* (SIZE(1..110)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UL_InterferenceOverloadIndication_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UL_InterferenceOverloadIndication_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_InterferenceOverloadIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UL_InterferenceOverloadIndication_specs_1 = { + sizeof(struct UL_InterferenceOverloadIndication), + offsetof(struct UL_InterferenceOverloadIndication, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication = { + "UL-InterferenceOverloadIndication", + "UL-InterferenceOverloadIndication", + &asn_OP_SEQUENCE_OF, + asn_DEF_UL_InterferenceOverloadIndication_tags_1, + sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1[0]), /* 1 */ + asn_DEF_UL_InterferenceOverloadIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_InterferenceOverloadIndication_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UL_InterferenceOverloadIndication_1, + 1, /* Single element */ + &asn_SPC_UL_InterferenceOverloadIndication_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h new file mode 100644 index 0000000..83d3564 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_InterferenceOverloadIndication_H_ +#define _UL_InterferenceOverloadIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UL-InterferenceOverloadIndication-Item.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-InterferenceOverloadIndication */ +typedef struct UL_InterferenceOverloadIndication { + A_SEQUENCE_OF(UL_InterferenceOverloadIndication_Item_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_InterferenceOverloadIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication; +extern asn_SET_OF_specifics_t asn_SPC_UL_InterferenceOverloadIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_InterferenceOverloadIndication_1[1]; +extern asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_InterferenceOverloadIndication_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.c new file mode 100644 index 0000000..6579bb3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-Total-PRB-usage.h" + +int +UL_Total_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_UL_Total_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_Total_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_Total_PRB_usage = { + "UL-Total-PRB-usage", + "UL-Total-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_Total_PRB_usage_tags_1, + sizeof(asn_DEF_UL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_Total_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_Total_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_Total_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_Total_PRB_usage_constr_1, UL_Total_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.h new file mode 100644 index 0000000..f5ed502 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-Total-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_Total_PRB_usage_H_ +#define _UL_Total_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-Total-PRB-usage */ +typedef long UL_Total_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_Total_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_Total_PRB_usage; +asn_struct_free_f UL_Total_PRB_usage_free; +asn_struct_print_f UL_Total_PRB_usage_print; +asn_constr_check_f UL_Total_PRB_usage_constraint; +ber_type_decoder_f UL_Total_PRB_usage_decode_ber; +der_type_encoder_f UL_Total_PRB_usage_encode_der; +xer_type_decoder_f UL_Total_PRB_usage_decode_xer; +xer_type_encoder_f UL_Total_PRB_usage_encode_xer; +per_type_decoder_f UL_Total_PRB_usage_decode_uper; +per_type_encoder_f UL_Total_PRB_usage_encode_uper; +per_type_decoder_f UL_Total_PRB_usage_decode_aper; +per_type_encoder_f UL_Total_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_Total_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.c b/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.c new file mode 100644 index 0000000..1a888aa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.c @@ -0,0 +1,76 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-UE-Configuration.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_UE_Configuration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UL_UE_Configuration_value2enum_1[] = { + { 0, 7, "no-data" }, + { 1, 6, "shared" }, + { 2, 4, "only" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UL_UE_Configuration_enum2value_1[] = { + 0, /* no-data(0) */ + 2, /* only(2) */ + 1 /* shared(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UL_UE_Configuration_specs_1 = { + asn_MAP_UL_UE_Configuration_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UL_UE_Configuration_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_UL_UE_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_UE_Configuration = { + "UL-UE-Configuration", + "UL-UE-Configuration", + &asn_OP_NativeEnumerated, + asn_DEF_UL_UE_Configuration_tags_1, + sizeof(asn_DEF_UL_UE_Configuration_tags_1) + /sizeof(asn_DEF_UL_UE_Configuration_tags_1[0]), /* 1 */ + asn_DEF_UL_UE_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_UE_Configuration_tags_1) + /sizeof(asn_DEF_UL_UE_Configuration_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_UE_Configuration_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UL_UE_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.h b/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.h new file mode 100644 index 0000000..cd35b34 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-UE-Configuration.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_UE_Configuration_H_ +#define _UL_UE_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UL_UE_Configuration { + UL_UE_Configuration_no_data = 0, + UL_UE_Configuration_shared = 1, + UL_UE_Configuration_only = 2 + /* + * Enumeration is extensible + */ +} e_UL_UE_Configuration; + +/* UL-UE-Configuration */ +typedef long UL_UE_Configuration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_UE_Configuration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_UE_Configuration; +extern const asn_INTEGER_specifics_t asn_SPC_UL_UE_Configuration_specs_1; +asn_struct_free_f UL_UE_Configuration_free; +asn_struct_print_f UL_UE_Configuration_print; +asn_constr_check_f UL_UE_Configuration_constraint; +ber_type_decoder_f UL_UE_Configuration_decode_ber; +der_type_encoder_f UL_UE_Configuration_encode_der; +xer_type_decoder_f UL_UE_Configuration_decode_xer; +xer_type_encoder_f UL_UE_Configuration_encode_xer; +per_type_decoder_f UL_UE_Configuration_decode_uper; +per_type_encoder_f UL_UE_Configuration_encode_uper; +per_type_decoder_f UL_UE_Configuration_decode_aper; +per_type_encoder_f UL_UE_Configuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_UE_Configuration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c b/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c new file mode 100644 index 0000000..5f7d8e7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-non-GBR-PRB-usage.h" + +int +UL_non_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_UL_non_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_non_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_non_GBR_PRB_usage = { + "UL-non-GBR-PRB-usage", + "UL-non-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_non_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_non_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_non_GBR_PRB_usage_constr_1, UL_non_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h b/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h new file mode 100644 index 0000000..dfdf49d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_non_GBR_PRB_usage_H_ +#define _UL_non_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-non-GBR-PRB-usage */ +typedef long UL_non_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_non_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_non_GBR_PRB_usage; +asn_struct_free_f UL_non_GBR_PRB_usage_free; +asn_struct_print_f UL_non_GBR_PRB_usage_print; +asn_constr_check_f UL_non_GBR_PRB_usage_constraint; +ber_type_decoder_f UL_non_GBR_PRB_usage_decode_ber; +der_type_encoder_f UL_non_GBR_PRB_usage_encode_der; +xer_type_decoder_f UL_non_GBR_PRB_usage_decode_xer; +xer_type_encoder_f UL_non_GBR_PRB_usage_encode_xer; +per_type_decoder_f UL_non_GBR_PRB_usage_decode_uper; +per_type_encoder_f UL_non_GBR_PRB_usage_encode_uper; +per_type_decoder_f UL_non_GBR_PRB_usage_decode_aper; +per_type_encoder_f UL_non_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_non_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c b/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c new file mode 100644 index 0000000..375e7d0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-scheduling-PDCCH-CCE-usage.h" + +int +UL_scheduling_PDCCH_CCE_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_scheduling_PDCCH_CCE_usage = { + "UL-scheduling-PDCCH-CCE-usage", + "UL-scheduling-PDCCH-CCE-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1, + sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1, UL_scheduling_PDCCH_CCE_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h b/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h new file mode 100644 index 0000000..2091838 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_scheduling_PDCCH_CCE_usage_H_ +#define _UL_scheduling_PDCCH_CCE_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-scheduling-PDCCH-CCE-usage */ +typedef long UL_scheduling_PDCCH_CCE_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_scheduling_PDCCH_CCE_usage; +asn_struct_free_f UL_scheduling_PDCCH_CCE_usage_free; +asn_struct_print_f UL_scheduling_PDCCH_CCE_usage_print; +asn_constr_check_f UL_scheduling_PDCCH_CCE_usage_constraint; +ber_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_ber; +der_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_der; +xer_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_xer; +xer_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_xer; +per_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_uper; +per_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_uper; +per_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_aper; +per_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_scheduling_PDCCH_CCE_usage_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ULConfiguration.c b/E2Manager/asn1codec/e2ap_engine/ULConfiguration.c new file mode 100644 index 0000000..a919bb8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULConfiguration.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULConfiguration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration, uL_PDCP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_UE_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-PDCP" + }, + { ATF_POINTER, 1, offsetof(struct ULConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P215, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULConfiguration_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ULConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-PDCP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_specs_1 = { + sizeof(struct ULConfiguration), + offsetof(struct ULConfiguration, _asn_ctx), + asn_MAP_ULConfiguration_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ULConfiguration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULConfiguration = { + "ULConfiguration", + "ULConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_ULConfiguration_tags_1, + sizeof(asn_DEF_ULConfiguration_tags_1) + /sizeof(asn_DEF_ULConfiguration_tags_1[0]), /* 1 */ + asn_DEF_ULConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_ULConfiguration_tags_1) + /sizeof(asn_DEF_ULConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULConfiguration_1, + 2, /* Elements count */ + &asn_SPC_ULConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ULConfiguration.h b/E2Manager/asn1codec/e2ap_engine/ULConfiguration.h new file mode 100644 index 0000000..0de0788 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULConfiguration.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULConfiguration_H_ +#define _ULConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UL-UE-Configuration.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULConfiguration */ +typedef struct ULConfiguration { + UL_UE_Configuration_t uL_PDCP; + 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; +} ULConfiguration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_ULConfiguration_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULConfiguration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.c b/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.c new file mode 100644 index 0000000..123c6d7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULOnlySharing.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULOnlySharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing, uLResourceBitmapULOnlySharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DataTrafficResources, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLResourceBitmapULOnlySharing" + }, + { ATF_POINTER, 1, offsetof(struct ULOnlySharing, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P217, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULOnlySharing_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ULOnlySharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULOnlySharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLResourceBitmapULOnlySharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_specs_1 = { + sizeof(struct ULOnlySharing), + offsetof(struct ULOnlySharing, _asn_ctx), + asn_MAP_ULOnlySharing_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ULOnlySharing_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULOnlySharing = { + "ULOnlySharing", + "ULOnlySharing", + &asn_OP_SEQUENCE, + asn_DEF_ULOnlySharing_tags_1, + sizeof(asn_DEF_ULOnlySharing_tags_1) + /sizeof(asn_DEF_ULOnlySharing_tags_1[0]), /* 1 */ + asn_DEF_ULOnlySharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULOnlySharing_tags_1) + /sizeof(asn_DEF_ULOnlySharing_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULOnlySharing_1, + 2, /* Elements count */ + &asn_SPC_ULOnlySharing_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.h b/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.h new file mode 100644 index 0000000..dbd8842 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULOnlySharing.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULOnlySharing_H_ +#define _ULOnlySharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULOnlySharing */ +typedef struct ULOnlySharing { + DataTrafficResources_t uLResourceBitmapULOnlySharing; + 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; +} ULOnlySharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULOnlySharing; +extern asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULOnlySharing_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULOnlySharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c b/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c new file mode 100644 index 0000000..6a3d02e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULResourceBitmapULandDLSharing.h" + +int +ULResourceBitmapULandDLSharing_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const DataTrafficResources_t *st = (const DataTrafficResources_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 >= 6 && size <= 17600)) { + /* 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 DataTrafficResources, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ULResourceBitmapULandDLSharing_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ULResourceBitmapULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ULResourceBitmapULandDLSharing = { + "ULResourceBitmapULandDLSharing", + "ULResourceBitmapULandDLSharing", + &asn_OP_BIT_STRING, + asn_DEF_ULResourceBitmapULandDLSharing_tags_1, + sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_ULResourceBitmapULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ULResourceBitmapULandDLSharing_constr_1, ULResourceBitmapULandDLSharing_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h b/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h new file mode 100644 index 0000000..7ec3bad --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULResourceBitmapULandDLSharing_H_ +#define _ULResourceBitmapULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ULResourceBitmapULandDLSharing */ +typedef DataTrafficResources_t ULResourceBitmapULandDLSharing_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ULResourceBitmapULandDLSharing_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ULResourceBitmapULandDLSharing; +asn_struct_free_f ULResourceBitmapULandDLSharing_free; +asn_struct_print_f ULResourceBitmapULandDLSharing_print; +asn_constr_check_f ULResourceBitmapULandDLSharing_constraint; +ber_type_decoder_f ULResourceBitmapULandDLSharing_decode_ber; +der_type_encoder_f ULResourceBitmapULandDLSharing_encode_der; +xer_type_decoder_f ULResourceBitmapULandDLSharing_decode_xer; +xer_type_encoder_f ULResourceBitmapULandDLSharing_encode_xer; +per_type_decoder_f ULResourceBitmapULandDLSharing_decode_uper; +per_type_encoder_f ULResourceBitmapULandDLSharing_encode_uper; +per_type_decoder_f ULResourceBitmapULandDLSharing_decode_aper; +per_type_encoder_f ULResourceBitmapULandDLSharing_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULResourceBitmapULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c b/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c new file mode 100644 index 0000000..24b3990 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULResourcesULandDLSharing.h" + +asn_per_constraints_t asn_PER_type_ULResourcesULandDLSharing_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ULResourcesULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULResourcesULandDLSharing, choice.unchanged), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unchanged" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULResourcesULandDLSharing, choice.changed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULResourceBitmapULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "changed" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ULResourcesULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* unchanged */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* changed */ +}; +asn_CHOICE_specifics_t asn_SPC_ULResourcesULandDLSharing_specs_1 = { + sizeof(struct ULResourcesULandDLSharing), + offsetof(struct ULResourcesULandDLSharing, _asn_ctx), + offsetof(struct ULResourcesULandDLSharing, present), + sizeof(((struct ULResourcesULandDLSharing *)0)->present), + asn_MAP_ULResourcesULandDLSharing_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ULResourcesULandDLSharing = { + "ULResourcesULandDLSharing", + "ULResourcesULandDLSharing", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ULResourcesULandDLSharing_constr_1, CHOICE_constraint }, + asn_MBR_ULResourcesULandDLSharing_1, + 2, /* Elements count */ + &asn_SPC_ULResourcesULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h b/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h new file mode 100644 index 0000000..cba9586 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULResourcesULandDLSharing_H_ +#define _ULResourcesULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "ULResourceBitmapULandDLSharing.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ULResourcesULandDLSharing_PR { + ULResourcesULandDLSharing_PR_NOTHING, /* No components present */ + ULResourcesULandDLSharing_PR_unchanged, + ULResourcesULandDLSharing_PR_changed + /* Extensions may appear below */ + +} ULResourcesULandDLSharing_PR; + +/* ULResourcesULandDLSharing */ +typedef struct ULResourcesULandDLSharing { + ULResourcesULandDLSharing_PR present; + union ULResourcesULandDLSharing_u { + NULL_t unchanged; + ULResourceBitmapULandDLSharing_t changed; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULResourcesULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULResourcesULandDLSharing; +extern asn_CHOICE_specifics_t asn_SPC_ULResourcesULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULResourcesULandDLSharing_1[2]; +extern asn_per_constraints_t asn_PER_type_ULResourcesULandDLSharing_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULResourcesULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.c b/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.c new file mode 100644 index 0000000..8dec949 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULandDLSharing.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing, uLResourcesULandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ULResourcesULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLResourcesULandDLSharing" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing, dLResourcesULandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_DLResourcesULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLResourcesULandDLSharing" + }, + { ATF_POINTER, 1, offsetof(struct ULandDLSharing, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P214, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULandDLSharing_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLResourcesULandDLSharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dLResourcesULandDLSharing */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_specs_1 = { + sizeof(struct ULandDLSharing), + offsetof(struct ULandDLSharing, _asn_ctx), + asn_MAP_ULandDLSharing_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ULandDLSharing_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULandDLSharing = { + "ULandDLSharing", + "ULandDLSharing", + &asn_OP_SEQUENCE, + asn_DEF_ULandDLSharing_tags_1, + sizeof(asn_DEF_ULandDLSharing_tags_1) + /sizeof(asn_DEF_ULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_ULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULandDLSharing_tags_1) + /sizeof(asn_DEF_ULandDLSharing_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULandDLSharing_1, + 3, /* Elements count */ + &asn_SPC_ULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.h b/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.h new file mode 100644 index 0000000..1391de5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ULandDLSharing.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULandDLSharing_H_ +#define _ULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ULResourcesULandDLSharing.h" +#include "DLResourcesULandDLSharing.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULandDLSharing */ +typedef struct ULandDLSharing { + ULResourcesULandDLSharing_t uLResourcesULandDLSharing; + DLResourcesULandDLSharing_t dLResourcesULandDLSharing; + 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; +} ULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULandDLSharing; +extern asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULandDLSharing_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.c b/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.c new file mode 100644 index 0000000..b4b70cc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.c @@ -0,0 +1,457 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UnsuccessfulOutcome.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.X2SetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENDCX2SetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ResourceStatusFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENBConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENDCConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdateFailure" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* RICsubscriptionFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* RICsubscriptionDeleteFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* RICserviceUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* RICcontrolFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* X2SetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* ENDCX2SetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* ResourceStatusFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* ENBConfigurationUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* ENDCConfigurationUpdateFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct UnsuccessfulOutcome__value), + offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct UnsuccessfulOutcome__value, present), + sizeof(((struct UnsuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 9, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 9, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UnsuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_UnsuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.h b/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.h new file mode 100644 index 0000000..aadfdd5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UnsuccessfulOutcome.h @@ -0,0 +1,131 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, + UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, + UnsuccessfulOutcome__value_PR_RICcontrolFailure, + UnsuccessfulOutcome__value_PR_X2SetupFailure, + UnsuccessfulOutcome__value_PR_ENDCX2SetupFailure, + UnsuccessfulOutcome__value_PR_ResourceStatusFailure, + UnsuccessfulOutcome__value_PR_ENBConfigurationUpdateFailure, + UnsuccessfulOutcome__value_PR_ENDCConfigurationUpdateFailure +} UnsuccessfulOutcome__value_PR; + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct UnsuccessfulOutcome__value { + UnsuccessfulOutcome__value_PR present; + union UnsuccessfulOutcome__value_u { + RICsubscriptionFailure_t RICsubscriptionFailure; + RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; + RICserviceUpdateFailure_t RICserviceUpdateFailure; + RICcontrolFailure_t RICcontrolFailure; + X2SetupFailure_t X2SetupFailure; + ENDCX2SetupFailure_t ENDCX2SetupFailure; + ResourceStatusFailure_t ResourceStatusFailure; + ENBConfigurationUpdateFailure_t ENBConfigurationUpdateFailure; + ENDCConfigurationUpdateFailure_t ENDCConfigurationUpdateFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.c b/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.c new file mode 100644 index 0000000..c3afb21 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformation.h" + +#include "UsableABSInformationFDD.h" +#include "UsableABSInformationTDD.h" +asn_per_constraints_t asn_PER_type_UsableABSInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct UsableABSInformation, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UsableABSInformationFDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct UsableABSInformation, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UsableABSInformationTDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +asn_CHOICE_specifics_t asn_SPC_UsableABSInformation_specs_1 = { + sizeof(struct UsableABSInformation), + offsetof(struct UsableABSInformation, _asn_ctx), + offsetof(struct UsableABSInformation, present), + sizeof(((struct UsableABSInformation *)0)->present), + asn_MAP_UsableABSInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformation = { + "UsableABSInformation", + "UsableABSInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_UsableABSInformation_constr_1, CHOICE_constraint }, + asn_MBR_UsableABSInformation_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformation_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.h b/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.h new file mode 100644 index 0000000..c030e23 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformation.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformation_H_ +#define _UsableABSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UsableABSInformation_PR { + UsableABSInformation_PR_NOTHING, /* No components present */ + UsableABSInformation_PR_fdd, + UsableABSInformation_PR_tdd + /* Extensions may appear below */ + +} UsableABSInformation_PR; + +/* Forward declarations */ +struct UsableABSInformationFDD; +struct UsableABSInformationTDD; + +/* UsableABSInformation */ +typedef struct UsableABSInformation { + UsableABSInformation_PR present; + union UsableABSInformation_u { + struct UsableABSInformationFDD *fdd; + struct UsableABSInformationTDD *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformation; +extern asn_CHOICE_specifics_t asn_SPC_UsableABSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformation_1[2]; +extern asn_per_constraints_t asn_PER_type_UsableABSInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformation_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.c b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.c new file mode 100644 index 0000000..95472bd --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.c @@ -0,0 +1,118 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformationFDD.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_usable_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* 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_usable_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD, usable_abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_usable_abs_pattern_info_constr_2, memb_usable_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "usable-abs-pattern-info" + }, + { ATF_POINTER, 1, offsetof(struct UsableABSInformationFDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P218, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UsableABSInformationFDD_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationFDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationFDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* usable-abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_specs_1 = { + sizeof(struct UsableABSInformationFDD), + offsetof(struct UsableABSInformationFDD, _asn_ctx), + asn_MAP_UsableABSInformationFDD_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UsableABSInformationFDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD = { + "UsableABSInformationFDD", + "UsableABSInformationFDD", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationFDD_tags_1, + sizeof(asn_DEF_UsableABSInformationFDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationFDD_tags_1[0]), /* 1 */ + asn_DEF_UsableABSInformationFDD_tags_1, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationFDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationFDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationFDD_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformationFDD_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.h b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.h new file mode 100644 index 0000000..7ba4daf --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationFDD.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformationFDD_H_ +#define _UsableABSInformationFDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UsableABSInformationFDD */ +typedef struct UsableABSInformationFDD { + BIT_STRING_t usable_abs_pattern_info; + 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; +} UsableABSInformationFDD_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformationFDD_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.c b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.c new file mode 100644 index 0000000..bc42f1c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.c @@ -0,0 +1,118 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformationTDD.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_usaable_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* 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_usaable_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD, usaable_abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_usaable_abs_pattern_info_constr_2, memb_usaable_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "usaable-abs-pattern-info" + }, + { ATF_POINTER, 1, offsetof(struct UsableABSInformationTDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P219, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UsableABSInformationTDD_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationTDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationTDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* usaable-abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_specs_1 = { + sizeof(struct UsableABSInformationTDD), + offsetof(struct UsableABSInformationTDD, _asn_ctx), + asn_MAP_UsableABSInformationTDD_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UsableABSInformationTDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD = { + "UsableABSInformationTDD", + "UsableABSInformationTDD", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationTDD_tags_1, + sizeof(asn_DEF_UsableABSInformationTDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationTDD_tags_1[0]), /* 1 */ + asn_DEF_UsableABSInformationTDD_tags_1, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationTDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationTDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationTDD_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformationTDD_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.h b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.h new file mode 100644 index 0000000..10e52c6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UsableABSInformationTDD.h @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformationTDD_H_ +#define _UsableABSInformationTDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UsableABSInformationTDD */ +typedef struct UsableABSInformationTDD { + BIT_STRING_t usaable_abs_pattern_info; + 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; +} UsableABSInformationTDD_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformationTDD_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c b/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c new file mode 100644 index 0000000..ea1c041 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UserPlaneTrafficActivityReport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UserPlaneTrafficActivityReport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UserPlaneTrafficActivityReport_value2enum_1[] = { + { 0, 8, "inactive" }, + { 1, 12, "re-activated" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UserPlaneTrafficActivityReport_enum2value_1[] = { + 0, /* inactive(0) */ + 1 /* re-activated(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UserPlaneTrafficActivityReport_specs_1 = { + asn_MAP_UserPlaneTrafficActivityReport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UserPlaneTrafficActivityReport_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_UserPlaneTrafficActivityReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UserPlaneTrafficActivityReport = { + "UserPlaneTrafficActivityReport", + "UserPlaneTrafficActivityReport", + &asn_OP_NativeEnumerated, + asn_DEF_UserPlaneTrafficActivityReport_tags_1, + sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1) + /sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1[0]), /* 1 */ + asn_DEF_UserPlaneTrafficActivityReport_tags_1, /* Same as above */ + sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1) + /sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UserPlaneTrafficActivityReport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UserPlaneTrafficActivityReport_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h b/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h new file mode 100644 index 0000000..fefc9ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UserPlaneTrafficActivityReport_H_ +#define _UserPlaneTrafficActivityReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UserPlaneTrafficActivityReport { + UserPlaneTrafficActivityReport_inactive = 0, + UserPlaneTrafficActivityReport_re_activated = 1 + /* + * Enumeration is extensible + */ +} e_UserPlaneTrafficActivityReport; + +/* UserPlaneTrafficActivityReport */ +typedef long UserPlaneTrafficActivityReport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UserPlaneTrafficActivityReport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UserPlaneTrafficActivityReport; +extern const asn_INTEGER_specifics_t asn_SPC_UserPlaneTrafficActivityReport_specs_1; +asn_struct_free_f UserPlaneTrafficActivityReport_free; +asn_struct_print_f UserPlaneTrafficActivityReport_print; +asn_constr_check_f UserPlaneTrafficActivityReport_constraint; +ber_type_decoder_f UserPlaneTrafficActivityReport_decode_ber; +der_type_encoder_f UserPlaneTrafficActivityReport_encode_der; +xer_type_decoder_f UserPlaneTrafficActivityReport_decode_xer; +xer_type_encoder_f UserPlaneTrafficActivityReport_encode_xer; +per_type_decoder_f UserPlaneTrafficActivityReport_decode_uper; +per_type_encoder_f UserPlaneTrafficActivityReport_encode_uper; +per_type_decoder_f UserPlaneTrafficActivityReport_decode_aper; +per_type_encoder_f UserPlaneTrafficActivityReport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UserPlaneTrafficActivityReport_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.c b/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.c new file mode 100644 index 0000000..cbb8b6f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.c @@ -0,0 +1,92 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "V2XServicesAuthorized.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct V2XServicesAuthorized, vehicleUE), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleUE" + }, + { ATF_POINTER, 2, offsetof(struct V2XServicesAuthorized, pedestrianUE), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PedestrianUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pedestrianUE" + }, + { ATF_POINTER, 1, offsetof(struct V2XServicesAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P220, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_V2XServicesAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_V2XServicesAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_V2XServicesAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleUE */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pedestrianUE */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_specs_1 = { + sizeof(struct V2XServicesAuthorized), + offsetof(struct V2XServicesAuthorized, _asn_ctx), + asn_MAP_V2XServicesAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_V2XServicesAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized = { + "V2XServicesAuthorized", + "V2XServicesAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_V2XServicesAuthorized_tags_1, + sizeof(asn_DEF_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_V2XServicesAuthorized_tags_1[0]), /* 1 */ + asn_DEF_V2XServicesAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_V2XServicesAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_V2XServicesAuthorized_1, + 3, /* Elements count */ + &asn_SPC_V2XServicesAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.h b/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.h new file mode 100644 index 0000000..7cddda7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/V2XServicesAuthorized.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _V2XServicesAuthorized_H_ +#define _V2XServicesAuthorized_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleUE.h" +#include "PedestrianUE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* V2XServicesAuthorized */ +typedef struct V2XServicesAuthorized { + VehicleUE_t *vehicleUE; /* OPTIONAL */ + PedestrianUE_t *pedestrianUE; /* 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; +} V2XServicesAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized; +extern asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_specs_1; +extern asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _V2XServicesAuthorized_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/VehicleUE.c b/E2Manager/asn1codec/e2ap_engine/VehicleUE.c new file mode 100644 index 0000000..56e8393 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/VehicleUE.c @@ -0,0 +1,74 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "VehicleUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_VehicleUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_VehicleUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_VehicleUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1 = { + asn_MAP_VehicleUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleUE = { + "VehicleUE", + "VehicleUE", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleUE_tags_1, + sizeof(asn_DEF_VehicleUE_tags_1) + /sizeof(asn_DEF_VehicleUE_tags_1[0]), /* 1 */ + asn_DEF_VehicleUE_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleUE_tags_1) + /sizeof(asn_DEF_VehicleUE_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_VehicleUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleUE_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/VehicleUE.h b/E2Manager/asn1codec/e2ap_engine/VehicleUE.h new file mode 100644 index 0000000..73c607b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/VehicleUE.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _VehicleUE_H_ +#define _VehicleUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleUE { + VehicleUE_authorized = 0, + VehicleUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_VehicleUE; + +/* VehicleUE */ +typedef long VehicleUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleUE; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1; +asn_struct_free_f VehicleUE_free; +asn_struct_print_f VehicleUE_print; +asn_constr_check_f VehicleUE_constraint; +ber_type_decoder_f VehicleUE_decode_ber; +der_type_encoder_f VehicleUE_encode_der; +xer_type_decoder_f VehicleUE_decode_xer; +xer_type_encoder_f VehicleUE_encode_xer; +per_type_decoder_f VehicleUE_decode_uper; +per_type_encoder_f VehicleUE_encode_uper; +per_type_decoder_f VehicleUE_decode_aper; +per_type_encoder_f VehicleUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleUE_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.c b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.c new file mode 100644 index 0000000..fc0314a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.c @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasConfig.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WLANMeasConfig_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_WLANMeasConfig_value2enum_1[] = { + { 0, 5, "setup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_WLANMeasConfig_enum2value_1[] = { + 0 /* setup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_WLANMeasConfig_specs_1 = { + asn_MAP_WLANMeasConfig_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_WLANMeasConfig_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_WLANMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasConfig = { + "WLANMeasConfig", + "WLANMeasConfig", + &asn_OP_NativeEnumerated, + asn_DEF_WLANMeasConfig_tags_1, + sizeof(asn_DEF_WLANMeasConfig_tags_1) + /sizeof(asn_DEF_WLANMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasConfig_tags_1) + /sizeof(asn_DEF_WLANMeasConfig_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANMeasConfig_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_WLANMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.h b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.h new file mode 100644 index 0000000..f406680 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfig.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasConfig_H_ +#define _WLANMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WLANMeasConfig { + WLANMeasConfig_setup = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasConfig; + +/* WLANMeasConfig */ +typedef long WLANMeasConfig_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WLANMeasConfig_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasConfig; +extern const asn_INTEGER_specifics_t asn_SPC_WLANMeasConfig_specs_1; +asn_struct_free_f WLANMeasConfig_free; +asn_struct_print_f WLANMeasConfig_print; +asn_constr_check_f WLANMeasConfig_constraint; +ber_type_decoder_f WLANMeasConfig_decode_ber; +der_type_encoder_f WLANMeasConfig_encode_der; +xer_type_decoder_f WLANMeasConfig_decode_xer; +xer_type_encoder_f WLANMeasConfig_encode_xer; +per_type_decoder_f WLANMeasConfig_decode_uper; +per_type_encoder_f WLANMeasConfig_encode_uper; +per_type_decoder_f WLANMeasConfig_decode_aper; +per_type_encoder_f WLANMeasConfig_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.c b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.c new file mode 100644 index 0000000..3f1285f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasConfigNameList.h" + +asn_per_constraints_t asn_PER_type_WLANMeasConfigNameList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WLANMeasConfigNameList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_WLANName, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_WLANMeasConfigNameList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_WLANMeasConfigNameList_specs_1 = { + sizeof(struct WLANMeasConfigNameList), + offsetof(struct WLANMeasConfigNameList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasConfigNameList = { + "WLANMeasConfigNameList", + "WLANMeasConfigNameList", + &asn_OP_SEQUENCE_OF, + asn_DEF_WLANMeasConfigNameList_tags_1, + sizeof(asn_DEF_WLANMeasConfigNameList_tags_1) + /sizeof(asn_DEF_WLANMeasConfigNameList_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasConfigNameList_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasConfigNameList_tags_1) + /sizeof(asn_DEF_WLANMeasConfigNameList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANMeasConfigNameList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_WLANMeasConfigNameList_1, + 1, /* Single element */ + &asn_SPC_WLANMeasConfigNameList_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.h b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.h new file mode 100644 index 0000000..c3f6f26 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasConfigNameList.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasConfigNameList_H_ +#define _WLANMeasConfigNameList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WLANName.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WLANMeasConfigNameList */ +typedef struct WLANMeasConfigNameList { + A_SEQUENCE_OF(WLANName_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WLANMeasConfigNameList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasConfigNameList; +extern asn_SET_OF_specifics_t asn_SPC_WLANMeasConfigNameList_specs_1; +extern asn_TYPE_member_t asn_MBR_WLANMeasConfigNameList_1[1]; +extern asn_per_constraints_t asn_PER_type_WLANMeasConfigNameList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasConfigNameList_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c b/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c new file mode 100644 index 0000000..1c8dbaa --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c @@ -0,0 +1,205 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasurementConfiguration.h" + +#include "WLANMeasConfigNameList.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_wlan_rssi_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_wlan_rtt_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_wlan_rssi_value2enum_4[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_wlan_rssi_enum2value_4[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_wlan_rssi_specs_4 = { + asn_MAP_wlan_rssi_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_wlan_rssi_enum2value_4, /* 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_wlan_rssi_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_wlan_rssi_4 = { + "wlan-rssi", + "wlan-rssi", + &asn_OP_NativeEnumerated, + asn_DEF_wlan_rssi_tags_4, + sizeof(asn_DEF_wlan_rssi_tags_4) + /sizeof(asn_DEF_wlan_rssi_tags_4[0]) - 1, /* 1 */ + asn_DEF_wlan_rssi_tags_4, /* Same as above */ + sizeof(asn_DEF_wlan_rssi_tags_4) + /sizeof(asn_DEF_wlan_rssi_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_wlan_rssi_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_wlan_rssi_specs_4 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_wlan_rtt_value2enum_7[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_wlan_rtt_enum2value_7[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_wlan_rtt_specs_7 = { + asn_MAP_wlan_rtt_value2enum_7, /* "tag" => N; sorted by tag */ + asn_MAP_wlan_rtt_enum2value_7, /* 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_wlan_rtt_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_wlan_rtt_7 = { + "wlan-rtt", + "wlan-rtt", + &asn_OP_NativeEnumerated, + asn_DEF_wlan_rtt_tags_7, + sizeof(asn_DEF_wlan_rtt_tags_7) + /sizeof(asn_DEF_wlan_rtt_tags_7[0]) - 1, /* 1 */ + asn_DEF_wlan_rtt_tags_7, /* Same as above */ + sizeof(asn_DEF_wlan_rtt_tags_7) + /sizeof(asn_DEF_wlan_rtt_tags_7[0]), /* 2 */ + { 0, &asn_PER_type_wlan_rtt_constr_7, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_wlan_rtt_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration, wlanMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WLANMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlanMeasConfig" + }, + { ATF_POINTER, 4, offsetof(struct WLANMeasurementConfiguration, wlanMeasConfigNameList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WLANMeasConfigNameList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlanMeasConfigNameList" + }, + { ATF_POINTER, 3, offsetof(struct WLANMeasurementConfiguration, wlan_rssi), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_wlan_rssi_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlan-rssi" + }, + { ATF_POINTER, 2, offsetof(struct WLANMeasurementConfiguration, wlan_rtt), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_wlan_rtt_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlan-rtt" + }, + { ATF_POINTER, 1, offsetof(struct WLANMeasurementConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P222, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_WLANMeasurementConfiguration_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_WLANMeasurementConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WLANMeasurementConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wlanMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* wlanMeasConfigNameList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* wlan-rssi */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* wlan-rtt */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_specs_1 = { + sizeof(struct WLANMeasurementConfiguration), + offsetof(struct WLANMeasurementConfiguration, _asn_ctx), + asn_MAP_WLANMeasurementConfiguration_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_WLANMeasurementConfiguration_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration = { + "WLANMeasurementConfiguration", + "WLANMeasurementConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_WLANMeasurementConfiguration_tags_1, + sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasurementConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WLANMeasurementConfiguration_1, + 5, /* Elements count */ + &asn_SPC_WLANMeasurementConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h b/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h new file mode 100644 index 0000000..c4388f4 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h @@ -0,0 +1,88 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasurementConfiguration_H_ +#define _WLANMeasurementConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WLANMeasConfig.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WLANMeasurementConfiguration__wlan_rssi { + WLANMeasurementConfiguration__wlan_rssi_true = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasurementConfiguration__wlan_rssi; +typedef enum WLANMeasurementConfiguration__wlan_rtt { + WLANMeasurementConfiguration__wlan_rtt_true = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasurementConfiguration__wlan_rtt; + +/* Forward declarations */ +struct WLANMeasConfigNameList; +struct ProtocolExtensionContainer; + +/* WLANMeasurementConfiguration */ +typedef struct WLANMeasurementConfiguration { + WLANMeasConfig_t wlanMeasConfig; + struct WLANMeasConfigNameList *wlanMeasConfigNameList; /* OPTIONAL */ + long *wlan_rssi; /* OPTIONAL */ + long *wlan_rtt; /* 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; +} WLANMeasurementConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_wlan_rssi_4; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_wlan_rtt_7; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasurementConfiguration_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WLANName.c b/E2Manager/asn1codec/e2ap_engine/WLANName.c new file mode 100644 index 0000000..07468b0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANName.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANName.h" + +int +WLANName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WLANName_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WLANName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WLANName = { + "WLANName", + "WLANName", + &asn_OP_OCTET_STRING, + asn_DEF_WLANName_tags_1, + sizeof(asn_DEF_WLANName_tags_1) + /sizeof(asn_DEF_WLANName_tags_1[0]), /* 1 */ + asn_DEF_WLANName_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANName_tags_1) + /sizeof(asn_DEF_WLANName_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANName_constr_1, WLANName_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WLANName.h b/E2Manager/asn1codec/e2ap_engine/WLANName.h new file mode 100644 index 0000000..af6cb4a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WLANName.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANName_H_ +#define _WLANName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WLANName */ +typedef OCTET_STRING_t WLANName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WLANName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WLANName; +asn_struct_free_f WLANName_free; +asn_struct_print_f WLANName_print; +asn_constr_check_f WLANName_constraint; +ber_type_decoder_f WLANName_decode_ber; +der_type_encoder_f WLANName_encode_der; +xer_type_decoder_f WLANName_decode_xer; +xer_type_encoder_f WLANName_encode_xer; +per_type_decoder_f WLANName_decode_uper; +per_type_encoder_f WLANName_encode_uper; +per_type_decoder_f WLANName_decode_aper; +per_type_encoder_f WLANName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANName_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c b/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c new file mode 100644 index 0000000..69c0cb8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WT-UE-XwAP-ID.h" + +int +WT_UE_XwAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WT_UE_XwAP_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WT_UE_XwAP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WT_UE_XwAP_ID = { + "WT-UE-XwAP-ID", + "WT-UE-XwAP-ID", + &asn_OP_OCTET_STRING, + asn_DEF_WT_UE_XwAP_ID_tags_1, + sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1) + /sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1[0]), /* 1 */ + asn_DEF_WT_UE_XwAP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1) + /sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WT_UE_XwAP_ID_constr_1, WT_UE_XwAP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h b/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h new file mode 100644 index 0000000..fcfffa3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WT_UE_XwAP_ID_H_ +#define _WT_UE_XwAP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WT-UE-XwAP-ID */ +typedef OCTET_STRING_t WT_UE_XwAP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WT_UE_XwAP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WT_UE_XwAP_ID; +asn_struct_free_f WT_UE_XwAP_ID_free; +asn_struct_print_f WT_UE_XwAP_ID_print; +asn_constr_check_f WT_UE_XwAP_ID_constraint; +ber_type_decoder_f WT_UE_XwAP_ID_decode_ber; +der_type_encoder_f WT_UE_XwAP_ID_encode_der; +xer_type_decoder_f WT_UE_XwAP_ID_decode_xer; +xer_type_encoder_f WT_UE_XwAP_ID_encode_xer; +per_type_decoder_f WT_UE_XwAP_ID_decode_uper; +per_type_encoder_f WT_UE_XwAP_ID_encode_uper; +per_type_decoder_f WT_UE_XwAP_ID_decode_aper; +per_type_encoder_f WT_UE_XwAP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WT_UE_XwAP_ID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.c b/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.c new file mode 100644 index 0000000..3a70a87 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.c @@ -0,0 +1,86 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID-Long-Type2.h" + +int +WTID_Long_Type2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 48)) { + /* 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. + */ +asn_per_constraints_t asn_PER_type_WTID_Long_Type2_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 48, 48 } /* (SIZE(48..48)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WTID_Long_Type2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WTID_Long_Type2 = { + "WTID-Long-Type2", + "WTID-Long-Type2", + &asn_OP_BIT_STRING, + asn_DEF_WTID_Long_Type2_tags_1, + sizeof(asn_DEF_WTID_Long_Type2_tags_1) + /sizeof(asn_DEF_WTID_Long_Type2_tags_1[0]), /* 1 */ + asn_DEF_WTID_Long_Type2_tags_1, /* Same as above */ + sizeof(asn_DEF_WTID_Long_Type2_tags_1) + /sizeof(asn_DEF_WTID_Long_Type2_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WTID_Long_Type2_constr_1, WTID_Long_Type2_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.h b/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.h new file mode 100644 index 0000000..16f90ae --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID-Long-Type2.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_Long_Type2_H_ +#define _WTID_Long_Type2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WTID-Long-Type2 */ +typedef BIT_STRING_t WTID_Long_Type2_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WTID_Long_Type2_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WTID_Long_Type2; +asn_struct_free_f WTID_Long_Type2_free; +asn_struct_print_f WTID_Long_Type2_print; +asn_constr_check_f WTID_Long_Type2_constraint; +ber_type_decoder_f WTID_Long_Type2_decode_ber; +der_type_encoder_f WTID_Long_Type2_encode_der; +xer_type_decoder_f WTID_Long_Type2_decode_xer; +xer_type_encoder_f WTID_Long_Type2_encode_xer; +per_type_decoder_f WTID_Long_Type2_decode_uper; +per_type_encoder_f WTID_Long_Type2_encode_uper; +per_type_decoder_f WTID_Long_Type2_decode_aper; +per_type_encoder_f WTID_Long_Type2_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_Long_Type2_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WTID-Type1.c b/E2Manager/asn1codec/e2ap_engine/WTID-Type1.c new file mode 100644 index 0000000..10f5d57 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID-Type1.c @@ -0,0 +1,115 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID-Type1.h" + +static int +memb_shortWTID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* 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_shortWTID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WTID_Type1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WTID_Type1, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct WTID_Type1, shortWTID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_shortWTID_constr_3, memb_shortWTID_constraint_1 }, + 0, 0, /* No default value */ + "shortWTID" + }, +}; +static const ber_tlv_tag_t asn_DEF_WTID_Type1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WTID_Type1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* shortWTID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WTID_Type1_specs_1 = { + sizeof(struct WTID_Type1), + offsetof(struct WTID_Type1, _asn_ctx), + asn_MAP_WTID_Type1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WTID_Type1 = { + "WTID-Type1", + "WTID-Type1", + &asn_OP_SEQUENCE, + asn_DEF_WTID_Type1_tags_1, + sizeof(asn_DEF_WTID_Type1_tags_1) + /sizeof(asn_DEF_WTID_Type1_tags_1[0]), /* 1 */ + asn_DEF_WTID_Type1_tags_1, /* Same as above */ + sizeof(asn_DEF_WTID_Type1_tags_1) + /sizeof(asn_DEF_WTID_Type1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WTID_Type1_1, + 2, /* Elements count */ + &asn_SPC_WTID_Type1_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WTID-Type1.h b/E2Manager/asn1codec/e2ap_engine/WTID-Type1.h new file mode 100644 index 0000000..53057d8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID-Type1.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_Type1_H_ +#define _WTID_Type1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WTID-Type1 */ +typedef struct WTID_Type1 { + PLMN_Identity_t pLMN_Identity; + BIT_STRING_t shortWTID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WTID_Type1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WTID_Type1; +extern asn_SEQUENCE_specifics_t asn_SPC_WTID_Type1_specs_1; +extern asn_TYPE_member_t asn_MBR_WTID_Type1_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_Type1_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WTID.c b/E2Manager/asn1codec/e2ap_engine/WTID.c new file mode 100644 index 0000000..3c24d5e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID.h" + +#include "WTID-Type1.h" +asn_per_constraints_t asn_PER_type_WTID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WTID_1[] = { + { ATF_POINTER, 0, offsetof(struct WTID, choice.wTID_Type1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WTID_Type1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID-Type1" + }, + { ATF_NOFLAGS, 0, offsetof(struct WTID, choice.wTID_Type2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WTID_Long_Type2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID-Type2" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_WTID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wTID-Type1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* wTID-Type2 */ +}; +asn_CHOICE_specifics_t asn_SPC_WTID_specs_1 = { + sizeof(struct WTID), + offsetof(struct WTID, _asn_ctx), + offsetof(struct WTID, present), + sizeof(((struct WTID *)0)->present), + asn_MAP_WTID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_WTID = { + "WTID", + "WTID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_WTID_constr_1, CHOICE_constraint }, + asn_MBR_WTID_1, + 2, /* Elements count */ + &asn_SPC_WTID_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WTID.h b/E2Manager/asn1codec/e2ap_engine/WTID.h new file mode 100644 index 0000000..d3fae06 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WTID.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_H_ +#define _WTID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WTID-Long-Type2.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WTID_PR { + WTID_PR_NOTHING, /* No components present */ + WTID_PR_wTID_Type1, + WTID_PR_wTID_Type2 + /* Extensions may appear below */ + +} WTID_PR; + +/* Forward declarations */ +struct WTID_Type1; + +/* WTID */ +typedef struct WTID { + WTID_PR present; + union WTID_u { + struct WTID_Type1 *wTID_Type1; + WTID_Long_Type2_t wTID_Type2; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WTID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WTID; +extern asn_CHOICE_specifics_t asn_SPC_WTID_specs_1; +extern asn_TYPE_member_t asn_MBR_WTID_1[2]; +extern asn_per_constraints_t asn_PER_type_WTID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WidebandCQI.c b/E2Manager/asn1codec/e2ap_engine/WidebandCQI.c new file mode 100644 index 0000000..9596cf2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WidebandCQI.c @@ -0,0 +1,123 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WidebandCQI.h" + +#include "WidebandCQICodeword1.h" +#include "ProtocolExtensionContainer.h" +static int +memb_widebandCQICodeword0_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_widebandCQICodeword0_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WidebandCQI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI, widebandCQICodeword0), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_widebandCQICodeword0_constr_2, memb_widebandCQICodeword0_constraint_1 }, + 0, 0, /* No default value */ + "widebandCQICodeword0" + }, + { ATF_POINTER, 2, offsetof(struct WidebandCQI, widebandCQICodeword1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_WidebandCQICodeword1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "widebandCQICodeword1" + }, + { ATF_POINTER, 1, offsetof(struct WidebandCQI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P221, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_WidebandCQI_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_WidebandCQI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* widebandCQICodeword0 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* widebandCQICodeword1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_specs_1 = { + sizeof(struct WidebandCQI), + offsetof(struct WidebandCQI, _asn_ctx), + asn_MAP_WidebandCQI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_WidebandCQI_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQI = { + "WidebandCQI", + "WidebandCQI", + &asn_OP_SEQUENCE, + asn_DEF_WidebandCQI_tags_1, + sizeof(asn_DEF_WidebandCQI_tags_1) + /sizeof(asn_DEF_WidebandCQI_tags_1[0]), /* 1 */ + asn_DEF_WidebandCQI_tags_1, /* Same as above */ + sizeof(asn_DEF_WidebandCQI_tags_1) + /sizeof(asn_DEF_WidebandCQI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WidebandCQI_1, + 3, /* Elements count */ + &asn_SPC_WidebandCQI_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WidebandCQI.h b/E2Manager/asn1codec/e2ap_engine/WidebandCQI.h new file mode 100644 index 0000000..635e84b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WidebandCQI.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WidebandCQI_H_ +#define _WidebandCQI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct WidebandCQICodeword1; +struct ProtocolExtensionContainer; + +/* WidebandCQI */ +typedef struct WidebandCQI { + long widebandCQICodeword0; + struct WidebandCQICodeword1 *widebandCQICodeword1; /* 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; +} WidebandCQI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQI; +extern asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_specs_1; +extern asn_TYPE_member_t asn_MBR_WidebandCQI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WidebandCQI_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.c b/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.c new file mode 100644 index 0000000..f2eb584 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.c @@ -0,0 +1,141 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WidebandCQICodeword1.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* 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_three_bitSpatialDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_WidebandCQICodeword1_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WidebandCQICodeword1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQICodeword1, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQICodeword1, choice.three_bitSpatialDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3, memb_three_bitSpatialDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "three-bitSpatialDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQICodeword1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* three-bitSpatialDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_WidebandCQICodeword1_specs_1 = { + sizeof(struct WidebandCQICodeword1), + offsetof(struct WidebandCQICodeword1, _asn_ctx), + offsetof(struct WidebandCQICodeword1, present), + sizeof(((struct WidebandCQICodeword1 *)0)->present), + asn_MAP_WidebandCQICodeword1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQICodeword1 = { + "WidebandCQICodeword1", + "WidebandCQICodeword1", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_WidebandCQICodeword1_constr_1, CHOICE_constraint }, + asn_MBR_WidebandCQICodeword1_1, + 2, /* Elements count */ + &asn_SPC_WidebandCQICodeword1_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.h b/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.h new file mode 100644 index 0000000..57fe589 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/WidebandCQICodeword1.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WidebandCQICodeword1_H_ +#define _WidebandCQICodeword1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WidebandCQICodeword1_PR { + WidebandCQICodeword1_PR_NOTHING, /* No components present */ + WidebandCQICodeword1_PR_four_bitCQI, + WidebandCQICodeword1_PR_three_bitSpatialDifferentialCQI + /* Extensions may appear below */ + +} WidebandCQICodeword1_PR; + +/* WidebandCQICodeword1 */ +typedef struct WidebandCQICodeword1 { + WidebandCQICodeword1_PR present; + union WidebandCQICodeword1_u { + long four_bitCQI; + long three_bitSpatialDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WidebandCQICodeword1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQICodeword1; +extern asn_CHOICE_specifics_t asn_SPC_WidebandCQICodeword1_specs_1; +extern asn_TYPE_member_t asn_MBR_WidebandCQICodeword1_1[2]; +extern asn_per_constraints_t asn_PER_type_WidebandCQICodeword1_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WidebandCQICodeword1_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2AP-Message.c b/E2Manager/asn1codec/e2ap_engine/X2AP-Message.c new file mode 100644 index 0000000..9b3c06a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2AP-Message.c @@ -0,0 +1,50 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2AP-Message.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_X2AP_Message_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_X2AP_Message = { + "X2AP-Message", + "X2AP-Message", + &asn_OP_OCTET_STRING, + asn_DEF_X2AP_Message_tags_1, + sizeof(asn_DEF_X2AP_Message_tags_1) + /sizeof(asn_DEF_X2AP_Message_tags_1[0]), /* 1 */ + asn_DEF_X2AP_Message_tags_1, /* Same as above */ + sizeof(asn_DEF_X2AP_Message_tags_1) + /sizeof(asn_DEF_X2AP_Message_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2AP-Message.h b/E2Manager/asn1codec/e2ap_engine/X2AP-Message.h new file mode 100644 index 0000000..360046d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2AP-Message.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2AP_Message_H_ +#define _X2AP_Message_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2AP-Message */ +typedef OCTET_STRING_t X2AP_Message_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2AP_Message; +asn_struct_free_f X2AP_Message_free; +asn_struct_print_f X2AP_Message_print; +asn_constr_check_f X2AP_Message_constraint; +ber_type_decoder_f X2AP_Message_decode_ber; +der_type_encoder_f X2AP_Message_encode_der; +xer_type_decoder_f X2AP_Message_decode_xer; +xer_type_encoder_f X2AP_Message_encode_xer; +per_type_decoder_f X2AP_Message_decode_uper; +per_type_encoder_f X2AP_Message_encode_uper; +per_type_decoder_f X2AP_Message_decode_aper; +per_type_encoder_f X2AP_Message_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2AP_Message_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.c b/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.c new file mode 100644 index 0000000..ee2ad23 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2APMessageTransfer.h" + +static asn_TYPE_member_t asn_MBR_X2APMessageTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2APMessageTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2APMessageTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_specs_1 = { + sizeof(struct X2APMessageTransfer), + offsetof(struct X2APMessageTransfer, _asn_ctx), + asn_MAP_X2APMessageTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer = { + "X2APMessageTransfer", + "X2APMessageTransfer", + &asn_OP_SEQUENCE, + asn_DEF_X2APMessageTransfer_tags_1, + sizeof(asn_DEF_X2APMessageTransfer_tags_1) + /sizeof(asn_DEF_X2APMessageTransfer_tags_1[0]), /* 1 */ + asn_DEF_X2APMessageTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_X2APMessageTransfer_tags_1) + /sizeof(asn_DEF_X2APMessageTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2APMessageTransfer_1, + 1, /* Elements count */ + &asn_SPC_X2APMessageTransfer_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.h b/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.h new file mode 100644 index 0000000..fc9a77a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2APMessageTransfer.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2APMessageTransfer_H_ +#define _X2APMessageTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2APMessageTransfer */ +typedef struct X2APMessageTransfer { + ProtocolIE_Container_119P43_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2APMessageTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2APMessageTransfer_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.c b/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.c new file mode 100644 index 0000000..0edaa91 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2BenefitValue.h" + +int +X2BenefitValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_X2BenefitValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (1..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_X2BenefitValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_X2BenefitValue = { + "X2BenefitValue", + "X2BenefitValue", + &asn_OP_NativeInteger, + asn_DEF_X2BenefitValue_tags_1, + sizeof(asn_DEF_X2BenefitValue_tags_1) + /sizeof(asn_DEF_X2BenefitValue_tags_1[0]), /* 1 */ + asn_DEF_X2BenefitValue_tags_1, /* Same as above */ + sizeof(asn_DEF_X2BenefitValue_tags_1) + /sizeof(asn_DEF_X2BenefitValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_X2BenefitValue_constr_1, X2BenefitValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.h b/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.h new file mode 100644 index 0000000..27b8123 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2BenefitValue.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2BenefitValue_H_ +#define _X2BenefitValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2BenefitValue */ +typedef long X2BenefitValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_X2BenefitValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_X2BenefitValue; +asn_struct_free_f X2BenefitValue_free; +asn_struct_print_f X2BenefitValue_print; +asn_constr_check_f X2BenefitValue_constraint; +ber_type_decoder_f X2BenefitValue_decode_ber; +der_type_encoder_f X2BenefitValue_encode_der; +xer_type_decoder_f X2BenefitValue_decode_xer; +xer_type_encoder_f X2BenefitValue_encode_xer; +per_type_decoder_f X2BenefitValue_decode_uper; +per_type_encoder_f X2BenefitValue_encode_uper; +per_type_decoder_f X2BenefitValue_decode_aper; +per_type_encoder_f X2BenefitValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2BenefitValue_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2Release.c b/E2Manager/asn1codec/e2ap_engine/X2Release.c new file mode 100644 index 0000000..6c4c9a7 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2Release.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2Release.h" + +static asn_TYPE_member_t asn_MBR_X2Release_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2Release_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2Release_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2Release_specs_1 = { + sizeof(struct X2Release), + offsetof(struct X2Release, _asn_ctx), + asn_MAP_X2Release_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2Release = { + "X2Release", + "X2Release", + &asn_OP_SEQUENCE, + asn_DEF_X2Release_tags_1, + sizeof(asn_DEF_X2Release_tags_1) + /sizeof(asn_DEF_X2Release_tags_1[0]), /* 1 */ + asn_DEF_X2Release_tags_1, /* Same as above */ + sizeof(asn_DEF_X2Release_tags_1) + /sizeof(asn_DEF_X2Release_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2Release_1, + 1, /* Elements count */ + &asn_SPC_X2Release_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2Release.h b/E2Manager/asn1codec/e2ap_engine/X2Release.h new file mode 100644 index 0000000..1a9cd79 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2Release.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2Release_H_ +#define _X2Release_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2Release */ +typedef struct X2Release { + ProtocolIE_Container_119P42_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2Release_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2Release; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2Release_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.c b/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.c new file mode 100644 index 0000000..7a5dfb8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalFailure.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_specs_1 = { + sizeof(struct X2RemovalFailure), + offsetof(struct X2RemovalFailure, _asn_ctx), + asn_MAP_X2RemovalFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure = { + "X2RemovalFailure", + "X2RemovalFailure", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalFailure_tags_1, + sizeof(asn_DEF_X2RemovalFailure_tags_1) + /sizeof(asn_DEF_X2RemovalFailure_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalFailure_tags_1) + /sizeof(asn_DEF_X2RemovalFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalFailure_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.h b/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.h new file mode 100644 index 0000000..cb4a0da --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalFailure.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalFailure_H_ +#define _X2RemovalFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalFailure */ +typedef struct X2RemovalFailure { + ProtocolIE_Container_119P60_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.c b/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.c new file mode 100644 index 0000000..05312f9 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalRequest.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_specs_1 = { + sizeof(struct X2RemovalRequest), + offsetof(struct X2RemovalRequest, _asn_ctx), + asn_MAP_X2RemovalRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest = { + "X2RemovalRequest", + "X2RemovalRequest", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalRequest_tags_1, + sizeof(asn_DEF_X2RemovalRequest_tags_1) + /sizeof(asn_DEF_X2RemovalRequest_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalRequest_tags_1) + /sizeof(asn_DEF_X2RemovalRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalRequest_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.h b/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.h new file mode 100644 index 0000000..26952f0 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalRequest.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalRequest_H_ +#define _X2RemovalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalRequest */ +typedef struct X2RemovalRequest { + ProtocolIE_Container_119P58_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.c b/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.c new file mode 100644 index 0000000..c7ba24e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalResponse.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_specs_1 = { + sizeof(struct X2RemovalResponse), + offsetof(struct X2RemovalResponse, _asn_ctx), + asn_MAP_X2RemovalResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse = { + "X2RemovalResponse", + "X2RemovalResponse", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalResponse_tags_1, + sizeof(asn_DEF_X2RemovalResponse_tags_1) + /sizeof(asn_DEF_X2RemovalResponse_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalResponse_tags_1) + /sizeof(asn_DEF_X2RemovalResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalResponse_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.h b/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.h new file mode 100644 index 0000000..56d8fa6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2RemovalResponse.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalResponse_H_ +#define _X2RemovalResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalResponse */ +typedef struct X2RemovalResponse { + ProtocolIE_Container_119P59_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.c b/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.c new file mode 100644 index 0000000..2502ca5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupFailure.h" + +asn_TYPE_member_t asn_MBR_X2SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_specs_1 = { + sizeof(struct X2SetupFailure), + offsetof(struct X2SetupFailure, _asn_ctx), + asn_MAP_X2SetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupFailure = { + "X2SetupFailure", + "X2SetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupFailure_tags_1, + sizeof(asn_DEF_X2SetupFailure_tags_1) + /sizeof(asn_DEF_X2SetupFailure_tags_1[0]), /* 1 */ + asn_DEF_X2SetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupFailure_tags_1) + /sizeof(asn_DEF_X2SetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_X2SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.h b/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.h new file mode 100644 index 0000000..092253b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupFailure.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupFailure_H_ +#define _X2SetupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupFailure */ +typedef struct X2SetupFailure { + ProtocolIE_Container_119P26_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupFailure_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.c b/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.c new file mode 100644 index 0000000..b0c3bb3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupRequest.h" + +asn_TYPE_member_t asn_MBR_X2SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_specs_1 = { + sizeof(struct X2SetupRequest), + offsetof(struct X2SetupRequest, _asn_ctx), + asn_MAP_X2SetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupRequest = { + "X2SetupRequest", + "X2SetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupRequest_tags_1, + sizeof(asn_DEF_X2SetupRequest_tags_1) + /sizeof(asn_DEF_X2SetupRequest_tags_1[0]), /* 1 */ + asn_DEF_X2SetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupRequest_tags_1) + /sizeof(asn_DEF_X2SetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_X2SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.h b/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.h new file mode 100644 index 0000000..11af21f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupRequest.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupRequest_H_ +#define _X2SetupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupRequest */ +typedef struct X2SetupRequest { + ProtocolIE_Container_119P24_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupRequest_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.c b/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.c new file mode 100644 index 0000000..93f1ae1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.c @@ -0,0 +1,69 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupResponse.h" + +asn_TYPE_member_t asn_MBR_X2SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_specs_1 = { + sizeof(struct X2SetupResponse), + offsetof(struct X2SetupResponse, _asn_ctx), + asn_MAP_X2SetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupResponse = { + "X2SetupResponse", + "X2SetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupResponse_tags_1, + sizeof(asn_DEF_X2SetupResponse_tags_1) + /sizeof(asn_DEF_X2SetupResponse_tags_1[0]), /* 1 */ + asn_DEF_X2SetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupResponse_tags_1) + /sizeof(asn_DEF_X2SetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_X2SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.h b/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.h new file mode 100644 index 0000000..89f2473 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/X2SetupResponse.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupResponse_H_ +#define _X2SetupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupResponse */ +typedef struct X2SetupResponse { + ProtocolIE_Container_119P25_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupResponse_H_ */ +#include "asn_internal.h" diff --git a/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c b/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c new file mode 100644 index 0000000..4a47bc1 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c @@ -0,0 +1,42 @@ + +/*- + * 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/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h b/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h new file mode 100644 index 0000000..8c532d3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h @@ -0,0 +1,53 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.c b/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.c new file mode 100644 index 0000000..b28f735 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.c @@ -0,0 +1,89 @@ + +/*- + * 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/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.h b/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.h new file mode 100644 index 0000000..88b3bcc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_SET_OF.h @@ -0,0 +1,73 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_application.c b/E2Manager/asn1codec/e2ap_engine/asn_application.c new file mode 100644 index 0000000..9ad1f4e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_application.c @@ -0,0 +1,482 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} + diff --git a/E2Manager/asn1codec/e2ap_engine/asn_application.h b/E2Manager/asn1codec/e2ap_engine/asn_application.h new file mode 100644 index 0000000..c4af0e5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_application.h @@ -0,0 +1,172 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_bit_data.c b/E2Manager/asn1codec/e2ap_engine/asn_bit_data.c new file mode 100644 index 0000000..29b7b10 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_bit_data.c @@ -0,0 +1,334 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/E2Manager/asn1codec/e2ap_engine/asn_bit_data.h b/E2Manager/asn1codec/e2ap_engine/asn_bit_data.h new file mode 100644 index 0000000..e834084 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_bit_data.h @@ -0,0 +1,84 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_codecs.h b/E2Manager/asn1codec/e2ap_engine/asn_codecs.h new file mode 100644 index 0000000..0c9a049 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_codecs.h @@ -0,0 +1,109 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.c b/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.c new file mode 100644 index 0000000..68caef2 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.c @@ -0,0 +1,318 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.h b/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.h new file mode 100644 index 0000000..e6e6c4f --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_codecs_prim.h @@ -0,0 +1,52 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_constant.h b/E2Manager/asn1codec/e2ap_engine/asn_constant.h new file mode 100644 index 0000000..a169b42 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_constant.h @@ -0,0 +1,88 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define maxofRANfunctionID (256) +#define maxofRICactionID (16) +#define maxEARFCN (65535) +#define maxEARFCNPlusOne (65536) +#define newmaxEARFCN (262143) +#define maxInterfaces (16) +#define maxCellineNB (256) +#define maxnoofBands (16) +#define maxnoofBearers (256) +#define maxNrOfErrors (256) +#define maxnoofPDCP_SN (16) +#define maxnoofEPLMNs (15) +#define maxnoofEPLMNsPlusOne (16) +#define maxnoofForbLACs (4096) +#define maxnoofForbTACs (4096) +#define maxnoofBPLMNs (6) +#define maxnoofNeighbours (512) +#define maxnoofPRBs (110) +#define maxPools (16) +#define maxnoofCells (16) +#define maxnoofMBSFN (8) +#define maxFailedMeasObjects (32) +#define maxnoofCellIDforMDT (32) +#define maxnoofTAforMDT (8) +#define maxnoofMBMSServiceAreaIdentities (256) +#define maxnoofMDTPLMNs (16) +#define maxnoofCoMPHypothesisSet (256) +#define maxnoofCoMPCells (32) +#define maxUEReport (128) +#define maxCellReport (9) +#define maxnoofPA (3) +#define maxCSIProcess (4) +#define maxCSIReport (2) +#define maxSubband (14) +#define maxofNRNeighbours (1024) +#define maxCellinengNB (16384) +#define maxnooftimeperiods (2) +#define maxnoofCellIDforQMC (32) +#define maxnoofTAforQMC (8) +#define maxnoofPLMNforQMC (16) +#define maxUEsinengNBDU (8192) +#define maxnoofProtectedResourcePatterns (16) +#define maxnoNRcellsSpectrumSharingWithE_UTRA (64) +#define maxnoofNrCellBands (32) +#define maxnoofBluetoothName (4) +#define maxnoofWLANName (4) +#define maxPrivateIEs (65535) +#define maxProtocolExtensions (65535) +#define maxProtocolIEs (65535) +#define maxofInterfaceProtocolIE (15) +#define maxofActionParameters (255) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_internal.c b/E2Manager/asn1codec/e2ap_engine/asn_internal.c new file mode 100644 index 0000000..a8eb453 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_internal.c @@ -0,0 +1,67 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + va_end(args); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/asn_internal.h b/E2Manager/asn1codec/e2ap_engine/asn_internal.h new file mode 100644 index 0000000..18108dc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_internal.h @@ -0,0 +1,160 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#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) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if !defined(BELL_LABS) /* Bell Labs */ + //#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#if defined(BELL_LABS) /* Bell Labs version */ +extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); +#define ASN_DEBUG(fmt, args...) do { \ + (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ + } while(0) +#else +#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) +#endif /* BELL_LABS */ +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_ioc.h b/E2Manager/asn1codec/e2ap_engine/asn_ioc.h new file mode 100644 index 0000000..afd0fac --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_ioc.h @@ -0,0 +1,52 @@ + +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_random_fill.c b/E2Manager/asn1codec/e2ap_engine/asn_random_fill.c new file mode 100644 index 0000000..356f82c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_random_fill.c @@ -0,0 +1,57 @@ + +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/E2Manager/asn1codec/e2ap_engine/asn_random_fill.h b/E2Manager/asn1codec/e2ap_engine/asn_random_fill.h new file mode 100644 index 0000000..64bd0ce --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_random_fill.h @@ -0,0 +1,52 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/E2Manager/asn1codec/e2ap_engine/asn_system.h b/E2Manager/asn1codec/e2ap_engine/asn_system.h new file mode 100644 index 0000000..fc3586a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/asn_system.h @@ -0,0 +1,151 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/ber_decoder.c b/E2Manager/asn1codec/e2ap_engine/ber_decoder.c new file mode 100644 index 0000000..24bca93 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_decoder.c @@ -0,0 +1,284 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/E2Manager/asn1codec/e2ap_engine/ber_decoder.h b/E2Manager/asn1codec/e2ap_engine/ber_decoder.h new file mode 100644 index 0000000..7c2f5a5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_decoder.h @@ -0,0 +1,67 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.c b/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.c new file mode 100644 index 0000000..6721489 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.c @@ -0,0 +1,169 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.h b/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.h new file mode 100644 index 0000000..e2fd625 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_tlv_length.h @@ -0,0 +1,51 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.c b/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.c new file mode 100644 index 0000000..0c39e50 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.c @@ -0,0 +1,145 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.h b/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.h new file mode 100644 index 0000000..86ad5d6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/ber_tlv_tag.h @@ -0,0 +1,61 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.c b/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.c new file mode 100644 index 0000000..790bb51 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.c @@ -0,0 +1,1534 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + 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 = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + const asn_per_constraint_t *ext_ct = NULL; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) { + ext_ct = ct; + 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 = aper_get_nsnnwn(pd, ext_ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct = NULL; + const asn_per_constraint_t *ext_ct = NULL; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = NULL; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && (ct->range_bits >= 0)) { + // Value is not within the range of the primary values ? + if(present < ct->lower_bound || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + // X691/23.5 Extension marker = 1 + if(per_put_few_bits(po, 1, 1)) { + ASN__ENCODE_FAILED; + } + } else { + ASN__ENCODE_FAILED; + } + // no more need of constraint. + ext_ct = ct; + ct = NULL; + } + } + + if(ct && (ct->flags & APC_EXTENSIBLE)) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present, ct->lower_bound, ct->upper_bound); + // X691.23.5 Extension marker = 0 + if(per_put_few_bits(po, 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && (ct->range_bits >= 0)) { + // By construction (ct != 0), the alternative value is a non extended one. + // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + // X691/23.8 normally encoded as a small non negative whole number + + if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.h b/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.h new file mode 100644 index 0000000..1a27f91 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_CHOICE.h @@ -0,0 +1,81 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.c b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.c new file mode 100644 index 0000000..4bff1f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.c @@ -0,0 +1,2060 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.h b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.h new file mode 100644 index 0000000..16cd907 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE.h @@ -0,0 +1,69 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..9abbea5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c @@ -0,0 +1,359 @@ + +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..99fcd9e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h @@ -0,0 +1,42 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.c b/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.c new file mode 100644 index 0000000..f4dfa2b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.c @@ -0,0 +1,1442 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0};/* 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 = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.h b/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.h new file mode 100644 index 0000000..ab9c894 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_SET_OF.h @@ -0,0 +1,50 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/constr_TYPE.c b/E2Manager/asn1codec/e2ap_engine/constr_TYPE.c new file mode 100644 index 0000000..7f7cd6c --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_TYPE.c @@ -0,0 +1,81 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/E2Manager/asn1codec/e2ap_engine/constr_TYPE.h b/E2Manager/asn1codec/e2ap_engine/constr_TYPE.h new file mode 100644 index 0000000..2f5b27e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constr_TYPE.h @@ -0,0 +1,263 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/constraints.c b/E2Manager/asn1codec/e2ap_engine/constraints.c new file mode 100644 index 0000000..3aa914e --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constraints.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/constraints.h b/E2Manager/asn1codec/e2ap_engine/constraints.h new file mode 100644 index 0000000..9e7ffc8 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/constraints.h @@ -0,0 +1,63 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/E2Manager/asn1codec/e2ap_engine/converter-example.c b/E2Manager/asn1codec/e2ap_engine/converter-example.c new file mode 100644 index 0000000..8dcb274 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/converter-example.c @@ -0,0 +1,1033 @@ + +/* + * Generic converter template for a selected ASN.1 type. + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * + * To compile with your own ASN.1 type, redefine the PDU as shown: + * + * cc -DPDU=MyCustomType -o myDecoder.o -c converter-example.c + */ +#ifdef HAVE_CONFIG_H +#include +#endif +#define __EXTENSIONS__ +#include +#include +#include /* for atoi(3) */ +#include /* for getopt(3) */ +#include /* for strerror(3) */ +#include /* for EX_* exit codes */ +#include /* for errno */ +#include /* for isatty(3) */ +#include +#include /* for ASN__DEFAULT_STACK_MAX */ + +/* Convert "Type" defined by -DPDU into "asn_DEF_Type" */ +#ifdef PDU +#define ASN_DEF_PDU(t) asn_DEF_ ## t +#define DEF_PDU_Type(t) ASN_DEF_PDU(t) +#define PDU_Type DEF_PDU_Type(PDU) +extern asn_TYPE_descriptor_t PDU_Type; /* ASN.1 type to be decoded */ +#define PDU_Type_Ptr (&PDU_Type) +#else /* !PDU */ +#define PDU_Type_Ptr NULL +#endif /* PDU */ + +#ifdef ASN_PDU_COLLECTION /* Generated by asn1c -pdu=... */ +extern asn_TYPE_descriptor_t *asn_pdu_collection[]; +#endif + +#ifndef NO_ASN_PDU +#if !defined(PDU) && !defined(ASN_PDU_COLLECTION) +#error Define -DPDU to compile this example converter. +#error `asn1c -pdu=...` adds necessary flags automatically. +#endif +#endif + +/* + * Open file and parse its contens. + */ +static void *data_decode_from_file(enum asn_transfer_syntax, + asn_TYPE_descriptor_t *asnTypeOfPDU, + FILE *file, const char *name, + ssize_t suggested_bufsize, int first_pdu); +static int write_out(const void *buffer, size_t size, void *key); +static FILE *argument_to_file(char *av[], int idx); +static char *argument_to_name(char *av[], int idx); + + int opt_debug; /* -d (or -dd) */ +static int opt_check; /* -c (constraints checking) */ +static int opt_stack; /* -s (maximum stack size) */ +static int opt_nopad; /* -per-nopad (PER input is not padded between msgs) */ +static int opt_onepdu; /* -1 (decode single PDU) */ + +#ifdef JUNKTEST /* Enable -J */ +#define JUNKOPT "J:" +static double opt_jprob; /* Junk bit probability */ +static int junk_failures; +static void junk_bytes_with_probability(uint8_t *, size_t, double prob); + +#define RANDOPT "R:" +static ssize_t random_max_size = 0; /* Size of the random data */ + +#if !defined(__FreeBSD__) && !(defined(__APPLE__) && defined(__MACH__)) +static void +srandomdev(void) { + FILE *f = fopen("/dev/urandom", "rb"); + unsigned seed; + if(f) { + if(fread(&seed, 1, sizeof(seed), f) != sizeof(seed)) { + seed = time(NULL); + } + fclose(f); + } else { + seed = time(NULL); + } + srandom(seed); +} +#endif + +#else /* !JUNKTEST */ +#define JUNKOPT +#define RANDOPT +#endif /* JUNKTEST */ + +/* Debug output function */ +static void CC_PRINTFLIKE(1, 2) +DEBUG(const char *fmt, ...) { + va_list ap; + if(!opt_debug) return; + fprintf(stderr, "AD: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static const char * +ats_simple_name(enum asn_transfer_syntax syntax) { + switch(syntax) { + case ATS_INVALID: + return "/dev/null"; + case ATS_NONSTANDARD_PLAINTEXT: + return "plaintext"; + case ATS_BER: + return "BER"; + case ATS_DER: + return "DER"; + case ATS_CER: + return "CER"; + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + return "OER"; + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return "XER"; + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + return "PER"; + default: + return ""; + } +} + +#define CODEC_OFFSET(fname) ((ptrdiff_t)&(((asn_TYPE_operation_t *)0)->fname)) +typedef struct { + const char *name; + enum asn_transfer_syntax syntax; + ptrdiff_t codec_offset; + const char *full_name; +} syntax_selector; + +static syntax_selector input_encodings[] = { + {"ber", ATS_BER, CODEC_OFFSET(ber_decoder), + "Input is in BER (Basic Encoding Rules) or DER"}, + {"oer", ATS_BASIC_OER, CODEC_OFFSET(oer_decoder), + "Input is in OER (Octet Encoding Rules)"}, + {"per", ATS_UNALIGNED_BASIC_PER, CODEC_OFFSET(uper_decoder), + "Input is in Unaligned PER (Packed Encoding Rules)"}, + {"aper", ATS_ALIGNED_BASIC_PER, CODEC_OFFSET(aper_decoder), + "Input is in Aligned PER (Packed Encoding Rules)"}, + {"xer", ATS_BASIC_XER, CODEC_OFFSET(xer_decoder), + "Input is in XER (XML Encoding Rules)"}, + {0, ATS_INVALID, 0, 0}}; + +static syntax_selector output_encodings[] = { + {"der", ATS_DER, CODEC_OFFSET(der_encoder), + "Output as DER (Distinguished Encoding Rules)"}, + {"oer", ATS_CANONICAL_OER, CODEC_OFFSET(oer_encoder), + "Output as Canonical OER (Octet Encoding Rules)"}, + {"per", ATS_UNALIGNED_CANONICAL_PER, CODEC_OFFSET(uper_encoder), + "Output as Unaligned PER (Packed Encoding Rules)"}, + {"aper", ATS_ALIGNED_CANONICAL_PER, CODEC_OFFSET(aper_encoder), + "Output as Aligned PER (Packed Encoding Rules)"}, + {"xer", ATS_BASIC_XER, CODEC_OFFSET(xer_encoder), + "Output as XER (XML Encoding Rules)"}, + {"text", ATS_NONSTANDARD_PLAINTEXT, CODEC_OFFSET(print_struct), + "Output as plain semi-structured text"}, + {"null", ATS_INVALID, CODEC_OFFSET(print_struct), + "Verify (decode) input, but do not output"}, + {0, ATS_INVALID, 0, 0}}; + +static int +has_codec_defined(const asn_TYPE_descriptor_t *td, + const syntax_selector *element) { + return *(const void *const *)(const void *)((const char *)td->op + + element->codec_offset) != 0; +} + +/* + * Select ASN.1 Transfer Enocoding Syntax by command line name. + */ +static const syntax_selector * +ats_by_name(const char *name, const asn_TYPE_descriptor_t *td, + const syntax_selector *first_element) { + const syntax_selector *element; + for(element = first_element; element->name; element++) { + if(strcmp(element->name, name) == 0) { + if(td && td->op && has_codec_defined(td, element)) { + return element; + } + } + } + return NULL; +} + +int +main(int ac, char *av[]) { + FILE *binary_out; + asn_TYPE_descriptor_t *pduType = PDU_Type_Ptr; + asn_TYPE_descriptor_t *anyPduType = PDU_Type_Ptr; + ssize_t suggested_bufsize = 8192; /* close or equal to stdio buffer */ + int number_of_iterations = 1; + int num; + int ch; + const syntax_selector *sel; + enum asn_transfer_syntax isyntax = ATS_INVALID; + enum asn_transfer_syntax osyntax = ATS_BASIC_XER; + + if(!anyPduType) { +#ifdef ASN_PDU_COLLECTION + anyPduType = asn_pdu_collection[0]; + if(!anyPduType) { + fprintf(stderr, + "Empty PDU collection, no reference PDU to choose from.\n"); + exit(EX_SOFTWARE); + } +#else + fprintf(stderr, "Either asn1c -pdu=... or cc -DPDU should be used.\n"); + exit(EX_SOFTWARE); +#endif + } + + /* Figure out if a specialty decoder needs to be default */ +#ifndef ASN_DISABLE_OER_SUPPORT + isyntax = ATS_BASIC_OER; +#endif +#ifndef ASN_DISABLE_PER_SUPPORT + isyntax = ATS_UNALIGNED_BASIC_PER; +#endif + + /* + * Pocess the command-line argments. + */ + while((ch = getopt(ac, av, "i:o:1b:cdn:p:hs:" JUNKOPT RANDOPT)) != -1) + switch(ch) { + case 'i': + sel = ats_by_name(optarg, anyPduType, input_encodings); + if(sel) { + isyntax = sel->syntax; + } else { + fprintf(stderr, "-i: '%s': improper format selector\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'o': + sel = ats_by_name(optarg, anyPduType, output_encodings); + if(sel) { + osyntax = sel->syntax; + } else { + fprintf(stderr, "-o: '%s': improper format selector\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case '1': + opt_onepdu = 1; + break; + case 'b': + suggested_bufsize = atoi(optarg); + if(suggested_bufsize < 1 + || suggested_bufsize > 16 * 1024 * 1024) { + fprintf(stderr, + "-b %s: Improper buffer size (1..16M)\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'c': + opt_check = 1; + break; + case 'd': + opt_debug++; /* Double -dd means ASN.1 debug */ + break; + case 'n': + number_of_iterations = atoi(optarg); + if(number_of_iterations < 1) { + fprintf(stderr, + "-n %s: Improper iterations count\n", optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'p': + if(strcmp(optarg, "er-nopad") == 0) { + opt_nopad = 1; + break; + } +#ifdef ASN_PDU_COLLECTION + if(strcmp(optarg, "list") == 0) { + asn_TYPE_descriptor_t **pdu = asn_pdu_collection; + fprintf(stderr, "Available PDU types:\n"); + for(; *pdu; pdu++) printf("%s\n", (*pdu)->name); + exit(0); + } else if(optarg[0] >= 'A' && optarg[0] <= 'Z') { + asn_TYPE_descriptor_t **pdu = asn_pdu_collection; + while(*pdu && strcmp((*pdu)->name, optarg)) pdu++; + if(*pdu) { pduType = *pdu; break; } + fprintf(stderr, "-p %s: Unrecognized PDU. Try '-p list'.\n", + optarg); + exit(EX_USAGE); + } +#else /* Without -pdu=auto there's just a single type */ + if(strcmp(optarg, "list") == 0) { + fprintf(stderr, "Available PDU types:\n"); + if(pduType) { + printf("%s\n", pduType->name); + } + exit(0); + } else if(optarg[0] >= 'A' && optarg[0] <= 'Z') { + if(pduType && strcmp(optarg, pduType->name) == 0) { + break; + } + fprintf(stderr, "-p %s: Unrecognized PDU. Try '-p list'.\n", + optarg); + exit(EX_USAGE); + } +#endif /* ASN_PDU_COLLECTION */ + fprintf(stderr, "-p %s: Unrecognized option\n", optarg); + exit(EX_UNAVAILABLE); + case 's': + opt_stack = atoi(optarg); + if(opt_stack < 0) { + fprintf(stderr, + "-s %s: Non-negative value expected\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; +#ifdef JUNKTEST + case 'J': + opt_jprob = strtod(optarg, 0); + if(opt_jprob <= 0.0 || opt_jprob > 1.0) { + fprintf(stderr, + "-J %s: Probability range 0..1 expected \n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'R': + isyntax = ATS_RANDOM; + random_max_size = atoi(optarg); + if(random_max_size < 0) { + fprintf(stderr, + "-R %s: Non-negative value expected\n", + optarg); + exit(EX_UNAVAILABLE); + } + srandomdev(); + break; +#endif /* JUNKTEST */ + case 'h': + default: +#ifdef ASN_CONVERTER_TITLE +#define _AXS(x) #x +#define _ASX(x) _AXS(x) + fprintf(stderr, "%s\n", _ASX(ASN_CONVERTER_TITLE)); +#endif + fprintf(stderr, "Usage: %s [options] ...\n", av[0]); + fprintf(stderr, "Where options are:\n"); + for(sel = input_encodings; sel->name; sel++) { + if(ats_by_name(sel->name, anyPduType, sel)) { + fprintf(stderr, " -i%s %s%s\n", sel->name, + sel->full_name, + (sel->syntax == isyntax) ? " (DEFAULT)" : ""); + } + } + for(sel = output_encodings; sel->name; sel++) { + if(ats_by_name(sel->name, anyPduType, sel)) { + fprintf(stderr, " -o%s%s %s%s\n", sel->name, + strlen(sel->name) > 3 ? "" : " ", + sel->full_name, + (sel->syntax == osyntax) ? " (DEFAULT)" : ""); + } + } + if(anyPduType->op->uper_decoder) { + fprintf(stderr, + " -per-nopad Assume PER PDUs are not padded (-iper)\n"); + } +#ifdef ASN_PDU_COLLECTION + fprintf(stderr, + " -p Specify PDU type to decode\n" + " -p list List available PDUs\n"); +#endif /* ASN_PDU_COLLECTION */ + fprintf(stderr, + " -1 Decode only the first PDU in file\n" + " -b Set the i/o buffer size (default is %ld)\n" + " -c Check ASN.1 constraints after decoding\n" + " -d Enable debugging (-dd is even better)\n" + " -n Process files times\n" + " -s Set the stack usage limit (default is %d)\n" +#ifdef JUNKTEST + " -J Set random junk test bit garbaging probability\n" + " -R Generate a random value of roughly the given size,\n" + " instead of parsing the value from file.\n" +#endif + , (long)suggested_bufsize, ASN__DEFAULT_STACK_MAX); + exit(EX_USAGE); + } + + ac -= optind; + av += optind; + + if(!pduType) { +#ifdef NO_ASN_PDU + fprintf(stderr, "No -DPDU defined during compilation.\n"); + exit(0); +#else + fprintf(stderr, "Use '-p ' or '-p list' to select ASN.1 type.\n"); + exit(EX_USAGE); +#endif /* NO_ASN_PDU */ + } + + if(ac < 1 && isyntax != ATS_RANDOM) { + fprintf(stderr, "%s: No input files specified. " + "Try '-h' for more information\n", + av[-optind]); + exit(EX_USAGE); + } + + if(isatty(1)) { + const int is_text_output = osyntax == ATS_NONSTANDARD_PLAINTEXT + || osyntax == ATS_BASIC_XER + || osyntax == ATS_CANONICAL_XER; + if(is_text_output) { + binary_out = stdout; + } else { + fprintf(stderr, "(Suppressing binary output to a terminal.)\n"); + binary_out = fopen("/dev/null", "wb"); + if(!binary_out) { + fprintf(stderr, "Can't open /dev/null: %s\n", strerror(errno)); + exit(EX_OSERR); + } + } + } else { + binary_out = stdout; + } + setvbuf(stdout, 0, _IOLBF, 0); + + for(num = 0; num < number_of_iterations; num++) { + int ac_i; + /* + * Process all files in turn. + */ + for(ac_i = (isyntax == ATS_RANDOM) ? -1 : 0; ac_i < ac; ac_i++) { + asn_enc_rval_t erv = {0,0,0}; + void *structure; /* Decoded structure */ + FILE *file; + char *name; + int first_pdu; + + if(ac_i == -1) { + file = NULL; + name = ""; + opt_onepdu = 1; + } else { + file = argument_to_file(av, ac_i); + name = argument_to_name(av, ac_i); + } + + for(first_pdu = 1; (first_pdu || !opt_onepdu); first_pdu = 0) { + /* + * Decode the encoded structure from file. + */ +#ifdef JUNKTEST + if(isyntax == ATS_RANDOM) { + structure = NULL; + if(asn_random_fill(pduType, &structure, random_max_size) != 0) { + fprintf(stderr, "Cannot generate a random value.\n"); + assert(structure == NULL); + errno = EINVAL; + } + } else { +#endif + structure = data_decode_from_file(isyntax, pduType, file, name, + suggested_bufsize, first_pdu); +#ifdef JUNKTEST + } +#endif + if(!structure) { + if(errno) { + /* Error message is already printed */ + exit(EX_DATAERR); + } else { + /* EOF */ + break; + } + } + + /* Check ASN.1 constraints */ + if(opt_check) { + char errbuf[128]; + size_t errlen = sizeof(errbuf); + if(asn_check_constraints(pduType, structure, errbuf, &errlen)) { + fprintf(stderr, + "%s: ASN.1 constraint " + "check failed: %s\n", + name, errbuf); + exit(EX_DATAERR); + } + } + + if(osyntax == ATS_INVALID) { +#ifdef JUNKTEST + if(opt_jprob == 0.0) { + fprintf(stderr, "%s: decoded successfully\n", name); + } +#else + fprintf(stderr, "%s: decoded successfully\n", name); +#endif + } else { + erv = asn_encode(NULL, osyntax, pduType, structure, write_out, + binary_out); + + if(erv.encoded == -1) { + fprintf(stderr, "%s: Cannot convert %s into %s\n", name, + pduType->name, ats_simple_name(osyntax)); + DEBUG("Conversion failed for %s:\n", pduType->name); + asn_fprint(stderr, pduType, structure); + exit(EX_UNAVAILABLE); + } + DEBUG("Encoded in %" ASN_PRI_SSIZE " bytes of %s", erv.encoded, + ats_simple_name(osyntax)); + } + + ASN_STRUCT_FREE(*pduType, structure); + } + + if(file && file != stdin) { + fclose(file); + } + } + } + +#ifdef JUNKTEST + if(opt_jprob > 0.0) { + fprintf(stderr, "Junked %f OK (%d/%d)\n", + opt_jprob, junk_failures, number_of_iterations); + } +#endif /* JUNKTEST */ + + return 0; +} + +static struct dynamic_buffer { + uint8_t *data; /* Pointer to the data bytes */ + size_t offset; /* Offset from the start */ + size_t length; /* Length of meaningful contents */ + size_t unbits; /* Unused bits in the last byte */ + size_t allocated; /* Allocated memory for data */ + int nreallocs; /* Number of data reallocations */ + off_t bytes_shifted; /* Number of bytes ever shifted */ +} DynamicBuffer; + +static void +buffer_dump() { + uint8_t *p = DynamicBuffer.data + DynamicBuffer.offset; + uint8_t *e = p + DynamicBuffer.length - (DynamicBuffer.unbits ? 1 : 0); + if(!opt_debug) return; + DEBUG("Buffer: { d=%p, o=%" ASN_PRI_SIZE ", l=%" ASN_PRI_SIZE + ", u=%" ASN_PRI_SIZE ", a=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + (const void *)DynamicBuffer.data, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated, + (size_t)DynamicBuffer.bytes_shifted); + for(; p < e; p++) { + fprintf(stderr, " %c%c%c%c%c%c%c%c", + ((*p >> 7) & 1) ? '1' : '0', + ((*p >> 6) & 1) ? '1' : '0', + ((*p >> 5) & 1) ? '1' : '0', + ((*p >> 4) & 1) ? '1' : '0', + ((*p >> 3) & 1) ? '1' : '0', + ((*p >> 2) & 1) ? '1' : '0', + ((*p >> 1) & 1) ? '1' : '0', + ((*p >> 0) & 1) ? '1' : '0'); + } + if(DynamicBuffer.unbits) { + unsigned int shift; + fprintf(stderr, " "); + for(shift = 7; shift >= DynamicBuffer.unbits; shift--) + fprintf(stderr, "%c", ((*p >> shift) & 1) ? '1' : '0'); + fprintf(stderr, " %" ASN_PRI_SSIZE ":%" ASN_PRI_SSIZE "\n", + (ssize_t)DynamicBuffer.length - 1, + (ssize_t)8 - DynamicBuffer.unbits); + } else { + fprintf(stderr, " %ld\n", (long)DynamicBuffer.length); + } +} + +/* + * Move the buffer content left N bits, possibly joining it with + * preceeding content. + */ +static void +buffer_shift_left(size_t offset, int bits) { + uint8_t *ptr = DynamicBuffer.data + DynamicBuffer.offset + offset; + uint8_t *end = DynamicBuffer.data + DynamicBuffer.offset + + DynamicBuffer.length - 1; + + if(!bits) return; + + DEBUG("Shifting left %d bits off %ld (o=%ld, u=%ld, l=%ld)", + bits, (long)offset, + (long)DynamicBuffer.offset, + (long)DynamicBuffer.unbits, + (long)DynamicBuffer.length); + + if(offset) { + int right; + right = ptr[0] >> (8 - bits); + + DEBUG("oleft: %c%c%c%c%c%c%c%c", + ((ptr[-1] >> 7) & 1) ? '1' : '0', + ((ptr[-1] >> 6) & 1) ? '1' : '0', + ((ptr[-1] >> 5) & 1) ? '1' : '0', + ((ptr[-1] >> 4) & 1) ? '1' : '0', + ((ptr[-1] >> 3) & 1) ? '1' : '0', + ((ptr[-1] >> 2) & 1) ? '1' : '0', + ((ptr[-1] >> 1) & 1) ? '1' : '0', + ((ptr[-1] >> 0) & 1) ? '1' : '0'); + + DEBUG("oriht: %c%c%c%c%c%c%c%c", + ((ptr[0] >> 7) & 1) ? '1' : '0', + ((ptr[0] >> 6) & 1) ? '1' : '0', + ((ptr[0] >> 5) & 1) ? '1' : '0', + ((ptr[0] >> 4) & 1) ? '1' : '0', + ((ptr[0] >> 3) & 1) ? '1' : '0', + ((ptr[0] >> 2) & 1) ? '1' : '0', + ((ptr[0] >> 1) & 1) ? '1' : '0', + ((ptr[0] >> 0) & 1) ? '1' : '0'); + + DEBUG("mriht: %c%c%c%c%c%c%c%c", + ((right >> 7) & 1) ? '1' : '0', + ((right >> 6) & 1) ? '1' : '0', + ((right >> 5) & 1) ? '1' : '0', + ((right >> 4) & 1) ? '1' : '0', + ((right >> 3) & 1) ? '1' : '0', + ((right >> 2) & 1) ? '1' : '0', + ((right >> 1) & 1) ? '1' : '0', + ((right >> 0) & 1) ? '1' : '0'); + + ptr[-1] = (ptr[-1] & (0xff << bits)) | right; + + DEBUG("after: %c%c%c%c%c%c%c%c", + ((ptr[-1] >> 7) & 1) ? '1' : '0', + ((ptr[-1] >> 6) & 1) ? '1' : '0', + ((ptr[-1] >> 5) & 1) ? '1' : '0', + ((ptr[-1] >> 4) & 1) ? '1' : '0', + ((ptr[-1] >> 3) & 1) ? '1' : '0', + ((ptr[-1] >> 2) & 1) ? '1' : '0', + ((ptr[-1] >> 1) & 1) ? '1' : '0', + ((ptr[-1] >> 0) & 1) ? '1' : '0'); + } + + buffer_dump(); + + for(; ptr < end; ptr++) { + int right = ptr[1] >> (8 - bits); + *ptr = (*ptr << bits) | right; + } + *ptr <<= bits; + + DEBUG("Unbits [%" ASN_PRI_SIZE "=>", DynamicBuffer.unbits); + if(DynamicBuffer.unbits == 0) { + DynamicBuffer.unbits += bits; + } else { + DynamicBuffer.unbits += bits; + if(DynamicBuffer.unbits > 7) { + DynamicBuffer.unbits -= 8; + DynamicBuffer.length--; + DynamicBuffer.bytes_shifted++; + } + } + DEBUG("Unbits =>%" ASN_PRI_SIZE "]", DynamicBuffer.unbits); + + buffer_dump(); + + DEBUG("Shifted. Now (o=%" ASN_PRI_SIZE ", u=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE ")", + DynamicBuffer.offset, + DynamicBuffer.unbits, + DynamicBuffer.length); +} + +/* + * Ensure that the buffer contains at least this amount of free space. + */ +static void add_bytes_to_buffer(const void *data2add, size_t bytes) { + + if(bytes == 0) return; + + DEBUG("=> add_bytes(%" ASN_PRI_SIZE ") { o=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE " u=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + bytes, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated); + + if(DynamicBuffer.allocated + >= (DynamicBuffer.offset + DynamicBuffer.length + bytes)) { + DEBUG("\tNo buffer reallocation is necessary"); + } else if(bytes <= DynamicBuffer.offset) { + DEBUG("\tContents shifted by %ld", DynamicBuffer.offset); + + /* Shift the buffer contents */ + memmove(DynamicBuffer.data, + DynamicBuffer.data + DynamicBuffer.offset, + DynamicBuffer.length); + DynamicBuffer.bytes_shifted += DynamicBuffer.offset; + DynamicBuffer.offset = 0; + } else { + size_t newsize = (DynamicBuffer.allocated << 2) + bytes; + void *p = MALLOC(newsize); + if(!p) { + perror("malloc()"); + exit(EX_OSERR); + } + if (DynamicBuffer.length) { + memcpy(p, + DynamicBuffer.data + DynamicBuffer.offset, + DynamicBuffer.length); + } + FREEMEM(DynamicBuffer.data); + DynamicBuffer.data = (uint8_t *)p; + DynamicBuffer.offset = 0; + DynamicBuffer.allocated = newsize; + DynamicBuffer.nreallocs++; + DEBUG("\tBuffer reallocated to %ld (%d time)", + newsize, DynamicBuffer.nreallocs); + } + + memcpy(DynamicBuffer.data + + DynamicBuffer.offset + DynamicBuffer.length, + data2add, bytes); + DynamicBuffer.length += bytes; + if(DynamicBuffer.unbits) { + int bits = DynamicBuffer.unbits; + DynamicBuffer.unbits = 0; + buffer_shift_left(DynamicBuffer.length - bytes, bits); + } + + DEBUG("<= add_bytes(%" ASN_PRI_SIZE ") { o=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE " u=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + bytes, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated); +} + +static int +is_syntax_PER(enum asn_transfer_syntax syntax) { + return (syntax == ATS_UNALIGNED_BASIC_PER + || syntax == ATS_UNALIGNED_CANONICAL_PER + || syntax == ATS_ALIGNED_BASIC_PER + || syntax == ATS_ALIGNED_CANONICAL_PER); +} + +static int +restartability_supported(enum asn_transfer_syntax syntax) { + return !is_syntax_PER(syntax); +} + +static void * +data_decode_from_file(enum asn_transfer_syntax isyntax, asn_TYPE_descriptor_t *pduType, FILE *file, const char *name, ssize_t suggested_bufsize, int on_first_pdu) { + static uint8_t *fbuf; + static ssize_t fbuf_size; + static asn_codec_ctx_t s_codec_ctx; + asn_codec_ctx_t *opt_codec_ctx = 0; + void *structure = 0; + asn_dec_rval_t rval; + size_t old_offset; + size_t new_offset; + int tolerate_eof; + size_t rd; + + if(!file) { + fprintf(stderr, "%s: %s\n", name, strerror(errno)); + errno = EINVAL; + return 0; + } + + if(opt_stack) { + s_codec_ctx.max_stack_size = opt_stack; + opt_codec_ctx = &s_codec_ctx; + } + + DEBUG("Processing %s", name); + + /* prepare the file buffer */ + if(fbuf_size != suggested_bufsize) { + fbuf = (uint8_t *)REALLOC(fbuf, suggested_bufsize); + if(!fbuf) { + perror("realloc()"); + exit(EX_OSERR); + } + fbuf_size = suggested_bufsize; + } + + if(on_first_pdu) { + DynamicBuffer.offset = 0; + DynamicBuffer.length = 0; + DynamicBuffer.unbits = 0; + DynamicBuffer.allocated = 0; + DynamicBuffer.bytes_shifted = 0; + DynamicBuffer.nreallocs = 0; + } + + old_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; + + /* Pretend immediate EOF */ + rval.code = RC_WMORE; + rval.consumed = 0; + + for(tolerate_eof = 1; /* Allow EOF first time buffer is non-empty */ + (rd = fread(fbuf, 1, fbuf_size, file)) + || feof(file) == 0 + || (tolerate_eof && DynamicBuffer.length) + ;) { + int ecbits = 0; /* Extra consumed bits in case of PER */ + uint8_t *i_bptr; + size_t i_size; + + /* + * Copy the data over, or use the original buffer. + */ + if(DynamicBuffer.allocated) { + /* Append new data into the existing dynamic buffer */ + add_bytes_to_buffer(fbuf, rd); + i_bptr = DynamicBuffer.data + DynamicBuffer.offset; + i_size = DynamicBuffer.length; + } else { + i_bptr = fbuf; + i_size = rd; + } + + DEBUG("Decoding %" ASN_PRI_SIZE " bytes", i_size); + +#ifdef JUNKTEST + junk_bytes_with_probability(i_bptr, i_size, opt_jprob); +#endif + + if(is_syntax_PER(isyntax) && opt_nopad) { +#ifdef ASN_DISABLE_PER_SUPPORT + rval.code = RC_FAIL; + rval.consumed = 0; +#else + if(isyntax == ATS_UNALIGNED_BASIC_PER) + rval = uper_decode(opt_codec_ctx, pduType, (void **)&structure, + i_bptr, i_size, 0, DynamicBuffer.unbits); + else + rval = aper_decode(opt_codec_ctx, pduType, (void **)&structure, + i_bptr, i_size, 0, DynamicBuffer.unbits); + /* uper_decode() returns bits! */ + ecbits = rval.consumed % 8; /* Bits consumed from the last byte */ + rval.consumed >>= 3; /* Convert bits into bytes. */ +#endif + /* Non-padded PER decoder */ + } else { + rval = asn_decode(opt_codec_ctx, isyntax, pduType, + (void **)&structure, i_bptr, i_size); + } + if(rval.code == RC_WMORE && !restartability_supported(isyntax)) { + /* PER does not support restartability */ + ASN_STRUCT_FREE(*pduType, structure); + structure = 0; + rval.consumed = 0; + /* Continue accumulating data */ + } + + DEBUG("decode(%" ASN_PRI_SIZE ") consumed %" ASN_PRI_SIZE + "+%db (%" ASN_PRI_SIZE "), code %d", + DynamicBuffer.length, rval.consumed, ecbits, i_size, rval.code); + + if(DynamicBuffer.allocated == 0) { + /* + * Flush remainder into the intermediate buffer. + */ + if(rval.code != RC_FAIL && rval.consumed < rd) { + add_bytes_to_buffer(fbuf + rval.consumed, + rd - rval.consumed); + buffer_shift_left(0, ecbits); + DynamicBuffer.bytes_shifted = rval.consumed; + rval.consumed = 0; + ecbits = 0; + } + } + + /* + * Adjust position inside the source buffer. + */ + if(DynamicBuffer.allocated) { + DynamicBuffer.offset += rval.consumed; + DynamicBuffer.length -= rval.consumed; + } else { + DynamicBuffer.bytes_shifted += rval.consumed; + } + + switch(rval.code) { + case RC_OK: + if(ecbits) buffer_shift_left(0, ecbits); + DEBUG("RC_OK, finishing up with %ld+%d", + (long)rval.consumed, ecbits); + return structure; + case RC_WMORE: + DEBUG("RC_WMORE, continuing read=%ld, cons=%ld " + " with %ld..%ld-%ld..%ld", + (long)rd, + (long)rval.consumed, + (long)DynamicBuffer.offset, + (long)DynamicBuffer.length, + (long)DynamicBuffer.unbits, + (long)DynamicBuffer.allocated); + if(!rd) tolerate_eof--; + continue; + case RC_FAIL: + break; + } + break; + } + + DEBUG("Clean up partially decoded %s", pduType->name); + ASN_STRUCT_FREE(*pduType, structure); + + new_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; + + /* + * Print a message and return failure only if not EOF, + * unless this is our first PDU (empty file). + */ + if(on_first_pdu + || DynamicBuffer.length + || new_offset - old_offset > ((isyntax == ATS_BASIC_XER)?sizeof("\r\n")-1:0) + ) { + +#ifdef JUNKTEST + /* + * Nothing's wrong with being unable to decode junk. + * Simulate EOF. + */ + if(opt_jprob != 0.0) { + junk_failures++; + errno = 0; + return 0; + } +#endif + + DEBUG("ofp %d, no=%ld, oo=%ld, dbl=%ld", + on_first_pdu, (long)new_offset, (long)old_offset, + (long)DynamicBuffer.length); + fprintf(stderr, "%s: " + "Decode failed past byte %ld: %s\n", + name, (long)new_offset, + (rval.code == RC_WMORE) + ? "Unexpected end of input" + : "Input processing error"); +#ifndef ENOMSG +#define ENOMSG EINVAL +#endif +#ifndef EBADMSG +#define EBADMSG EINVAL +#endif + errno = (rval.code == RC_WMORE) ? ENOMSG : EBADMSG; + } else { + /* Got EOF after a few successful PDUs */ + errno = 0; + } + + return 0; +} + +/* Dump the buffer out to the specified FILE */ +static int write_out(const void *buffer, size_t size, void *key) { + FILE *fp = (FILE *)key; + return (fwrite(buffer, 1, size, fp) == size) ? 0 : -1; +} + +static int argument_is_stdin(char *av[], int idx) { + if(strcmp(av[idx], "-")) { + return 0; /* Certainly not */ + } else { + /* This might be , unless `./program -- -` */ + if(strcmp(av[-1], "--")) + return 1; + else + return 0; + } +} + +static FILE *argument_to_file(char *av[], int idx) { + return argument_is_stdin(av, idx) ? stdin : fopen(av[idx], "rb"); +} + +static char *argument_to_name(char *av[], int idx) { + return argument_is_stdin(av, idx) ? "standard input" : av[idx]; +} + +#ifdef JUNKTEST +/* + * Fill bytes with some garbage with specified probability (more or less). + */ +static void +junk_bytes_with_probability(uint8_t *buf, size_t size, double prob) { + static int junkmode; + uint8_t *ptr; + uint8_t *end; + if(opt_jprob <= 0.0) return; + for(ptr = buf, end = ptr + size; ptr < end; ptr++) { + int byte = *ptr; + if(junkmode++ & 1) { + if((((double)random() / RAND_MAX) < prob)) + byte = random() & 0xff; + } else { +#define BPROB(b) ((((double)random() / RAND_MAX) < prob) ? b : 0) + byte ^= BPROB(0x80); + byte ^= BPROB(0x40); + byte ^= BPROB(0x20); + byte ^= BPROB(0x10); + byte ^= BPROB(0x08); + byte ^= BPROB(0x04); + byte ^= BPROB(0x02); + byte ^= BPROB(0x01); + } + if(byte != *ptr) { + *ptr = byte; + } + } +} +#endif /* JUNKTEST */ + diff --git a/E2Manager/asn1codec/e2ap_engine/converter-example.mk b/E2Manager/asn1codec/e2ap_engine/converter-example.mk new file mode 100644 index 0000000..60809f6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/converter-example.mk @@ -0,0 +1,33 @@ +include ./Makefile.am.libasncodec + +LIBS += -lm +CFLAGS += $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION -I. +ASN_LIBRARY ?= libasncodec.a +ASN_PROGRAM ?= converter-example +ASN_PROGRAM_SRCS ?= \ + ./converter-example.c\ + ./pdu_collection.c + +all: $(ASN_PROGRAM) + +$(ASN_PROGRAM): $(ASN_LIBRARY) $(ASN_PROGRAM_SRCS:.c=.o) + $(CC) $(CFLAGS) $(CPPFLAGS) -o $(ASN_PROGRAM) $(ASN_PROGRAM_SRCS:.c=.o) $(LDFLAGS) $(ASN_LIBRARY) $(LIBS) + +$(ASN_LIBRARY): $(ASN_MODULE_SRCS:.c=.o) + $(AR) rcs $@ $(ASN_MODULE_SRCS:.c=.o) + +.SUFFIXES: +.SUFFIXES: .c .o + +.c.o: + $(CC) $(CFLAGS) -o $@ -c $< + +clean: + rm -f $(ASN_PROGRAM) $(ASN_LIBRARY) + rm -f $(ASN_MODULE_SRCS:.c=.o) $(ASN_PROGRAM_SRCS:.c=.o) + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../../asnFiles/e2ap-v031.asn ../../asnFiles/X2AP-PDU-Contents.asn ../../asnFiles/X2AP-Constants.asn ../../asnFiles/X2AP-Containers.asn ../../asnFiles/X2AP-IEs.asn ../../asnFiles/X2AP-CommonDataTypes.asn ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn + diff --git a/E2Manager/asn1codec/e2ap_engine/der_encoder.c b/E2Manager/asn1codec/e2ap_engine/der_encoder.c new file mode 100644 index 0000000..9903865 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/der_encoder.c @@ -0,0 +1,195 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/E2Manager/asn1codec/e2ap_engine/der_encoder.h b/E2Manager/asn1codec/e2ap_engine/der_encoder.h new file mode 100644 index 0000000..a79aad3 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/der_encoder.h @@ -0,0 +1,69 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/pdu_collection.c b/E2Manager/asn1codec/e2ap_engine/pdu_collection.c new file mode 100644 index 0000000..1f9b1ab --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/pdu_collection.c @@ -0,0 +1,190 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed 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. + * + */ + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +extern struct asn_TYPE_descriptor_s asn_DEF_E2AP_PDU; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverPreparationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverReport; +extern struct asn_TYPE_descriptor_s asn_DEF_SNStatusTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_UEContextRelease; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverCancel; +extern struct asn_TYPE_descriptor_s asn_DEF_PrivateMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_RLFIndication; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_X2Release; +extern struct asn_TYPE_descriptor_s asn_DEF_X2APMessageTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReconfigurationComplete; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBCounterCheckRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReconfigurationComplete; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBCounterCheckRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_RRCTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_SecondaryRATDataUsageReport; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBActivityNotification; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCPartialResetRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCPartialResetConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_EUTRANRCellResourceCoordinationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_EUTRANRCellResourceCoordinationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_DataForwardingAddressIndication; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_eventTriggerDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_actionDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_indicationHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_indicationMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_callProcessID; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_controlHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_controlMessage; + + +struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { + /* From module E2AP-PDU-Descriptions in ../../asnFiles/e2ap-v031.asn */ + &asn_DEF_E2AP_PDU, + /* From module X2AP-PDU-Contents in ../../asnFiles/X2AP-PDU-Contents.asn */ + &asn_DEF_HandoverRequest, + &asn_DEF_HandoverRequestAcknowledge, + &asn_DEF_HandoverPreparationFailure, + &asn_DEF_HandoverReport, + &asn_DEF_SNStatusTransfer, + &asn_DEF_UEContextRelease, + &asn_DEF_HandoverCancel, + &asn_DEF_PrivateMessage, + &asn_DEF_MobilityChangeRequest, + &asn_DEF_MobilityChangeAcknowledge, + &asn_DEF_MobilityChangeFailure, + &asn_DEF_RLFIndication, + &asn_DEF_CellActivationRequest, + &asn_DEF_CellActivationResponse, + &asn_DEF_CellActivationFailure, + &asn_DEF_X2Release, + &asn_DEF_X2APMessageTransfer, + &asn_DEF_SeNBAdditionRequest, + &asn_DEF_SeNBAdditionRequestAcknowledge, + &asn_DEF_SeNBAdditionRequestReject, + &asn_DEF_SeNBReconfigurationComplete, + &asn_DEF_SeNBModificationRequest, + &asn_DEF_SeNBModificationRequestAcknowledge, + &asn_DEF_SeNBModificationRequestReject, + &asn_DEF_SeNBModificationRequired, + &asn_DEF_SeNBModificationConfirm, + &asn_DEF_SeNBModificationRefuse, + &asn_DEF_SeNBReleaseRequest, + &asn_DEF_SeNBReleaseRequired, + &asn_DEF_SeNBReleaseConfirm, + &asn_DEF_SeNBCounterCheckRequest, + &asn_DEF_X2RemovalRequest, + &asn_DEF_X2RemovalResponse, + &asn_DEF_X2RemovalFailure, + &asn_DEF_RetrieveUEContextRequest, + &asn_DEF_RetrieveUEContextResponse, + &asn_DEF_RetrieveUEContextFailure, + &asn_DEF_SgNBAdditionRequest, + &asn_DEF_SgNBAdditionRequestAcknowledge, + &asn_DEF_SgNBAdditionRequestReject, + &asn_DEF_SgNBReconfigurationComplete, + &asn_DEF_SgNBModificationRequest, + &asn_DEF_SgNBModificationRequestAcknowledge, + &asn_DEF_SgNBModificationRequestReject, + &asn_DEF_SgNBModificationRequired, + &asn_DEF_SgNBModificationConfirm, + &asn_DEF_SgNBModificationRefuse, + &asn_DEF_SgNBReleaseRequest, + &asn_DEF_SgNBReleaseRequestAcknowledge, + &asn_DEF_SgNBReleaseRequestReject, + &asn_DEF_SgNBReleaseRequired, + &asn_DEF_SgNBReleaseConfirm, + &asn_DEF_SgNBCounterCheckRequest, + &asn_DEF_SgNBChangeRequired, + &asn_DEF_SgNBChangeConfirm, + &asn_DEF_RRCTransfer, + &asn_DEF_SgNBChangeRefuse, + &asn_DEF_ENDCCellActivationRequest, + &asn_DEF_ENDCCellActivationResponse, + &asn_DEF_ENDCCellActivationFailure, + &asn_DEF_SecondaryRATDataUsageReport, + &asn_DEF_SgNBActivityNotification, + &asn_DEF_ENDCPartialResetRequired, + &asn_DEF_ENDCPartialResetConfirm, + &asn_DEF_EUTRANRCellResourceCoordinationRequest, + &asn_DEF_EUTRANRCellResourceCoordinationResponse, + &asn_DEF_ENDCX2RemovalRequest, + &asn_DEF_ENDCX2RemovalResponse, + &asn_DEF_ENDCX2RemovalFailure, + &asn_DEF_DataForwardingAddressIndication, + /* From module E2SM-gNB-X2-IEs in ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn */ + &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + &asn_DEF_E2SM_gNB_X2_actionDefinition, + &asn_DEF_E2SM_gNB_X2_indicationHeader, + &asn_DEF_E2SM_gNB_X2_indicationMessage, + &asn_DEF_E2SM_gNB_X2_callProcessID, + &asn_DEF_E2SM_gNB_X2_controlHeader, + &asn_DEF_E2SM_gNB_X2_controlMessage, + 0 +}; + diff --git a/E2Manager/asn1codec/e2ap_engine/per_decoder.c b/E2Manager/asn1codec/e2ap_engine/per_decoder.c new file mode 100644 index 0000000..55d7eeb --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_decoder.c @@ -0,0 +1,204 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + + +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/per_decoder.h b/E2Manager/asn1codec/e2ap_engine/per_decoder.h new file mode 100644 index 0000000..e404016 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_decoder.h @@ -0,0 +1,83 @@ + +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/per_encoder.c b/E2Manager/asn1codec/e2ap_engine/per_encoder.c new file mode 100644 index 0000000..93c7a85 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_encoder.c @@ -0,0 +1,283 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/E2Manager/asn1codec/e2ap_engine/per_encoder.h b/E2Manager/asn1codec/e2ap_engine/per_encoder.h new file mode 100644 index 0000000..b36257a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_encoder.h @@ -0,0 +1,94 @@ + +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/per_opentype.c b/E2Manager/asn1codec/e2ap_engine/per_opentype.c new file mode 100644 index 0000000..65c6f5d --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_opentype.c @@ -0,0 +1,534 @@ + +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && 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("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && 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("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/E2Manager/asn1codec/e2ap_engine/per_opentype.h b/E2Manager/asn1codec/e2ap_engine/per_opentype.h new file mode 100644 index 0000000..d729877 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_opentype.h @@ -0,0 +1,45 @@ + +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/per_support.c b/E2Manager/asn1codec/e2ap_engine/per_support.c new file mode 100644 index 0000000..af70584 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_support.c @@ -0,0 +1,490 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/E2Manager/asn1codec/e2ap_engine/per_support.h b/E2Manager/asn1codec/e2ap_engine/per_support.h new file mode 100644 index 0000000..c2c07ff --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/per_support.h @@ -0,0 +1,128 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/xer_decoder.c b/E2Manager/asn1codec/e2ap_engine/xer_decoder.c new file mode 100644 index 0000000..ab89250 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_decoder.c @@ -0,0 +1,370 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/E2Manager/asn1codec/e2ap_engine/xer_decoder.h b/E2Manager/asn1codec/e2ap_engine/xer_decoder.h new file mode 100644 index 0000000..e874abc --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_decoder.h @@ -0,0 +1,107 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/xer_encoder.c b/E2Manager/asn1codec/e2ap_engine/xer_encoder.c new file mode 100644 index 0000000..204ec0b --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_encoder.c @@ -0,0 +1,238 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/E2Manager/asn1codec/e2ap_engine/xer_encoder.h b/E2Manager/asn1codec/e2ap_engine/xer_encoder.h new file mode 100644 index 0000000..df702f5 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_encoder.h @@ -0,0 +1,84 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/E2Manager/asn1codec/e2ap_engine/xer_support.c b/E2Manager/asn1codec/e2ap_engine/xer_support.c new file mode 100644 index 0000000..754fdd6 --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_support.c @@ -0,0 +1,228 @@ + +/* + * 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/E2Manager/asn1codec/e2ap_engine/xer_support.h b/E2Manager/asn1codec/e2ap_engine/xer_support.h new file mode 100644 index 0000000..42f1a8a --- /dev/null +++ b/E2Manager/asn1codec/e2ap_engine/xer_support.h @@ -0,0 +1,56 @@ + +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/E2Manager/asn1codec/inc/asn1codec_utils.h b/E2Manager/asn1codec/inc/asn1codec_utils.h new file mode 100644 index 0000000..5d6b9b8 --- /dev/null +++ b/E2Manager/asn1codec/inc/asn1codec_utils.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef INC_ASN1CODEC_UTILS_H_ +#define INC_ASN1CODEC_UTILS_H_ + +#ifndef ASN_DISABLE_OER_SUPPORT +#define ASN_DISABLE_OER_SUPPORT +#endif + +#ifndef ASN_PDU_COLLECTION +#define ASN_PDU_COLLECTION +#endif + +#include +#include +#include +#include +#include +#include + +#define pLMN_Identity_size 3 +#define shortMacro_eNB_ID_size 18 +#define macro_eNB_ID_size 20 +#define longMacro_eNB_ID_size 21 +#define home_eNB_ID_size 28 +#define eUTRANcellIdentifier_size 28 + +#ifdef __cplusplus +extern "C" +{ +#endif + +bool asn1_pdu_printer(const E2AP_PDU_t *pdu, size_t obufsz, char *buf); +bool asn1_pdu_xer_printer(const E2AP_PDU_t *pdu, size_t obufsz, char *buf); +bool per_unpack_pdu(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +bool per_pack_pdu(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +bool unpack_pdu_aux(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax); +bool pack_pdu_aux(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax); + +E2AP_PDU_t *new_pdu(size_t sz); +void delete_pdu(E2AP_PDU_t *pdu); + +#ifdef __cplusplus +} +#endif + +#endif /* INC_ASN1CODEC_UTILS_H_ */ diff --git a/E2Manager/asn1codec/inc/configuration_update_wrapper.h b/E2Manager/asn1codec/inc/configuration_update_wrapper.h new file mode 100644 index 0000000..81608b3 --- /dev/null +++ b/E2Manager/asn1codec/inc/configuration_update_wrapper.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ + +// Standard Includes: ANSI C/C++, MSA, and Third-Party Libraries + +#include +#include +#include + +#ifndef INC_CONFIGURATION_UPDATE_WRAPPER_H_ +#define INC_CONFIGURATION_UPDATE_WRAPPER_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif +bool build_pack_x2enb_configuration_update_ack(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_x2enb_configuration_update_failure(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_endc_configuration_update_ack(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_endc_configuration_update_failure(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +#ifdef __cplusplus +} +#endif + +#endif /* INC_CONFIGURATION_UPDATE_WRAPPER_H_ */ diff --git a/E2Manager/asn1codec/inc/x2setup_request_wrapper.h b/E2Manager/asn1codec/inc/x2setup_request_wrapper.h new file mode 100644 index 0000000..8af5fb8 --- /dev/null +++ b/E2Manager/asn1codec/inc/x2setup_request_wrapper.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ + +// Standard Includes: ANSI C/C++, MSA, and Third-Party Libraries + +#include +#include +#include +#include + +#ifndef INC_X2SETUP_REQUEST_WRAPPER_H +#define INC_X2SETUP_REQUEST_WRAPPER_H + +#ifdef __cplusplus +extern "C" +{ +#endif +bool +build_pack_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/,uint8_t const* ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); + +bool +build_pack_endc_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +); +bool +build_pack_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/,uint8_t const* ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf, enum asn_transfer_syntax syntax); + +bool +build_pack_endc_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf, enum asn_transfer_syntax syntax); + +#ifdef __cplusplus +} +#endif + +#endif /* INC_X2SETUP_REQUEST_WRAPPER_H */ + diff --git a/E2Manager/asn1codec/inc/x2setup_response_wrapper.h b/E2Manager/asn1codec/inc/x2setup_response_wrapper.h new file mode 100644 index 0000000..b2c4d02 --- /dev/null +++ b/E2Manager/asn1codec/inc/x2setup_response_wrapper.h @@ -0,0 +1,51 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#ifndef INC_X2SETUP_RESPONSE_WRAPPER_H +#define INC_X2SETUP_RESPONSE_WRAPPER_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* INC_X2SETUP_REQUEST_WRAPPER_H */ diff --git a/E2Manager/asn1codec/src/asn1codec_utils.c b/E2Manager/asn1codec/src/asn1codec_utils.c new file mode 100644 index 0000000..cef7cd6 --- /dev/null +++ b/E2Manager/asn1codec/src/asn1codec_utils.c @@ -0,0 +1,219 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include +#undef NDEBUG +#include +#include +#include +#include + +/* + * Printer for the e2ap pdu. + * The string representation of the pdu stored in buf. + * + * Input: + * pdu - the pdu to print. + * buf_size - the size of the storage buffer. + * buf - hold the string representation of the pdu. + */ +bool +asn1_pdu_printer(E2AP_PDU_t const *pdu, size_t buf_size, char *buf) +{ + bool rc = true; + char *bufloc = 0; + size_t sizeloc = 0; + buf[0] = 0; + FILE *stream = open_memstream(&bufloc, &sizeloc); + + errno = 0; + if (asn_fprint(stream, &asn_DEF_E2AP_PDU, pdu)){ + snprintf(buf, buf_size, "#%s.%s - Failed to print %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, buf+strlen(buf), buf_size - strlen(buf)); + rc = false; + } else { + buf_size = buf_size > sizeloc ? sizeloc: buf_size -1; + memcpy(buf, bufloc, buf_size); + buf[buf_size] = 0; + } + + fclose(stream); + free(bufloc); + return rc; +} + + +/* + * XML Printer for the e2ap pdu. + * The string representation of the pdu stored in buf. + * + * Input: + * pdu - the pdu to print. + * buf_size - the size of the storage buffer. + * buf - hold the string representation of the pdu. + */ +bool +asn1_pdu_xer_printer(E2AP_PDU_t const *pdu, size_t buf_size, char *buf) +{ + bool rc = true; + char *bufloc = 0; + size_t sizeloc = 0; + buf[0] = 0; + FILE *stream = open_memstream(&bufloc, &sizeloc); + + errno = 0; + if (xer_fprint(stream, &asn_DEF_E2AP_PDU, pdu)){ + snprintf(buf, buf_size, "#%s.%s - Failed to print %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, buf+strlen(buf), buf_size - strlen(buf)); + rc = false; + } else { + buf_size = buf_size > sizeloc ? sizeloc: buf_size -1; + memcpy(buf, bufloc, buf_size); + buf[buf_size] = 0; + } + + fclose(stream); + free(bufloc); + return rc; +} + +/* + * Unpack the pdu from ASN.1 PER encoding. + * + * Input: + * pdu - storage for unpacked pdu. + * packed_buf_size - size of the encoded data. + * packed_buf - storage of the packed pdu + * err_buf_size - size of the err_buf which may hold the error string in case of + * an error. err_buf - storage for the error string + * + * Return: true in case of success, false in case of failure. + */ +bool +per_unpack_pdu(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + return unpack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER); +} + +bool +unpack_pdu_aux(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax) +{ + char spec[256]; + size_t err_msg_size = err_buf_size; + + //ATS_BASIC_XER ATS_ALIGNED_BASIC_PER, ATS_UNALIGNED_BASIC_PER,ATS_ALIGNED_CANONICAL_PER + errno = 0; + asn_dec_rval_t rval = + asn_decode(0,syntax , &asn_DEF_E2AP_PDU, (void **)&pdu, packed_buf, packed_buf_size); + switch(rval.code) { + case RC_OK: + if (asn_check_constraints(&asn_DEF_E2AP_PDU, pdu,err_buf, &err_msg_size)){ + snprintf(spec, sizeof(spec), "#%s.%s - Constraint check failed: ", __FILE__, __func__); + size_t spec_actual_size = strlen(spec); + if (spec_actual_size + err_msg_size < err_buf_size){ + memmove(err_buf + spec_actual_size, err_buf, err_msg_size + 1); + memcpy(err_buf, spec, spec_actual_size); + } + return false; + } + return true; + + break; + case RC_WMORE: + case RC_FAIL: + default: + break; + } + + snprintf(err_buf, err_buf_size, "#%s.%s - Failed to decode %s (consumed %zu), error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, rval.consumed, errno); + strerror_r(errno, err_buf+strlen(err_buf), err_buf_size - strlen(err_buf)); + return false; +} + +/* + * Pack the pdu using ASN.1 PER encoding. + * + * Input: + * pdu - the pdu to pack. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + * packed_buf - storage for the packed pdu + * err_buf_size - size of the err_buf which may hold the error string in case of + * an error. err_buf - storage for the error string + * + * Return: true in case of success, false in case of failure. + */ +bool +per_pack_pdu(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + return pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER); +} + +bool +pack_pdu_aux(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax) +{ + char spec[256]; + size_t err_msg_size = err_buf_size; + + if (asn_check_constraints(&asn_DEF_E2AP_PDU, pdu,err_buf, &err_msg_size)){ + snprintf(spec, sizeof(spec), "#%s.%s - Constraint check failed: ", __FILE__, __func__); + size_t spec_actual_size = strlen(spec); + if (spec_actual_size + err_msg_size < err_buf_size){ + memmove(err_buf + spec_actual_size, err_buf, err_msg_size + 1); + memcpy(err_buf, spec, spec_actual_size); + } + return false; + } + + errno = 0; +asn_enc_rval_t res = + asn_encode_to_buffer(0, syntax, &asn_DEF_E2AP_PDU, pdu, packed_buf, *packed_buf_size); + if(res.encoded == -1) { + snprintf(err_buf, err_buf_size, "#%s.%s - Failed to encode %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, err_buf+strlen(err_buf), err_buf_size - strlen(err_buf)); + return false; + } else { + /* Encoded successfully. */ + if (*packed_buf_size < res.encoded){ + snprintf(err_buf, err_buf_size, "#%s.%s - Encoded output of %s, is too big:%zu", __FILE__, __func__, asn_DEF_E2AP_PDU.name,res.encoded); + return false; + } else { + *packed_buf_size = res.encoded; + } + } + return true; +} + +/* + * Create a new pdu. + * Abort the process on allocation failure. + */ +E2AP_PDU_t *new_pdu(size_t sz /*ignored (may be used for a custom allocator)*/) +{ + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + assert(pdu != 0); + return pdu; +} + +void delete_pdu(E2AP_PDU_t *pdu) +{ + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); +} + diff --git a/E2Manager/asn1codec/src/configuration_update_wrapper.c b/E2Manager/asn1codec/src/configuration_update_wrapper.c new file mode 100644 index 0000000..cea1aa9 --- /dev/null +++ b/E2Manager/asn1codec/src/configuration_update_wrapper.c @@ -0,0 +1,235 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ + +// Standard Includes: ANSI C/C++, MSA, and Third-Party Libraries + +// Platform Includes: Platform specific classes, functions, and libraries + +// Local Includes: Application specific classes, functions, and libraries + +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Build and pack ENB Configuration Update Acknowledge (successful outcome response). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_x2enb_configuration_update_ack( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); + ENBConfigurationUpdateAcknowledge_t *enbConfigurationUpdateAcknowledge; + ENBConfigurationUpdateAcknowledge_IEs_t *enbConfigurationUpdateAcknowledge_IEs = calloc(1, sizeof(ENBConfigurationUpdateAcknowledge_IEs_t)); + + assert(pdu != 0); + assert(successfulOutcome != 0); + assert(enbConfigurationUpdateAcknowledge_IEs != 0); + + pdu->present = E2AP_PDU_PR_successfulOutcome; + pdu->choice.successfulOutcome = successfulOutcome; + + successfulOutcome->procedureCode = ProcedureCode_id_eNBConfigurationUpdate; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge; + enbConfigurationUpdateAcknowledge = &successfulOutcome->value.choice.ENBConfigurationUpdateAcknowledge; + + enbConfigurationUpdateAcknowledge_IEs->id = ProtocolIE_ID_id_CriticalityDiagnostics; + enbConfigurationUpdateAcknowledge_IEs->criticality = Criticality_ignore; + enbConfigurationUpdateAcknowledge_IEs->value.present = ENBConfigurationUpdateAcknowledge_IEs__value_PR_CriticalityDiagnostics; + + ASN_SEQUENCE_ADD(&enbConfigurationUpdateAcknowledge->protocolIEs, enbConfigurationUpdateAcknowledge_IEs); + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENB Configuration Update Failure (unsuccessful outcome message). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_x2enb_configuration_update_failure( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + UnsuccessfulOutcome_t *unsuccessfulOutcome = calloc(1, sizeof(UnsuccessfulOutcome_t)); + ENBConfigurationUpdateFailure_t *enbConfigurationUpdateFailure; + ENBConfigurationUpdateFailure_IEs_t *enbConfigurationUpdateFailure_IEs = calloc(1, sizeof(ENBConfigurationUpdateFailure_IEs_t)); + + assert(pdu != 0); + assert(unsuccessfulOutcome != 0); + assert(enbConfigurationUpdateFailure_IEs != 0); + + + pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; + pdu->choice.unsuccessfulOutcome = unsuccessfulOutcome; + + unsuccessfulOutcome->procedureCode = ProcedureCode_id_eNBConfigurationUpdate; + unsuccessfulOutcome->criticality = Criticality_reject; + unsuccessfulOutcome->value.present = UnsuccessfulOutcome__value_PR_ENBConfigurationUpdateFailure; + enbConfigurationUpdateFailure = &unsuccessfulOutcome->value.choice.ENBConfigurationUpdateFailure; + + enbConfigurationUpdateFailure_IEs->id = ProtocolIE_ID_id_Cause; + enbConfigurationUpdateFailure_IEs->criticality = Criticality_ignore; + enbConfigurationUpdateFailure_IEs->value.present = ENBConfigurationUpdateFailure_IEs__value_PR_Cause; + enbConfigurationUpdateFailure_IEs->value.choice.Cause.present = Cause_PR_protocol; + enbConfigurationUpdateFailure_IEs->value.choice.Cause.choice.protocol= CauseProtocol_abstract_syntax_error_reject; + ASN_SEQUENCE_ADD(&enbConfigurationUpdateFailure->protocolIEs, enbConfigurationUpdateFailure_IEs); + + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENDC Configuration Update Acknowledge (successful outcome response). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_configuration_update_ack( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); + ENDCConfigurationUpdateAcknowledge_t *endcConfigurationUpdateAcknowledge; + ENDCConfigurationUpdateAcknowledge_IEs_t *endcConfigurationUpdateAcknowledge_IEs = calloc(1, sizeof(ENDCConfigurationUpdateAcknowledge_IEs_t)); + + assert(pdu != 0); + assert(successfulOutcome != 0); + assert(endcConfigurationUpdateAcknowledge_IEs != 0); + + pdu->present = E2AP_PDU_PR_successfulOutcome; + pdu->choice.successfulOutcome = successfulOutcome; + + successfulOutcome->procedureCode = ProcedureCode_id_endcConfigurationUpdate; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_ENDCConfigurationUpdateAcknowledge; + endcConfigurationUpdateAcknowledge = &successfulOutcome->value.choice.ENDCConfigurationUpdateAcknowledge; + ASN_SEQUENCE_ADD(&endcConfigurationUpdateAcknowledge->protocolIEs, endcConfigurationUpdateAcknowledge_IEs); + + endcConfigurationUpdateAcknowledge_IEs->id = ProtocolIE_ID_id_RespondingNodeType_EndcConfigUpdate; + endcConfigurationUpdateAcknowledge_IEs->criticality = Criticality_reject; + endcConfigurationUpdateAcknowledge_IEs->value.present = ENDCConfigurationUpdateAcknowledge_IEs__value_PR_RespondingNodeType_EndcConfigUpdate; + endcConfigurationUpdateAcknowledge_IEs->value.choice.RespondingNodeType_EndcConfigUpdate.present = RespondingNodeType_EndcConfigUpdate_PR_respond_eNB; + + ProtocolIE_Container_119P95_t *enb_ENDCConfigUpdateAckIEs_Container = calloc(1, sizeof(ProtocolIE_Container_119P95_t)); + assert(enb_ENDCConfigUpdateAckIEs_Container != 0); + endcConfigurationUpdateAcknowledge_IEs->value.choice.RespondingNodeType_EndcConfigUpdate.choice.respond_eNB = (struct ProtocolIE_Container*)enb_ENDCConfigUpdateAckIEs_Container; + + //Leave the respond_eNB container empty (ENB_ENDCConfigUpdateAckIEs_t is an empty element). + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENDC Configuration Update Failure (unsuccessful outcome message). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_configuration_update_failure( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + UnsuccessfulOutcome_t *unsuccessfulOutcome = calloc(1, sizeof(UnsuccessfulOutcome_t)); + ENDCConfigurationUpdateFailure_t *endcConfigurationUpdateFailure; + ENDCConfigurationUpdateFailure_IEs_t *endcConfigurationUpdateFailure_IEs = calloc(1, sizeof(ENDCConfigurationUpdateFailure_IEs_t)); + + assert(pdu != 0); + assert(unsuccessfulOutcome != 0); + assert(endcConfigurationUpdateFailure_IEs != 0); + + + pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; + pdu->choice.unsuccessfulOutcome = unsuccessfulOutcome; + + unsuccessfulOutcome->procedureCode = ProcedureCode_id_endcConfigurationUpdate; + unsuccessfulOutcome->criticality = Criticality_reject; + unsuccessfulOutcome->value.present = UnsuccessfulOutcome__value_PR_ENDCConfigurationUpdateFailure; + endcConfigurationUpdateFailure = &unsuccessfulOutcome->value.choice.ENDCConfigurationUpdateFailure; + + endcConfigurationUpdateFailure_IEs->id = ProtocolIE_ID_id_Cause; + endcConfigurationUpdateFailure_IEs->criticality = Criticality_ignore; + endcConfigurationUpdateFailure_IEs->value.present = ENDCConfigurationUpdateFailure_IEs__value_PR_Cause; + endcConfigurationUpdateFailure_IEs->value.choice.Cause.present = Cause_PR_protocol; + endcConfigurationUpdateFailure_IEs->value.choice.Cause.choice.protocol= CauseProtocol_abstract_syntax_error_reject; + ASN_SEQUENCE_ADD(&endcConfigurationUpdateFailure->protocolIEs, endcConfigurationUpdateFailure_IEs); + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + diff --git a/E2Manager/asn1codec/src/tests/configuration_update_wrapper_test.c b/E2Manager/asn1codec/src/tests/configuration_update_wrapper_test.c new file mode 100644 index 0000000..f45479e --- /dev/null +++ b/E2Manager/asn1codec/src/tests/configuration_update_wrapper_test.c @@ -0,0 +1,126 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include +#include +#include +#include + +void test_build_pack_x2enb_configuration_update_ack(); +void test_build_pack_x2enb_configuration_update_failure(); +void test_build_pack_endc_configuration_update_ack(); +void test_build_pack_endc_configuration_update_failure(); +int +main(int argc, char* argv[]) +{ + test_build_pack_x2enb_configuration_update_ack(); + test_build_pack_x2enb_configuration_update_failure(); + test_build_pack_endc_configuration_update_ack(); + test_build_pack_endc_configuration_update_failure(); + exit(0); +} + +void test_build_pack_x2enb_configuration_update_ack(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_x2enb_configuration_update_ack(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_x2enb_configuration_update_ack failed. Packing error %s\n", responseErrorBuf); + return; + } + printf("x2enb configuration update acknowledge packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_build_pack_x2enb_configuration_update_failure(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_x2enb_configuration_update_failure(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_x2enb_configuration_update_failure. Packing error %s\n", responseErrorBuf); + return; + } + printf("x2enb configuration update failure packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_build_pack_endc_configuration_update_ack(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_configuration_update_ack(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_endc_configuration_update_ack. Packing error %s\n", responseErrorBuf); + return; + } + printf("endc configuration update acknowledge packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + +} + +void test_build_pack_endc_configuration_update_failure(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_configuration_update_failure(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_endc_configuration_update_failure. Packing error %s\n", responseErrorBuf); + return; + } + printf("endc configuration update failure packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} diff --git a/E2Manager/asn1codec/src/tests/x2setup_request_wrapper_test.c b/E2Manager/asn1codec/src/tests/x2setup_request_wrapper_test.c new file mode 100644 index 0000000..ca647c0 --- /dev/null +++ b/E2Manager/asn1codec/src/tests/x2setup_request_wrapper_test.c @@ -0,0 +1,164 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include +#include +#include +#include + +void test_build_pack_x2setup_request(); +void test_build_pack_endc_x2setup_request(); +void test_unpack(void); + +int +main(int argc, char* argv[]) +{ + test_build_pack_x2setup_request(); + test_build_pack_endc_x2setup_request(); + test_unpack(); + exit(0); +} + +void test_build_pack_x2setup_request(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + uint8_t pLMN_Identity[] = {0xa,0xb,0xc}; + uint8_t ric_flag[] = {0xa,0xd,0xe}; + uint8_t eNBId[] = {0xab, 0xcd, 0x7/*0xf,0x7,0x2*/}; + bool result; + E2AP_PDU_t *pdu; + unsigned int bitqty = 21; + /**********************************************************************************/ + + printf("\n----- ATS_ALIGNED_BASIC_PER ----\n"); + packed_buf_size = 4096; + result = build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER); + if (!result) { + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: 21%s\n", __func__, responseErrorBuf); + + printf("\n----- ATS_UNALIGNED_BASIC_PER ----\n"); + packed_buf_size = 4096; + result = build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf,ATS_UNALIGNED_BASIC_PER); + if (!result) { + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_UNALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: 21%s\n", __func__, responseErrorBuf); +} + +void test_build_pack_endc_x2setup_request(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + uint8_t pLMN_Identity[] = {0xa,0xb,0xc}; + uint8_t ric_flag[] = {0xa,0xd,0xe}; + uint8_t eNBId[] = {0xf,0x7,0x2}; + unsigned int bitqty=18; + + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_x2setup_request( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#%s. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_unpack(void) +{ + return; // No need for now. + char responseErrorBuf[8192]; + printf("\n--------------- case #1\n\n"); + { + uint8_t buf[] = {0x00,0x24,0x00,0x32,0x00,0x00,0x01,0x00,0xf4,0x00,0x2b,0x00,0x00,0x02,0x00,0x15,0x00,0x09,0x00,0xbb,0xbc,0xcc,0x80,0x03,0xab,0xcd,0x80,0x00,0xfa,0x00,0x17,0x00,0x00,0x01,0xf7,0x00,0xbb,0xbc,0xcc,0xab,0xcd,0x80,0x00,0x00,0x00,0xbb,0xbc,0xcc,0x00,0x00,0x00,0x00,0x00,0x01}; + E2AP_PDU_t *pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, sizeof(buf), buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + } + + printf("\n--------------- case #2\n\n"); + { + uint8_t buf[] = {0x00,0x06,0x00,0x2b,0x00,0x00,0x02,0x00,0x15,0x00,0x09,0x00,0x0a,0x0b,0x0c,0x81,0x03,0xab,0xcd,0xc0,0x00,0x14,0x00,0x17,0x00,0x00,0x01,0xf7,0x00,0x0a,0x0b,0x0c,0xab,0xcd,0xc0,0x00,0x00,0x00,0x0a,0x0d,0x0e,0x00,0x00,0x00,0x00,0x00,0x01}; + E2AP_PDU_t *pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, sizeof(buf), buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + } +} diff --git a/E2Manager/asn1codec/src/x2setup_request_wrapper.c b/E2Manager/asn1codec/src/x2setup_request_wrapper.c new file mode 100644 index 0000000..b028e01 --- /dev/null +++ b/E2Manager/asn1codec/src/x2setup_request_wrapper.c @@ -0,0 +1,327 @@ +/* + * + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed 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. + * + */ + +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ + +// Standard Includes: ANSI C/C++, MSA, and Third-Party Libraries + +// Platform Includes: Platform specific classes, functions, and libraries + +// Local Includes: Application specific classes, functions, and libraries +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void assignPLMN_Identity (PLMN_Identity_t *pLMN_Identity, uint8_t const* pLMNId); +static void assignENB_ID(GlobalENB_ID_t *globalENB_ID,uint8_t const* eNBId, unsigned int bitqty); +static void assignServedCell_Information(ServedCell_Information_t *servedCell_Information,uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty,uint8_t const *ric_flag); + +/* + * Build and pack X2 setup request. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ + +bool +build_pack_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +) +{ + return build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty, ric_flag, + packed_buf_size, packed_buf,err_buf_size,err_buf,ATS_ALIGNED_BASIC_PER); + +} + +bool +build_pack_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax +) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + InitiatingMessage_t *initiatingMessage = calloc(1, sizeof(InitiatingMessage_t)); + X2SetupRequest_t *x2SetupRequest; + + assert(pdu != 0); + assert(initiatingMessage != 0); + + + pdu->present = E2AP_PDU_PR_initiatingMessage; + pdu->choice.initiatingMessage = initiatingMessage; + + initiatingMessage->procedureCode = ProcedureCode_id_x2Setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_X2SetupRequest; + x2SetupRequest = &initiatingMessage->value.choice.X2SetupRequest; + + X2SetupRequest_IEs_t *globalENB_ID_ie = calloc(1, sizeof(X2SetupRequest_IEs_t)); + assert(globalENB_ID_ie != 0); + ASN_SEQUENCE_ADD(&x2SetupRequest->protocolIEs, globalENB_ID_ie); + + globalENB_ID_ie->id = ProtocolIE_ID_id_GlobalENB_ID; + globalENB_ID_ie->criticality = Criticality_reject; + globalENB_ID_ie->value.present = X2SetupRequest_IEs__value_PR_GlobalENB_ID; + GlobalENB_ID_t *globalENB_ID = &globalENB_ID_ie->value.choice.GlobalENB_ID; + + assignPLMN_Identity(&globalENB_ID->pLMN_Identity, pLMN_Identity); + assignENB_ID(globalENB_ID, eNBId, bitqty); + + X2SetupRequest_IEs_t *servedCells_ie = calloc(1, sizeof(X2SetupRequest_IEs_t)); + assert(servedCells_ie != 0); + ASN_SEQUENCE_ADD(&x2SetupRequest->protocolIEs, servedCells_ie); + + servedCells_ie->id = ProtocolIE_ID_id_ServedCells; + servedCells_ie->criticality = Criticality_reject; + servedCells_ie->value.present = X2SetupRequest_IEs__value_PR_ServedCells; + + ServedCells__Member *servedCells__Member = calloc(1,sizeof(ServedCells__Member)); + assert(servedCells__Member !=0); + ASN_SEQUENCE_ADD(&servedCells_ie->value.choice.ServedCells, servedCells__Member); + + assignServedCell_Information(&servedCells__Member->servedCellInfo, pLMN_Identity,eNBId, bitqty,ric_flag); + + rc = pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,syntax); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +static void assignPLMN_Identity (PLMN_Identity_t *pLMN_Identity, uint8_t const* pLMNId) +{ + pLMN_Identity->size = pLMN_Identity_size; + pLMN_Identity->buf = calloc(1,pLMN_Identity->size); + assert(pLMN_Identity->buf != 0); + memcpy(pLMN_Identity->buf, pLMNId, pLMN_Identity->size); +} + +/* + * Calculate and assign the value of ENB_ID. + * Abort the process on allocation failure. + */ +static void assignENB_ID(GlobalENB_ID_t *globalENB_ID,uint8_t const* eNBId, unsigned int bitqty) +{ + size_t size_in_bytes = (bitqty / 8) + ((bitqty % 8) > 0); + int unused_bits = 8 - (bitqty % 8); + uint8_t *tbuf; + switch (bitqty){ + case shortMacro_eNB_ID_size: + globalENB_ID->eNB_ID.present = ENB_ID_PR_short_Macro_eNB_ID; + globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf,eNBId, size_in_bytes) ; + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case macro_eNB_ID_size: + globalENB_ID->eNB_ID.present =ENB_ID_PR_macro_eNB_ID; + globalENB_ID->eNB_ID.choice.macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case longMacro_eNB_ID_size: + globalENB_ID->eNB_ID.present =ENB_ID_PR_long_Macro_eNB_ID; + globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case home_eNB_ID_size: + globalENB_ID->eNB_ID.present = ENB_ID_PR_home_eNB_ID; + globalENB_ID->eNB_ID.choice.home_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.home_eNB_ID.bits_unused =unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.home_eNB_ID.buf = calloc(1,size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.home_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.home_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + default: + break; + } + +} + +/* + * Calculate and assign the value of ServedCell_Information. + * Abort the process on allocation failure. + */ +static void assignServedCell_Information( + ServedCell_Information_t *servedCell_Information, + uint8_t const* pLMN_Identity, + uint8_t const* eNBId, + unsigned int bitqty, + uint8_t const *ric_flag) +{ + size_t size_in_bytes = (eUTRANcellIdentifier_size / 8) + ((eUTRANcellIdentifier_size % 8) > 0); + int unused_bits = 8 - (eUTRANcellIdentifier_size % 8); + size_t bitqty_size_in_bytes = (bitqty / 8) + ((bitqty % 8) > 0); + int bitqty_unused_bits = 8 - (bitqty % 8); + + servedCell_Information->pCI = 503; + assignPLMN_Identity(&servedCell_Information->cellId.pLMN_Identity, pLMN_Identity); + + servedCell_Information->cellId.eUTRANcellIdentifier.size = size_in_bytes; + servedCell_Information->cellId.eUTRANcellIdentifier.bits_unused = unused_bits; + servedCell_Information->cellId.eUTRANcellIdentifier.buf = calloc(1,servedCell_Information->cellId.eUTRANcellIdentifier.size); + assert(servedCell_Information->cellId.eUTRANcellIdentifier.buf != 0); + memcpy(servedCell_Information->cellId.eUTRANcellIdentifier.buf, eNBId, bitqty_size_in_bytes); + if (bitqty < eUTRANcellIdentifier_size) { + servedCell_Information->cellId.eUTRANcellIdentifier.buf[bitqty_size_in_bytes - 1] <<= bitqty_unused_bits; + } else { + servedCell_Information->cellId.eUTRANcellIdentifier.buf[size_in_bytes - 1] <<= unused_bits; + } + + servedCell_Information->tAC.size = 2; + servedCell_Information->tAC.buf = calloc(1,servedCell_Information->tAC.size); + assert(servedCell_Information->tAC.buf != 0); + + + PLMN_Identity_t *broadcastPLMN_Identity = calloc(1, sizeof(PLMN_Identity_t)); + assert(broadcastPLMN_Identity != 0); + ASN_SEQUENCE_ADD(&servedCell_Information->broadcastPLMNs, broadcastPLMN_Identity); + + assignPLMN_Identity(broadcastPLMN_Identity,ric_flag); + + servedCell_Information->eUTRA_Mode_Info.present= EUTRA_Mode_Info_PR_fDD; + servedCell_Information->eUTRA_Mode_Info.choice.fDD = calloc(1, sizeof(FDD_Info_t)); + assert(servedCell_Information->eUTRA_Mode_Info.choice.fDD != 0); + servedCell_Information->eUTRA_Mode_Info.choice.fDD->uL_EARFCN = 0; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->dL_EARFCN = 0; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->uL_Transmission_Bandwidth = Transmission_Bandwidth_bw6; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->dL_Transmission_Bandwidth = Transmission_Bandwidth_bw15; +} + +/* Build and pack X2 setup request. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +) +{ + return build_pack_endc_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty, ric_flag, + packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER + ); +} + +bool +build_pack_endc_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax +) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + InitiatingMessage_t *initiatingMessage = calloc(1, sizeof(InitiatingMessage_t)); + ENDCX2SetupRequest_t *endcX2SetupRequest; + + assert(pdu != 0); + assert(initiatingMessage != 0); + + pdu->present = E2AP_PDU_PR_initiatingMessage; + pdu->choice.initiatingMessage = initiatingMessage; + + initiatingMessage->procedureCode = ProcedureCode_id_endcX2Setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_ENDCX2SetupRequest; + endcX2SetupRequest = &initiatingMessage->value.choice.ENDCX2SetupRequest; + ENDCX2SetupRequest_IEs_t *endcX2SetupRequest_IEs = calloc(1, sizeof(ENDCX2SetupRequest_IEs_t)); + assert(endcX2SetupRequest_IEs != 0); + ASN_SEQUENCE_ADD(&endcX2SetupRequest->protocolIEs, endcX2SetupRequest_IEs); + endcX2SetupRequest_IEs->id = ProtocolIE_ID_id_InitiatingNodeType_EndcX2Setup; + endcX2SetupRequest_IEs->criticality = Criticality_reject; + endcX2SetupRequest_IEs->value.present = ENDCX2SetupRequest_IEs__value_PR_InitiatingNodeType_EndcX2Setup; + endcX2SetupRequest_IEs->value.choice.InitiatingNodeType_EndcX2Setup.present = InitiatingNodeType_EndcX2Setup_PR_init_eNB; + + ProtocolIE_Container_119P85_t *enb_ENDCX2SetupReqIE_Container = calloc(1, sizeof(ProtocolIE_Container_119P85_t)); + assert(enb_ENDCX2SetupReqIE_Container != 0); + endcX2SetupRequest_IEs->value.choice.InitiatingNodeType_EndcX2Setup.choice.init_eNB = (struct ProtocolIE_Container*)enb_ENDCX2SetupReqIE_Container; + ENB_ENDCX2SetupReqIEs_t *globalENB_ID_ie = calloc(1, sizeof(ENB_ENDCX2SetupReqIEs_t)); + assert(globalENB_ID_ie != 0); + ASN_SEQUENCE_ADD(enb_ENDCX2SetupReqIE_Container,globalENB_ID_ie); + globalENB_ID_ie->id = ProtocolIE_ID_id_GlobalENB_ID; + globalENB_ID_ie->criticality = Criticality_reject; + globalENB_ID_ie->value.present = ENB_ENDCX2SetupReqIEs__value_PR_GlobalENB_ID; + + GlobalENB_ID_t *globalENB_ID = &globalENB_ID_ie->value.choice.GlobalENB_ID; + assignPLMN_Identity(&globalENB_ID->pLMN_Identity, pLMN_Identity); + assignENB_ID(globalENB_ID, eNBId, bitqty); + + + ENB_ENDCX2SetupReqIEs_t *ServedEUTRAcellsENDCX2ManagementList_ie = calloc(1, sizeof(ENB_ENDCX2SetupReqIEs_t)); + assert(ServedEUTRAcellsENDCX2ManagementList_ie != 0); + ASN_SEQUENCE_ADD(enb_ENDCX2SetupReqIE_Container, ServedEUTRAcellsENDCX2ManagementList_ie); + + ServedEUTRAcellsENDCX2ManagementList_ie->id = ProtocolIE_ID_id_ServedEUTRAcellsENDCX2ManagementList; + ServedEUTRAcellsENDCX2ManagementList_ie->criticality = Criticality_reject; + ServedEUTRAcellsENDCX2ManagementList_ie->value.present = ENB_ENDCX2SetupReqIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList; + + + ServedEUTRAcellsENDCX2ManagementList__Member *servedEUTRAcellsENDCX2ManagementList__Member = calloc(1, sizeof(ServedEUTRAcellsENDCX2ManagementList__Member)); + assert(servedEUTRAcellsENDCX2ManagementList__Member != 0); + ASN_SEQUENCE_ADD(&ServedEUTRAcellsENDCX2ManagementList_ie->value.choice.ServedEUTRAcellsENDCX2ManagementList, servedEUTRAcellsENDCX2ManagementList__Member); + + assignServedCell_Information(&servedEUTRAcellsENDCX2ManagementList__Member->servedEUTRACellInfo, pLMN_Identity, eNBId, bitqty,ric_flag); + + rc = pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf, syntax); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} diff --git a/E2Manager/configuration/configuration.go b/E2Manager/configuration/configuration.go new file mode 100644 index 0000000..5bca875 --- /dev/null +++ b/E2Manager/configuration/configuration.go @@ -0,0 +1,83 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package configuration + +import ( + "fmt" + "github.com/spf13/viper" +) + +type Configuration struct { + Logging struct { + LogLevel string + } + Http struct { + Port int + } + Rmr struct { + Port int + MaxMsgSize int + } + NotificationResponseBuffer int + BigRedButtonTimeoutSec int +} + +func ParseConfiguration() *Configuration{ + viper.SetConfigType("yaml") + viper.SetConfigName("configuration") + viper.AddConfigPath("E2Manager/resources/") + viper.AddConfigPath("./resources/") //For production + viper.AddConfigPath("../resources/") //For test under Docker + err := viper.ReadInConfig() + if err != nil { + panic(fmt.Sprintf("#http_server.parseConfiguration - failed to read configuration file: %s\n", err)) + } + + config := Configuration{} + config.fillRmrConfig(viper.Sub("rmr")) + config.fillHttpConfig(viper.Sub("http")) + config.fillLoggingConfig(viper.Sub("logging")) + + config.NotificationResponseBuffer = viper.GetInt("notificationResponseBuffer") + config.BigRedButtonTimeoutSec = viper.GetInt("bigRedButtonTimeoutSec") + + return &config +} + +func (c *Configuration)fillLoggingConfig(logConfig *viper.Viper) { + if logConfig == nil { + panic(fmt.Sprintf("#http_server.fillLoggingConfig - failed to fill logging configuration: The entry 'logging' not found\n")) + } + c.Logging.LogLevel = logConfig.GetString("logLevel") +} + +func (c *Configuration)fillHttpConfig(httpConfig *viper.Viper) { + if httpConfig == nil { + panic(fmt.Sprintf("#http_server.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n")) + } + c.Http.Port = httpConfig.GetInt("port") +} + +func (c *Configuration)fillRmrConfig(rmrConfig *viper.Viper) { + if rmrConfig == nil { + panic(fmt.Sprintf("#http_server.fillRmrConfig - failed to fill RMR configuration: The entry 'rmr' not found\n")) + } + c.Rmr.Port = rmrConfig.GetInt("port") + c.Rmr.MaxMsgSize = rmrConfig.GetInt("maxMsgSize") +} + diff --git a/E2Manager/container-tag.yaml b/E2Manager/container-tag.yaml new file mode 100644 index 0000000..707a9ab --- /dev/null +++ b/E2Manager/container-tag.yaml @@ -0,0 +1,4 @@ +# The Jenkins job requires a tag to build the Docker image. +# Global-JJB script assumes this file is in the repo root. +--- +tag: 1.0.0 diff --git a/E2Manager/controllers/controller.go b/E2Manager/controllers/controller.go new file mode 100644 index 0000000..07b3ec2 --- /dev/null +++ b/E2Manager/controllers/controller.go @@ -0,0 +1,133 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package controllers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers" + "e2mgr/rNibWriter" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/julienschmidt/httprouter" + "net/http" +) + +type Controller struct { + logger *logger.Logger + handlerProvider *providers.IncomingRequestHandlerProvider + rmrResponseChannel chan<- *models.NotificationResponse +} + +func NewController(logger *logger.Logger, rNibReaderProvider func() reader.RNibReader, rNibWriterProvider func() rNibWriter.RNibWriter, + config *configuration.Configuration, rmrResponseChannel chan<- *models.NotificationResponse) *Controller { + + provider := providers.NewIncomingRequestHandlerProvider(logger, config, rNibWriterProvider, rNibReaderProvider) + return &Controller{ + logger: logger, + handlerProvider: provider, + rmrResponseChannel: rmrResponseChannel, + } +} + +func (c *Controller)ShutdownHandler(writer http.ResponseWriter, r *http.Request, params httprouter.Params){ + + c.handleRequest(writer, &r.Header, providers.ShutdownRequest,nil, false, http.StatusNoContent) +} + +//TODO create struct to input parameters +func (c *Controller) handleRequest(writer http.ResponseWriter, header *http.Header, requestName providers.IncomingRequest, + request *models.Request, validateHeader bool, httpStatusResponse int) { + + c.logger.Infof("[Client -> E2 Manager] #controller.handleRequest - request: %v", requestName) //TODO print request if exist + + if validateHeader { + + err := c.validateRequestHeader(header) + if err != nil { + c.handleErrorResponse(err, writer) + return + } + } + + handler,err := c.handlerProvider.GetHandler(requestName) + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + err = handler.Handle(c.logger, request, c.rmrResponseChannel) + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + writer.WriteHeader(httpStatusResponse) + c.logger.Infof("[E2 Manager -> Client] #controller.handleRequest - status response: %v", httpStatusResponse) +} + +func (c *Controller) validateRequestHeader( header *http.Header) error { + + if header.Get("Content-Type") != "application/json"{ + c.logger.Errorf("#controller.validateRequestHeader - validation failure, incorrect content type") + + return e2managererrors.NewHeaderValidationError() + } + return nil +} + +func (c *Controller) handleErrorResponse(err error, writer http.ResponseWriter){ + + var errorResponseDetails models.ErrorResponse + var httpError int + + if err != nil { + switch err.(type) { + case *e2managererrors.RnibDbError: + e2Error, _ := err.(*e2managererrors.RnibDbError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Err.Code, Message: e2Error.Err.Message} + httpError = http.StatusInternalServerError + case *e2managererrors.CommandAlreadyInProgressError: + e2Error, _ := err.(*e2managererrors.CommandAlreadyInProgressError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Err.Code, Message: e2Error.Err.Message} + httpError = http.StatusMethodNotAllowed + case *e2managererrors.HeaderValidationError: + e2Error, _ := err.(*e2managererrors.HeaderValidationError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Err.Code, Message: e2Error.Err.Message} + httpError = http.StatusUnsupportedMediaType + default: + e2Error, _ := err.(*e2managererrors.InternalError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Err.Code, Message: e2Error.Err.Message} + httpError = http.StatusInternalServerError + } + } + errorResponse, _ := json.Marshal(errorResponseDetails) + + c.logger.Errorf("[E2 Manager -> Client] #controller.handleErrorResponse - http status: %d, error response: %+v", httpError, errorResponseDetails) + + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(httpError) + _, err = writer.Write(errorResponse) + + if err != nil { + c.logger.Errorf("#controller.handleErrorResponse - Cannot send response. writer:%v", writer) + } +} \ No newline at end of file diff --git a/E2Manager/controllers/controller_test.go b/E2Manager/controllers/controller_test.go new file mode 100644 index 0000000..e753bcf --- /dev/null +++ b/E2Manager/controllers/controller_test.go @@ -0,0 +1,216 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package controllers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/providers" + "e2mgr/rNibWriter" + "e2mgr/tests" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/stretchr/testify/assert" + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +func TestShutdownHandlerRnibError(t *testing.T) { + log := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + var messageChannel chan<- *models.NotificationResponse + + rnibErr := &common.RNibError{} + var nbIdentityList []*entities.NbIdentity + readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibErr) + + writer := httptest.NewRecorder() + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + controller.ShutdownHandler(writer, tests.GetHttpRequest(), nil) + + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Err.Code) +} + +func TestHeaderValidationFailed(t *testing.T) { + log := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + var messageChannel chan<- *models.NotificationResponse + + writer := httptest.NewRecorder() + + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + + header := &http.Header{} + + controller.handleRequest(writer, header, providers.ShutdownRequest, nil, true, http.StatusNoContent) + + var errorResponse = parseJsonRequest(t, writer.Body) + err := e2managererrors.NewHeaderValidationError() + + assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Err.Code) + assert.Equal(t, errorResponse.Message, err.Err.Message) +} + +func TestShutdownStatusNoContent(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + var messageChannel chan<- *models.NotificationResponse + + var rnibError common.IRNibError + nbIdentityList := []*entities.NbIdentity{} + readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibError) + + writer := httptest.NewRecorder() + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + controller.ShutdownHandler(writer, tests.GetHttpRequest(), nil) + + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) +} + +func TestHandleInternalError(t *testing.T) { + log := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + var messageChannel chan<- *models.NotificationResponse + + writer := httptest.NewRecorder() + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + err := e2managererrors.NewInternalError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Err.Code) + assert.Equal(t, errorResponse.Message, err.Err.Message) +} + +func TestHandleCommandAlreadyInProgressError(t *testing.T) { + log := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + var messageChannel chan<- *models.NotificationResponse + writer := httptest.NewRecorder() + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + err := e2managererrors.NewCommandAlreadyInProgressError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusMethodNotAllowed, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Err.Code) + assert.Equal(t, errorResponse.Message, err.Err.Message) +} + +func TestValidateHeaders(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + var messageChannel chan<- *models.NotificationResponse + + controller := NewController(log, readerProvider, writerProvider, config, messageChannel) + + header := http.Header{} + header.Set("Content-Type", "application/json") + result := controller.validateRequestHeader(&header) + + assert.Nil(t, result) +} + +func parseJsonRequest(t *testing.T, r io.Reader) models.ErrorResponse { + + var errorResponse models.ErrorResponse + body, err := ioutil.ReadAll(r) + if err != nil { + t.Errorf("Error cannot deserialize json request") + } + json.Unmarshal(body, &errorResponse) + + return errorResponse +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/E2Manager/controllers/nodeb_controller.go b/E2Manager/controllers/nodeb_controller.go new file mode 100644 index 0000000..d0448aa --- /dev/null +++ b/E2Manager/controllers/nodeb_controller.go @@ -0,0 +1,256 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package controllers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers" + "e2mgr/rNibWriter" + "e2mgr/services" + "e2mgr/sessions" + "e2mgr/utils" + "encoding/json" + "errors" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/go-ozzo/ozzo-validation" + "github.com/go-ozzo/ozzo-validation/is" + "github.com/golang/protobuf/jsonpb" + "github.com/julienschmidt/httprouter" + "net/http" + "net/http/httputil" + "strings" + "sync" + "time" +) + +const ( + parseErrorCode int = 401 + validationErrorCode int = 402 + notFoundErrorCode int = 404 + internalErrorCode int = 501 + requiredInputErrorMessage = "Mandatory fields are missing" + validationFailedMessage = "Validation failed" + parseErrorMessage = "Parse failure" + notFoundErrorMessage = "Resource not found" + internalErrorMessage = "Internal Server Error. Please try again later" + sendMessageErrorMessage = "Failed to send message. For more information please check logs" +) + +var E2Sessions = make(sessions.E2Sessions) + +var messageChannel chan *models.E2RequestMessage +var errorChannel chan error + +type NodebController struct { + rmrService *services.RmrService + Logger *logger.Logger + rnibReaderProvider func() reader.RNibReader + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, rnibReaderProvider func() reader.RNibReader, + rnibWriterProvider func() rNibWriter.RNibWriter) *NodebController { + messageChannel = make(chan *models.E2RequestMessage) + errorChannel = make(chan error) + return &NodebController{ + rmrService: rmrService, + Logger: logger, + rnibReaderProvider: rnibReaderProvider, + rnibWriterProvider: rnibWriterProvider, + } +} + + +func prettifyRequest(request *http.Request) string { + dump, _ := httputil.DumpRequest(request, true) + requestPrettyPrint := strings.Replace(string(dump), "\r\n", " ", -1) + return strings.Replace(requestPrettyPrint, "\n", "", -1) +} + +func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + startTime := time.Now() + rc.Logger.Infof("[Client -> E2 Manager] #nodeb_controller.HandleRequest - request: %v", prettifyRequest(request)) + + messageTypeParam := params.ByName("messageType") + requestHandlerProvider := providers.NewRequestHandlerProvider(rc.rnibWriterProvider) + handler, err := requestHandlerProvider.GetHandler(rc.Logger, messageTypeParam) + + if err != nil { + handleErrorResponse(rc.Logger, http.StatusNotFound, notFoundErrorCode, notFoundErrorMessage, writer, startTime) + return + } + + requestDetails, err := parseJson(rc.Logger, request) + + if err != nil { + handleErrorResponse(rc.Logger, http.StatusBadRequest, parseErrorCode, parseErrorMessage, writer, startTime) + return + } + + rc.Logger.Infof("#nodeb_controller.HandleRequest - request: %+v", requestDetails) + + if err := validateRequestDetails(rc.Logger, requestDetails); err != nil { + handleErrorResponse(rc.Logger, http.StatusBadRequest, validationErrorCode, requiredInputErrorMessage, writer, startTime) + return + } + + err = handler.PreHandle(rc.Logger, &requestDetails) + + if err != nil { + handleErrorResponse(rc.Logger, http.StatusInternalServerError, internalErrorCode, err.Error(), writer, startTime) + return + } + + rc.Logger.Infof("[E2 Manager -> Client] #nodeb_controller.HandleRequest - http status: 200") + writer.WriteHeader(http.StatusOK) + + var wg sync.WaitGroup + + go handler.CreateMessage(rc.Logger, &requestDetails, messageChannel, E2Sessions, startTime, wg) + + go rc.rmrService.SendMessage(handler.GetMessageType(), messageChannel, errorChannel, wg) + + wg.Wait() + + err = <-errorChannel + + if err != nil { + handleErrorResponse(rc.Logger, http.StatusInternalServerError, internalErrorCode, sendMessageErrorMessage, writer, startTime) + return + } + + printHandlingRequestElapsedTimeInMs(rc.Logger, startTime) +} + +func (rc NodebController) GetNodebIdList (writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + startTime := time.Now() + rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider()) + nodebIdList, rnibError := rnibReaderService.GetNodebIdList() + + if rnibError != nil { + rc.Logger.Errorf("%v", rnibError); + httpStatusCode, errorCode, errorMessage := rnibErrorToHttpError(rnibError) + handleErrorResponse(rc.Logger,httpStatusCode,errorCode,errorMessage,writer,startTime ) + return; + } + + pmList:= utils.ConvertNodebIdListToProtoMessageList(*nodebIdList) + result, err := utils.MarshalProtoMessageListToJsonArray(pmList) + + if err != nil { + rc.Logger.Errorf("%v", err); + handleErrorResponse(rc.Logger,http.StatusInternalServerError,internalErrorCode,internalErrorMessage,writer,startTime ) + return; + } + + writer.Header().Set("Content-Type", "application/json") + rc.Logger.Infof("[E2 Manager -> Client] #nodeb_controller.GetNodebIdList - response: %s", result) + writer.Write([]byte(result)) +} + +func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + startTime := time.Now() + ranName := params.ByName("ranName") + // WAS: respondingNode, rnibError := reader.GetRNibReader().GetNodeb(ranName) + rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider()); + respondingNode, rnibError := rnibReaderService.GetNodeb(ranName) + if rnibError != nil { + rc.Logger.Errorf("%v", rnibError) + httpStatusCode, errorCode, errorMessage := rnibErrorToHttpError(rnibError) + handleErrorResponse(rc.Logger, httpStatusCode, errorCode, errorMessage, writer, startTime) + return + } + + m := jsonpb.Marshaler{} + result, err := m.MarshalToString(respondingNode) + + if err != nil { + rc.Logger.Errorf("%v", err) + handleErrorResponse(rc.Logger, http.StatusInternalServerError, internalErrorCode, internalErrorMessage, writer, startTime) + return + } + + writer.Header().Set("Content-Type", "application/json") + rc.Logger.Infof("[E2 Manager -> Client] #nodeb_controller.GetNodeb - response: %s", result) + writer.Write([]byte(result)) +} + +func (rc NodebController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { + //fmt.Println("[X-APP -> Client] #HandleHealthCheckRequest - http status: 200") + writer.WriteHeader(http.StatusOK) +} + +func parseJson(logger *logger.Logger, request *http.Request) (models.RequestDetails, error) { + var requestDetails models.RequestDetails + if err := json.NewDecoder(request.Body).Decode(&requestDetails); err != nil { + logger.Errorf("#nodeb_controller.parseJson - cannot deserialize incoming request. request: %v, error: %v", request, err) + return requestDetails, err + } + return requestDetails, nil +} + +func validateRequestDetails(logger *logger.Logger, requestDetails models.RequestDetails) error { + + if requestDetails.RanPort == 0 { + logger.Errorf("#nodeb_controller.validateRequestDetails - validation failure: port cannot be zero") + return errors.New("port: cannot be blank") + } + err := validation.ValidateStruct(&requestDetails, + validation.Field(&requestDetails.RanIp, validation.Required, is.IP), + validation.Field(&requestDetails.RanName, validation.Required), + ) + if err != nil { + logger.Errorf("#nodeb_controller.validateRequestDetails - validation failure, error: %v", err) + } + + return err +} + +func handleErrorResponse(logger *logger.Logger, httpStatus int, errorCode int, errorMessage string, writer http.ResponseWriter, startTime time.Time) { + errorResponseDetails := models.ErrorResponse{errorCode, errorMessage} + errorResponse, _ := json.Marshal(errorResponseDetails) + printHandlingRequestElapsedTimeInMs(logger, startTime) + logger.Infof("[E2 Manager -> Client] #nodeb_controller.handleErrorResponse - http status: %d, error response: %+v", httpStatus, errorResponseDetails) + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(httpStatus) + _, err := writer.Write(errorResponse) + + if err != nil { + logger.Errorf("#nodeb_controller.handleErrorResponse - Cannot send response. writer:%v", writer) + } +} + +func printHandlingRequestElapsedTimeInMs(logger *logger.Logger, startTime time.Time) { + logger.Infof("Summary: #nodeb_controller.printElapsedTimeInMs - Elapsed time for handling request from client to E2 termination: %f ms", + float64(time.Since(startTime))/float64(time.Millisecond)) +} + +func rnibErrorToHttpError(rnibError common.IRNibError) (int, int, string) { + switch rnibError.GetCode() { + case common.RESOURCE_NOT_FOUND: + return http.StatusNotFound, notFoundErrorCode, notFoundErrorMessage + case common.INTERNAL_ERROR: + return http.StatusInternalServerError, internalErrorCode, internalErrorMessage + case common.VALIDATION_ERROR: + return http.StatusBadRequest, validationErrorCode, validationFailedMessage + default: + return http.StatusInternalServerError, internalErrorCode, internalErrorMessage + } +} diff --git a/E2Manager/controllers/nodeb_controller_test.go b/E2Manager/controllers/nodeb_controller_test.go new file mode 100644 index 0000000..9497ff8 --- /dev/null +++ b/E2Manager/controllers/nodeb_controller_test.go @@ -0,0 +1,378 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package controllers + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/julienschmidt/httprouter" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +const x2SetupMessageType = "x2-setup" + +func TestNewRequestController(t *testing.T) { + rnibReaderProvider := func() reader.RNibReader { + return &mocks.RnibReaderMock{} + } + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + assert.NotNil(t, NewNodebController(&logger.Logger{}, &services.RmrService{}, rnibReaderProvider, rnibWriterProvider)) +} + +func TestHandleRequestSuccess(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#nodeb_controller_test.TestHandleRequestSuccess - failed to initialize logger, error: %s", err) + } + + rmrMessengerMock :=&mocks.RmrMessengerMock{} + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName", &tests.DummyPayload, &tests.DummyXAction) + + rmrMessengerMock.On("SendMsg", + mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), + tests.MaxMsgSize).Return(mbuf, nil) + + writer := httptest.NewRecorder() + + handleRequest(writer, log, rmrMessengerMock, tests.GetHttpRequest(), x2SetupMessageType) + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) +} + +func TestHandleRequestFailure_InvalidRequestDetails(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#nodeb_controller_test.TestHandleRequestFailure - failed to initialize logger, error: %s", err) + } + + rmrMessengerMock := &mocks.RmrMessengerMock{} + var mbuf *rmrCgo.MBuf + + rmrMessengerMock.On("SendMsg", + mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), + tests.MaxMsgSize).Return(mbuf, errors.New("test failure")) + + writer := httptest.NewRecorder() + + handleRequest(writer, log, rmrMessengerMock, tests.GetInvalidRequestDetails(), x2SetupMessageType) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) +} + +func TestHandleRequestFailure_InvalidMessageType(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#nodeb_controller_test.TestHandleRequestFailure - failed to initialize logger, error: %s", err) + } + + rmrMessengerMock := &mocks.RmrMessengerMock{} + var mbuf *rmrCgo.MBuf + + rmrMessengerMock.On("SendMsg", + mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), + tests.MaxMsgSize).Return(mbuf, errors.New("test failure")) + + writer := httptest.NewRecorder() + + handleRequest(writer, log, rmrMessengerMock, tests.GetInvalidMessageType(), "dummy") + assert.Equal(t, http.StatusNotFound, writer.Result().StatusCode) +} + +func TestHandleHealthCheckRequest(t *testing.T) { + rc := NewNodebController(nil, nil, nil, nil) + writer := httptest.NewRecorder() + rc.HandleHealthCheckRequest(writer, nil, nil) + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) +} + +func handleRequest(writer *httptest.ResponseRecorder, log *logger.Logger, rmrMessengerMock *mocks.RmrMessengerMock, + request *http.Request, messageType string) { + rmrService := getRmrService(rmrMessengerMock, log) + params := []httprouter.Param{{Key: "messageType", Value: messageType}} + + var nodebInfo *entities.NodebInfo + var nbIdentity *entities.NbIdentity + + rnibWriterMock := mocks.RnibWriterMock{} + rnibWriterMock.On("SaveNodeb", + mock.AnythingOfType(fmt.Sprintf("%T", nbIdentity)), + mock.AnythingOfType(fmt.Sprintf("%T", nodebInfo))).Return(nil) + + rnibReaderProvider := func() reader.RNibReader { + return &mocks.RnibReaderMock{} + } + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &rnibWriterMock + } + + NewNodebController(log, rmrService, rnibReaderProvider, rnibWriterProvider).HandleRequest(writer, request, params) +} + +func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *services.RmrService { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rnibReaderProvider := func() reader.RNibReader { + return &mocks.RnibReaderMock{} + } + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + nManager := managers.NewNotificationManager(rnibReaderProvider, rnibWriterProvider) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + messageChannel := make(chan *models.NotificationResponse) + return services.NewRmrService(services.NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, E2Sessions, nManager, messageChannel) +} + +func executeGetNodeb(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) { + req, _ := http.NewRequest("GET", "/nodeb", nil) + + params := []httprouter.Param{{Key: "ranName", Value: "testNode"}} + + NewNodebController(logger, nil, rnibReaderProvider, nil).GetNodeb(writer, req, params) +} + +func TestNodebController_GetNodeb_Success(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + + if err != nil { + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_Success - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + + var rnibError common.IRNibError + rnibReaderMock.On("GetNodeb", "testNode").Return(&entities.NodebInfo{}, rnibError) + + rnibReaderProvider := func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodeb(log, writer, rnibReaderProvider) + + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) +} + +func TestNodebController_GetNodeb_NotFound(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + + if err != nil { + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_NotFound - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + rnibError := common.NewResourceNotFoundError(errors.Errorf("#reader.GetNodeb - responding node %s not found", "testNode")) + var nodebInfo *entities.NodebInfo + rnibReaderMock.On("GetNodeb", "testNode").Return(nodebInfo, rnibError) + + rnibReaderProvider := func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodeb(log, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusNotFound) +} + +func TestNodebController_GetNodeb_InternalError(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + + if err != nil { + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodeb_InternalError - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + + rnibError := common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error")) + var nodebInfo *entities.NodebInfo + rnibReaderMock.On("GetNodeb", "testNode").Return(nodebInfo, rnibError) + + rnibReaderProvider := func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodeb(log, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusInternalServerError) +} + +func executeGetNodebIdList(logger *logger.Logger, writer *httptest.ResponseRecorder, rnibReaderProvider func() reader.RNibReader) { + req, _ := http.NewRequest("GET", "/nodeb-ids", nil) + NewNodebController(logger, nil, rnibReaderProvider, nil ).GetNodebIdList(writer,req,nil) +} + +func TestNodebController_GetNodebIdList_Success(t *testing.T) { + logger, err := logger.InitLogger(logger.InfoLevel) + + if err!=nil{ + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + var rnibError common.IRNibError + + enbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test1", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId1",NbId: "nbId1"}}} + gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}} + + rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) + rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + + + rnibReaderProvider:= func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodebIdList(logger, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) + bodyBytes, err := ioutil.ReadAll(writer.Body) + assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]",string(bodyBytes) ) +} + +func TestNodebController_GetNodebIdList_EmptyList(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + + if err!=nil{ + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_EmptyList - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + + var rnibError common.IRNibError + enbList := []*entities.NbIdentity{} + gnbList := []*entities.NbIdentity{} + + rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) + rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + + + rnibReaderProvider:= func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodebIdList(log, writer, rnibReaderProvider) + + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) + bodyBytes, err := ioutil.ReadAll(writer.Body) + assert.Equal(t, "[]", string(bodyBytes)) +} + +func TestNodebController_GetNodebIdList_InternalError(t *testing.T) { + logger, err := logger.InitLogger(logger.InfoLevel) + + if err != nil { + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_InternalError - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + + rnibError := common.NewInternalError(errors.New("#reader.GetEnbIdList - Internal Error")) + var enbList *[]*entities.NbIdentity + rnibReaderMock.On("GetListEnbIds").Return(enbList, rnibError) + + rnibReaderProvider := func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodebIdList(logger, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusInternalServerError) +} + +func TestNodebController_GetNodebIdList_Success_One(t *testing.T) { + logger, err := logger.InitLogger(logger.InfoLevel) + + if err!=nil{ + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + var rnibError common.IRNibError + + enbList := []*entities.NbIdentity{} + gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}} + + rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) + rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + + + rnibReaderProvider:= func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodebIdList(logger, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) + bodyBytes, err := ioutil.ReadAll(writer.Body) + assert.Equal(t, "[{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]",string(bodyBytes) ) +} + +func TestNodebController_GetNodebIdList_Success_Many(t *testing.T) { + logger, err := logger.InitLogger(logger.InfoLevel) + + if err!=nil{ + t.Errorf("#nodeb_controller_test.TestNodebController_GetNodebIdList_Success - failed to initialize logger, error: %s", err) + } + + writer := httptest.NewRecorder() + + rnibReaderMock := mocks.RnibReaderMock{} + var rnibError common.IRNibError + + enbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test1", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId1",NbId: "nbId1"}}} + gnbList := []*entities.NbIdentity{&entities.NbIdentity{InventoryName:"test2", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId2",NbId: "nbId2"}}, {InventoryName:"test3", GlobalNbId: &entities.GlobalNbId{PlmnId:"plmnId3",NbId: "nbId3"}}} + + rnibReaderMock.On("GetListEnbIds").Return(&enbList, rnibError) + rnibReaderMock.On("GetListGnbIds").Return(&gnbList, rnibError) + + + rnibReaderProvider:= func() reader.RNibReader { + return &rnibReaderMock + } + + executeGetNodebIdList(logger, writer, rnibReaderProvider) + assert.Equal(t, writer.Result().StatusCode, http.StatusOK) + bodyBytes, err := ioutil.ReadAll(writer.Body) + assert.Equal(t, "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}},{\"inventoryName\":\"test3\",\"globalNbId\":{\"plmnId\":\"plmnId3\",\"nbId\":\"nbId3\"}}]",string(bodyBytes) ) +} \ No newline at end of file diff --git a/E2Manager/cp.out b/E2Manager/cp.out new file mode 100644 index 0000000..aa52f57 --- /dev/null +++ b/E2Manager/cp.out @@ -0,0 +1,601 @@ +mode: set +e2mgr/controllers/controller.go:23.107,31.2 2 1 +e2mgr/controllers/controller.go:33.107,36.2 1 1 +e2mgr/controllers/controller.go:40.72,44.20 2 1 +e2mgr/controllers/controller.go:53.2,54.16 2 1 +e2mgr/controllers/controller.go:59.2,61.16 2 1 +e2mgr/controllers/controller.go:66.2,67.110 2 1 +e2mgr/controllers/controller.go:44.20,47.17 2 1 +e2mgr/controllers/controller.go:47.17,50.4 2 1 +e2mgr/controllers/controller.go:54.16,57.3 2 0 +e2mgr/controllers/controller.go:61.16,64.3 2 1 +e2mgr/controllers/controller.go:70.72,72.53 1 1 +e2mgr/controllers/controller.go:77.2,77.12 1 1 +e2mgr/controllers/controller.go:72.53,76.3 2 1 +e2mgr/controllers/controller.go:80.80,85.16 3 1 +e2mgr/controllers/controller.go:105.2,113.16 6 1 +e2mgr/controllers/controller.go:85.16,86.21 1 1 +e2mgr/controllers/controller.go:87.37,90.46 3 1 +e2mgr/controllers/controller.go:91.55,94.43 3 1 +e2mgr/controllers/controller.go:95.47,98.47 3 1 +e2mgr/controllers/controller.go:99.11,102.46 3 1 +e2mgr/controllers/controller.go:113.16,115.3 1 0 +e2mgr/controllers/nodeb_controller.go:69.68,78.2 3 1 +e2mgr/controllers/nodeb_controller.go:81.52,85.2 3 1 +e2mgr/controllers/nodeb_controller.go:87.118,95.16 6 1 +e2mgr/controllers/nodeb_controller.go:100.2,102.16 2 1 +e2mgr/controllers/nodeb_controller.go:107.2,109.74 2 1 +e2mgr/controllers/nodeb_controller.go:114.2,116.16 2 1 +e2mgr/controllers/nodeb_controller.go:121.2,134.16 8 1 +e2mgr/controllers/nodeb_controller.go:139.2,139.59 1 1 +e2mgr/controllers/nodeb_controller.go:95.16,98.3 2 1 +e2mgr/controllers/nodeb_controller.go:102.16,105.3 2 0 +e2mgr/controllers/nodeb_controller.go:109.74,112.3 2 1 +e2mgr/controllers/nodeb_controller.go:116.16,119.3 2 0 +e2mgr/controllers/nodeb_controller.go:134.16,137.3 2 0 +e2mgr/controllers/nodeb_controller.go:142.120,147.22 4 1 +e2mgr/controllers/nodeb_controller.go:154.2,157.16 3 1 +e2mgr/controllers/nodeb_controller.go:163.2,165.30 3 1 +e2mgr/controllers/nodeb_controller.go:147.22,152.3 4 1 +e2mgr/controllers/nodeb_controller.go:157.16,161.3 3 0 +e2mgr/controllers/nodeb_controller.go:168.113,174.22 5 1 +e2mgr/controllers/nodeb_controller.go:181.2,184.16 3 1 +e2mgr/controllers/nodeb_controller.go:190.2,192.30 3 1 +e2mgr/controllers/nodeb_controller.go:174.22,179.3 4 1 +e2mgr/controllers/nodeb_controller.go:184.16,188.3 3 0 +e2mgr/controllers/nodeb_controller.go:195.129,198.2 1 1 +e2mgr/controllers/nodeb_controller.go:200.93,202.78 2 1 +e2mgr/controllers/nodeb_controller.go:206.2,206.28 1 1 +e2mgr/controllers/nodeb_controller.go:202.78,205.3 2 0 +e2mgr/controllers/nodeb_controller.go:209.96,211.33 1 1 +e2mgr/controllers/nodeb_controller.go:215.2,219.16 2 1 +e2mgr/controllers/nodeb_controller.go:223.2,223.12 1 1 +e2mgr/controllers/nodeb_controller.go:211.33,214.3 2 0 +e2mgr/controllers/nodeb_controller.go:219.16,221.3 1 1 +e2mgr/controllers/nodeb_controller.go:226.150,235.16 8 1 +e2mgr/controllers/nodeb_controller.go:235.16,237.3 1 0 +e2mgr/controllers/nodeb_controller.go:240.86,243.2 1 1 +e2mgr/controllers/nodeb_controller.go:245.75,246.29 1 1 +e2mgr/controllers/nodeb_controller.go:247.33,248.70 1 1 +e2mgr/controllers/nodeb_controller.go:249.29,250.81 1 1 +e2mgr/controllers/nodeb_controller.go:251.31,252.77 1 0 +e2mgr/controllers/nodeb_controller.go:253.10,254.81 1 0 +e2mgr/logger/logger.go:71.58,72.85 1 1 +e2mgr/logger/logger.go:75.2,75.27 1 1 +e2mgr/logger/logger.go:72.85,74.3 1 1 +e2mgr/logger/logger.go:78.54,81.19 3 1 +e2mgr/logger/logger.go:99.2,99.16 1 1 +e2mgr/logger/logger.go:102.2,102.36 1 1 +e2mgr/logger/logger.go:82.18,83.54 1 1 +e2mgr/logger/logger.go:84.17,85.53 1 1 +e2mgr/logger/logger.go:86.17,87.53 1 0 +e2mgr/logger/logger.go:88.18,89.54 1 0 +e2mgr/logger/logger.go:90.19,91.55 1 0 +e2mgr/logger/logger.go:92.18,93.54 1 0 +e2mgr/logger/logger.go:94.18,95.54 1 1 +e2mgr/logger/logger.go:96.10,97.58 1 1 +e2mgr/logger/logger.go:99.16,101.3 1 1 +e2mgr/logger/logger.go:105.29,108.2 2 1 +e2mgr/logger/logger.go:110.60,111.21 1 1 +e2mgr/logger/logger.go:111.21,114.3 2 1 +e2mgr/logger/logger.go:117.61,118.21 1 1 +e2mgr/logger/logger.go:118.21,121.3 2 1 +e2mgr/logger/logger.go:124.61,127.2 2 1 +e2mgr/logger/logger.go:129.60,132.2 2 0 +e2mgr/logger/logger.go:134.54,138.2 3 1 +e2mgr/logger/logger.go:140.34,142.2 1 1 +e2mgr/logger/logger.go:144.35,146.2 1 1 +e2mgr/logger/logger.go:148.62,151.2 2 1 +e2mgr/logger/logger.go:153.62,173.2 2 1 +e2mgr/logger/logger.go:175.92,177.2 1 1 +e2mgr/logger/logger.go:179.84,183.2 3 1 +e2mgr/main/http_server.go:40.13,44.16 4 0 +e2mgr/main/http_server.go:48.2,61.59 13 0 +e2mgr/main/http_server.go:44.16,47.3 2 0 +e2mgr/main/http_server.go:65.133,72.2 4 0 +e2mgr/main/http_server.go:74.163,87.58 10 0 +e2mgr/main/http_server.go:87.58,89.3 1 0 +e2mgr/models/notification_response.go:14.86,16.2 1 0 +e2mgr/models/e2_request_message.go:33.59,35.2 1 1 +e2mgr/models/e2_request_message.go:37.65,39.2 1 1 +e2mgr/models/e2_request_message.go:41.128,43.2 1 1 +e2mgr/models/e2_request_message.go:45.90,52.2 4 1 +e2mgr/handlers/endc_setup_response_notification_handler.go:34.91,40.16 3 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:44.2,45.8 2 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:40.16,42.3 1 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:45.8,47.17 1 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:72.3,73.44 2 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:47.17,62.87 12 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:62.87,64.5 1 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:64.10,66.30 2 0 +e2mgr/handlers/endc_setup_response_notification_handler.go:66.30,68.6 1 0 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:32.94,35.54 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:68.2,68.27 1 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:35.54,38.124 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:38.124,40.82 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:40.82,43.72 3 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:43.72,44.38 1 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:44.38,45.50 1 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:46.53,49.22 3 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:52.58,53.135 1 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:54.70,56.66 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:49.22,51.9 1 0 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:56.66,58.9 1 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:58.14,60.9 1 0 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:71.196,73.16 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:77.2,79.50 2 1 +e2mgr/handlers/endc_x2setupFailureResponseToProtobuf.go:73.16,75.3 1 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:33.91,38.16 3 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:42.2,44.8 2 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:38.16,40.3 1 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:44.8,45.17 1 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:69.3,70.44 2 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:45.17,60.87 12 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:60.87,62.5 1 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:62.10,64.30 2 0 +e2mgr/handlers/x2apSetup_response_notification_handler.go:64.30,66.6 1 0 +e2mgr/handlers/delete_all_request_handler.go:41.68,47.2 1 1 +e2mgr/handlers/delete_all_request_handler.go:49.158,52.16 2 1 +e2mgr/handlers/delete_all_request_handler.go:56.2,56.26 1 1 +e2mgr/handlers/delete_all_request_handler.go:61.2,68.16 6 1 +e2mgr/handlers/delete_all_request_handler.go:72.2,72.12 1 1 +e2mgr/handlers/delete_all_request_handler.go:52.16,54.3 1 1 +e2mgr/handlers/delete_all_request_handler.go:56.26,58.3 1 1 +e2mgr/handlers/delete_all_request_handler.go:68.16,70.3 1 0 +e2mgr/handlers/delete_all_request_handler.go:75.116,78.16 2 1 +e2mgr/handlers/delete_all_request_handler.go:83.2,83.30 1 1 +e2mgr/handlers/delete_all_request_handler.go:87.2,87.42 1 1 +e2mgr/handlers/delete_all_request_handler.go:105.2,106.18 2 1 +e2mgr/handlers/delete_all_request_handler.go:78.16,81.3 2 1 +e2mgr/handlers/delete_all_request_handler.go:83.30,85.3 1 1 +e2mgr/handlers/delete_all_request_handler.go:87.42,91.17 2 1 +e2mgr/handlers/delete_all_request_handler.go:97.3,97.20 1 1 +e2mgr/handlers/delete_all_request_handler.go:102.3,102.55 1 1 +e2mgr/handlers/delete_all_request_handler.go:91.17,94.12 2 1 +e2mgr/handlers/delete_all_request_handler.go:97.20,100.12 2 1 +e2mgr/handlers/delete_all_request_handler.go:109.142,112.18 2 1 +e2mgr/handlers/delete_all_request_handler.go:116.2,120.16 3 1 +e2mgr/handlers/delete_all_request_handler.go:126.2,126.27 1 1 +e2mgr/handlers/delete_all_request_handler.go:112.18,114.3 1 1 +e2mgr/handlers/delete_all_request_handler.go:120.16,124.3 2 1 +e2mgr/handlers/delete_all_request_handler.go:126.27,129.3 1 0 +e2mgr/handlers/delete_all_request_handler.go:132.146,134.65 1 1 +e2mgr/handlers/delete_all_request_handler.go:138.2,138.70 1 1 +e2mgr/handlers/delete_all_request_handler.go:143.2,147.16 3 1 +e2mgr/handlers/delete_all_request_handler.go:153.2,153.137 1 1 +e2mgr/handlers/delete_all_request_handler.go:134.65,136.3 1 1 +e2mgr/handlers/delete_all_request_handler.go:138.70,141.3 2 0 +e2mgr/handlers/delete_all_request_handler.go:147.16,151.3 2 1 +e2mgr/handlers/endc_setup_request_handler.go:36.107,40.2 1 1 +e2mgr/handlers/endc_setup_request_handler.go:42.111,46.20 3 0 +e2mgr/handlers/endc_setup_request_handler.go:52.2,52.16 1 0 +e2mgr/handlers/endc_setup_request_handler.go:46.20,48.3 1 0 +e2mgr/handlers/endc_setup_request_handler.go:48.8,50.3 1 0 +e2mgr/handlers/endc_setup_request_handler.go:55.226,60.16 3 1 +e2mgr/handlers/endc_setup_request_handler.go:71.2,71.11 1 1 +e2mgr/handlers/endc_setup_request_handler.go:60.16,62.3 1 0 +e2mgr/handlers/endc_setup_request_handler.go:62.8,69.3 5 1 +e2mgr/handlers/endc_setup_request_handler.go:74.53,76.2 1 0 +e2mgr/handlers/setup_response_notification_handler.go:33.91,36.16 2 1 +e2mgr/handlers/setup_response_notification_handler.go:40.2,42.8 3 1 +e2mgr/handlers/setup_response_notification_handler.go:46.2,46.136 1 1 +e2mgr/handlers/setup_response_notification_handler.go:36.16,38.3 1 1 +e2mgr/handlers/setup_response_notification_handler.go:42.8,45.3 2 0 +e2mgr/handlers/setup_response_notification_handler.go:49.104,51.2 1 1 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:32.91,37.16 3 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:41.2,42.8 2 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:37.16,39.3 1 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:42.8,43.29 1 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:64.3,65.44 2 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:43.29,55.87 9 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:55.87,57.5 1 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:57.10,59.30 2 0 +e2mgr/handlers/x2Setup_failure_response_notification_handler.go:59.30,61.6 1 0 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:36.78,37.25 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:51.2,51.12 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:38.31,40.130 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:41.28,43.131 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:44.27,46.113 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:47.23,49.128 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:54.114,57.37 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:63.2,63.41 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:71.2,71.44 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:79.2,79.171 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:98.2,98.22 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:57.37,61.3 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:63.41,64.22 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:67.3,67.93 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:64.22,66.4 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:71.44,72.22 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:75.3,75.93 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:72.22,74.4 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:79.171,80.22 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:83.3,87.91 5 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:95.3,95.67 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:80.22,82.4 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:87.91,94.4 4 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:102.90,105.54 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:138.2,138.27 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:105.54,108.120 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:108.120,110.74 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:110.74,113.64 3 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:113.64,114.34 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:114.34,115.46 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:116.49,119.22 3 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:122.54,123.131 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:124.66,126.66 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:119.22,121.9 1 0 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:126.66,128.9 1 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:128.14,130.9 1 0 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:141.192,143.16 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:147.2,149.46 2 1 +e2mgr/handlers/x2setupFailureResponseToProtobuf.go:143.16,145.3 1 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:33.91,38.16 3 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:42.2,43.8 2 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:38.16,40.3 1 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:43.8,44.29 1 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:65.3,66.44 2 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:44.29,56.87 9 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:56.87,58.5 1 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:58.10,60.30 2 0 +e2mgr/handlers/endc_x2Setup_failure_response_notification_handler.go:60.30,62.6 1 0 +e2mgr/handlers/ric_enb_load_information_notification_handler.go:13.91,17.16 2 0 +e2mgr/handlers/ric_enb_load_information_notification_handler.go:21.2,22.151 2 0 +e2mgr/handlers/ric_enb_load_information_notification_handler.go:17.16,19.3 1 0 +e2mgr/handlers/ranLostConnectionHandler.go:36.153,41.2 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:43.91,49.86 4 1 +e2mgr/handlers/ranLostConnectionHandler.go:63.2,65.8 3 1 +e2mgr/handlers/ranLostConnectionHandler.go:49.86,51.3 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:51.8,55.83 4 1 +e2mgr/handlers/ranLostConnectionHandler.go:55.83,57.4 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:57.9,61.4 2 1 +e2mgr/handlers/ranLostConnectionHandler.go:65.8,68.3 2 1 +e2mgr/handlers/ranLostConnectionHandler.go:72.70,73.28 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:74.131,75.63 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:76.46,77.153 1 1 +e2mgr/handlers/ranLostConnectionHandler.go:78.10,79.60 1 1 +e2mgr/handlers/setup_request_handler.go:58.99,62.2 1 1 +e2mgr/handlers/setup_request_handler.go:64.107,68.20 3 0 +e2mgr/handlers/setup_request_handler.go:74.2,74.16 1 0 +e2mgr/handlers/setup_request_handler.go:68.20,70.3 1 0 +e2mgr/handlers/setup_request_handler.go:70.8,72.3 1 0 +e2mgr/handlers/setup_request_handler.go:77.222,82.16 3 1 +e2mgr/handlers/setup_request_handler.go:93.2,93.11 1 1 +e2mgr/handlers/setup_request_handler.go:82.16,84.3 1 0 +e2mgr/handlers/setup_request_handler.go:84.8,91.3 5 1 +e2mgr/handlers/setup_request_handler.go:96.59,103.12 3 0 +e2mgr/handlers/setup_request_handler.go:108.2,108.19 1 0 +e2mgr/handlers/setup_request_handler.go:111.2,111.53 1 0 +e2mgr/handlers/setup_request_handler.go:103.12,106.3 1 0 +e2mgr/handlers/setup_request_handler.go:108.19,110.3 1 0 +e2mgr/handlers/setup_request_handler.go:118.37,119.91 1 1 +e2mgr/handlers/setup_request_handler.go:123.2,123.21 1 1 +e2mgr/handlers/setup_request_handler.go:127.2,127.20 1 1 +e2mgr/handlers/setup_request_handler.go:131.2,131.134 1 1 +e2mgr/handlers/setup_request_handler.go:135.2,135.12 1 1 +e2mgr/handlers/setup_request_handler.go:119.91,121.3 1 1 +e2mgr/handlers/setup_request_handler.go:123.21,125.3 1 1 +e2mgr/handlers/setup_request_handler.go:127.20,129.3 1 1 +e2mgr/handlers/setup_request_handler.go:131.134,133.3 1 1 +e2mgr/handlers/setup_request_handler.go:139.49,141.2 1 0 +e2mgr/handlers/setup_request_handler.go:143.13,147.42 2 1 +e2mgr/handlers/setup_request_handler.go:147.42,148.13 1 0 +e2mgr/handlers/x2enb_configuration_update_handler.go:36.54,43.16 6 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:68.2,68.230 1 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:43.16,45.12 2 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:53.3,53.94 1 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:45.12,50.4 4 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:50.9,52.4 1 0 +e2mgr/handlers/x2enb_configuration_update_handler.go:54.8,59.13 4 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:59.13,64.4 4 1 +e2mgr/handlers/x2enb_configuration_update_handler.go:64.9,66.4 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:45.69,48.23 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:59.2,59.47 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:49.32,50.116 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:51.31,52.114 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:53.38,54.121 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:55.37,56.120 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:62.63,65.16 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:96.2,96.21 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:65.16,72.45 6 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:72.45,75.40 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:75.40,76.42 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:77.63,79.60 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:82.6,82.60 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:85.82,85.82 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:87.68,87.68 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:89.81,89.81 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:79.60,81.7 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:82.60,84.7 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:99.90,107.2 5 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:109.121,116.2 4 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:118.148,125.2 4 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:127.63,130.16 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:154.2,154.21 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:130.16,138.45 6 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:138.45,141.40 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:141.40,142.42 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:143.78,144.167 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:145.63,146.104 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:147.87,148.194 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:158.127,160.36 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:168.2,168.133 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:161.40,163.154 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:164.42,166.155 2 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:171.122,174.99 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:193.2,193.28 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:174.99,177.55 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:177.55,183.18 4 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:186.4,189.58 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:183.18,185.5 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:196.93,204.40 6 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:208.2,208.27 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:204.40,206.3 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:210.123,212.45 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:265.2,265.12 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:212.45,215.39 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:215.39,216.41 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:217.83,219.84 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:220.80,222.59 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:223.84,225.19 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:228.5,228.64 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:229.67,231.105 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:232.92,234.136 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:241.78,243.88 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:250.86,252.97 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:253.79,255.77 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:256.93,256.93 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:225.19,227.6 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:234.136,237.69 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:237.69,239.7 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:243.88,246.55 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:246.55,248.7 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:268.126,271.131 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:305.2,305.24 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:271.131,274.54 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:274.54,286.46 7 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:301.4,301.49 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:286.46,289.84 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:289.84,290.64 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:291.65,293.99 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:294.77,296.45 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:308.89,311.102 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:362.2,362.25 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:311.102,314.52 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:314.52,324.127 6 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:332.4,332.57 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:347.4,348.18 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:351.4,353.160 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:357.4,357.53 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:324.127,327.55 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:327.55,329.6 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:333.34,334.142 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:339.34,340.142 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:334.142,336.6 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:336.11,338.6 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:340.142,342.6 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:342.11,344.6 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:348.18,350.5 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:353.160,355.5 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:365.66,368.98 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:378.2,378.12 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:368.98,371.49 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:371.49,375.4 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:383.96,388.52 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:427.2,427.30 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:388.52,391.115 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:391.115,393.76 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:393.76,396.66 3 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:396.66,397.46 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:398.56,406.28 7 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:408.55,410.21 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:413.7,413.36 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:414.57,415.114 1 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:416.66,416.66 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:418.50,418.50 0 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:410.21,412.8 1 0 +e2mgr/handlers/x2setupResponseToProtobuf.go:430.198,432.16 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:436.2,437.39 2 1 +e2mgr/handlers/x2setupResponseToProtobuf.go:432.16,434.3 1 0 +e2mgr/handlers/endc_configuration_update_handler.go:36.54,43.16 6 1 +e2mgr/handlers/endc_configuration_update_handler.go:67.2,67.230 1 1 +e2mgr/handlers/endc_configuration_update_handler.go:43.16,45.13 2 1 +e2mgr/handlers/endc_configuration_update_handler.go:53.3,53.93 1 1 +e2mgr/handlers/endc_configuration_update_handler.go:45.13,50.4 4 1 +e2mgr/handlers/endc_configuration_update_handler.go:50.9,52.4 1 0 +e2mgr/handlers/endc_configuration_update_handler.go:54.8,58.13 4 0 +e2mgr/handlers/endc_configuration_update_handler.go:58.13,63.4 4 0 +e2mgr/handlers/endc_configuration_update_handler.go:63.9,65.4 1 0 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:32.221,39.96 4 1 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:43.2,43.27 1 1 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:52.2,52.39 1 1 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:39.96,41.3 1 1 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:43.27,46.119 3 0 +e2mgr/handlers/endc_x2apSetupRequest_asn1_packer.go:46.119,49.4 2 0 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:36.158,39.16 2 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:43.2,46.132 3 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:50.2,50.27 1 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:55.2,55.17 1 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:39.16,41.3 1 0 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:46.132,48.3 1 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:50.27,53.3 2 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:58.175,60.16 2 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:64.2,67.27 3 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:73.2,73.62 1 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:60.16,62.3 1 1 +e2mgr/handlers/x2apPdu_asn1_unpacker.go:67.27,71.3 3 1 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:32.217,39.96 4 1 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:43.2,43.27 1 1 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:51.2,51.39 1 1 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:39.96,41.3 1 1 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:43.27,46.119 3 0 +e2mgr/handlers/x2apSetupRequest_asn1_packer.go:46.119,49.4 2 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:39.80,43.36 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:53.2,53.104 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:71.2,71.18 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:43.36,46.100 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:46.100,48.4 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:48.9,50.4 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:53.104,56.55 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:56.55,59.130 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:67.4,67.68 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:59.130,62.73 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:62.73,64.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:74.78,81.2 4 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:83.134,86.63 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:92.2,92.63 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:98.2,98.55 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:104.2,104.55 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:110.2,110.21 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:86.63,88.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:88.8,90.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:92.63,94.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:94.8,96.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:98.55,100.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:100.8,102.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:104.55,106.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:106.8,108.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:113.134,116.60 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:123.2,123.52 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:129.2,129.21 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:116.60,118.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:118.8,121.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:123.52,125.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:125.8,127.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:132.168,135.63 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:141.2,141.63 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:147.2,147.21 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:135.63,137.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:137.8,139.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:141.63,143.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:143.8,145.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:149.168,152.60 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:158.2,158.21 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:152.60,154.3 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:154.8,156.3 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:161.121,164.131 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:199.2,199.24 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:164.131,167.54 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:167.54,175.32 5 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:180.4,180.36 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:183.4,183.46 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:194.4,194.41 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:175.32,178.5 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:180.36,182.5 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:184.71,185.200 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:189.71,190.200 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:185.200,187.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:190.200,192.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:202.125,205.146 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:257.2,257.27 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:205.146,208.109 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:208.109,217.42 6 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:221.4,221.46 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:225.4,225.117 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:232.4,232.47 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:247.4,248.18 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:251.4,253.55 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:217.42,219.5 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:221.46,223.5 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:225.117,228.55 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:228.55,230.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:233.55,234.166 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:239.55,240.166 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:234.166,236.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:236.11,238.6 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:240.166,242.6 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:242.11,244.6 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:248.18,250.5 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:263.100,268.52 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:315.2,315.29 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:268.52,271.119 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:271.119,273.84 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:273.84,276.74 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:276.74,277.116 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:277.116,279.41 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:280.63,282.112 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:306.60,306.60 0 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:282.112,285.86 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:285.86,286.58 1 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:287.68,290.64 3 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:296.89,298.25 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:301.11,302.42 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:290.64,295.12 4 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:298.25,300.12 1 0 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:318.202,320.16 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:324.2,325.43 2 1 +e2mgr/handlers/endc_x2setupResponseToProtobuf.go:320.16,322.3 1 0 +e2mgr/providers/incoming_request_handler_provider.go:24.79,30.2 1 0 +e2mgr/providers/incoming_request_handler_provider.go:33.91,38.2 1 0 +e2mgr/providers/incoming_request_handler_provider.go:40.121,43.9 2 0 +e2mgr/providers/incoming_request_handler_provider.go:48.2,48.21 1 0 +e2mgr/providers/incoming_request_handler_provider.go:43.9,46.3 2 0 +e2mgr/providers/notification_handler_provider.go:34.160,40.2 1 1 +e2mgr/providers/notification_handler_provider.go:42.164,54.2 1 1 +e2mgr/providers/notification_handler_provider.go:56.123,59.9 2 1 +e2mgr/providers/notification_handler_provider.go:63.2,63.21 1 1 +e2mgr/providers/notification_handler_provider.go:59.9,61.3 1 1 +e2mgr/providers/request_handler_provider.go:32.105,35.2 2 1 +e2mgr/providers/request_handler_provider.go:37.98,42.2 1 1 +e2mgr/providers/request_handler_provider.go:44.120,47.9 2 1 +e2mgr/providers/request_handler_provider.go:53.2,53.21 1 1 +e2mgr/providers/request_handler_provider.go:47.9,51.3 3 1 +e2mgr/rnibBuilders/node_info_builder.go:25.111,34.2 7 1 +e2mgr/services/rnib_reader_service.go:30.83,32.2 1 0 +e2mgr/services/rnib_reader_service.go:36.94,38.2 1 0 +e2mgr/services/rnib_reader_service.go:40.90,43.18 2 0 +e2mgr/services/rnib_reader_service.go:47.2,49.18 2 0 +e2mgr/services/rnib_reader_service.go:53.2,55.26 2 0 +e2mgr/services/rnib_reader_service.go:43.18,45.3 1 0 +e2mgr/services/rnib_reader_service.go:49.18,51.3 1 0 +e2mgr/services/rmr_service.go:38.90,40.2 1 1 +e2mgr/services/rmr_service.go:53.61,62.2 1 1 +e2mgr/services/rmr_service.go:65.21,80.2 9 1 +e2mgr/services/rmr_service.go:82.76,93.16 6 0 +e2mgr/services/rmr_service.go:93.16,96.3 2 0 +e2mgr/services/rmr_service.go:100.40,102.6 1 1 +e2mgr/services/rmr_service.go:102.6,107.17 3 1 +e2mgr/services/rmr_service.go:111.3,111.79 1 0 +e2mgr/services/rmr_service.go:107.17,108.12 1 1 +e2mgr/services/rmr_service.go:115.36,116.5 1 0 +e2mgr/services/rmr_service.go:116.5,119.10 2 0 +e2mgr/services/rmr_service.go:125.3,126.29 2 0 +e2mgr/services/rmr_service.go:119.10,122.9 2 0 +e2mgr/services/rmr_service.go:130.37,131.35 1 1 +e2mgr/services/rmr_service.go:131.35,135.3 3 1 +e2mgr/rmrCgo/rmrCgoApi.go:34.99,41.21 6 1 +e2mgr/rmrCgo/rmrCgoApi.go:48.2,50.11 3 1 +e2mgr/rmrCgo/rmrCgoApi.go:41.21,43.39 2 1 +e2mgr/rmrCgo/rmrCgoApi.go:43.39,46.4 2 0 +e2mgr/rmrCgo/rmrCgoApi.go:53.71,59.21 6 0 +e2mgr/rmrCgo/rmrCgoApi.go:66.2,74.21 7 0 +e2mgr/rmrCgo/rmrCgoApi.go:80.2,81.50 2 0 +e2mgr/rmrCgo/rmrCgoApi.go:59.21,63.3 3 0 +e2mgr/rmrCgo/rmrCgoApi.go:74.21,78.3 3 0 +e2mgr/rmrCgo/rmrCgoApi.go:84.46,93.21 7 0 +e2mgr/rmrCgo/rmrCgoApi.go:99.2,103.18 5 0 +e2mgr/rmrCgo/rmrCgoApi.go:93.21,97.3 3 0 +e2mgr/rmrCgo/rmrCgoApi.go:106.39,112.2 5 0 +e2mgr/rmrCgo/rmrCgoApi.go:114.36,117.2 2 1 +e2mgr/rmrCgo/rmrCgoApi.go:119.29,123.2 3 0 +e2mgr/rmrCgo/rmrCgoTypes.go:31.87,39.2 1 1 +e2mgr/rmrCgo/rmrCgoTypes.go:41.96,48.2 1 1 +e2mgr/rmrCgo/rmrCgoTypes.go:119.32,121.2 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:32.66,48.93 7 0 +e2mgr/rmrCgo/rmrCgoUtils.go:52.2,52.13 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:48.93,50.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:55.115,68.50 9 0 +e2mgr/rmrCgo/rmrCgoUtils.go:73.2,74.51 2 0 +e2mgr/rmrCgo/rmrCgoUtils.go:78.2,82.16 4 0 +e2mgr/rmrCgo/rmrCgoUtils.go:86.2,87.16 2 0 +e2mgr/rmrCgo/rmrCgoUtils.go:91.2,92.34 2 0 +e2mgr/rmrCgo/rmrCgoUtils.go:96.2,96.14 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:68.50,70.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:74.51,76.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:82.16,85.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:87.16,90.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:92.34,95.3 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:100.47,101.23 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:101.23,102.24 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:105.3,105.138 1 0 +e2mgr/rmrCgo/rmrCgoUtils.go:102.24,104.4 1 0 diff --git a/E2Manager/e2managererrors/base_error.go b/E2Manager/e2managererrors/base_error.go new file mode 100644 index 0000000..8c50117 --- /dev/null +++ b/E2Manager/e2managererrors/base_error.go @@ -0,0 +1,23 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package e2managererrors + +type BaseError struct { + Code int + Message string +} diff --git a/E2Manager/e2managererrors/command_already_in_progress.go b/E2Manager/e2managererrors/command_already_in_progress.go new file mode 100644 index 0000000..c6167ac --- /dev/null +++ b/E2Manager/e2managererrors/command_already_in_progress.go @@ -0,0 +1,36 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package e2managererrors + +type CommandAlreadyInProgressError struct { + Err BaseError +} + +func NewCommandAlreadyInProgressError() *CommandAlreadyInProgressError { + return &CommandAlreadyInProgressError { + BaseError{ + Code: 405, + Message: "Command already in progress", + }, + } +} + +func (e *CommandAlreadyInProgressError) Error() string { + return e.Err.Message +} + diff --git a/E2Manager/e2managererrors/header_validation_error.go b/E2Manager/e2managererrors/header_validation_error.go new file mode 100644 index 0000000..9c2d8ef --- /dev/null +++ b/E2Manager/e2managererrors/header_validation_error.go @@ -0,0 +1,35 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package e2managererrors + +type HeaderValidationError struct { + Err BaseError +} + +func NewHeaderValidationError() *HeaderValidationError { + return &HeaderValidationError { + BaseError{ + Code: 415, + Message: "Header validation error", + }, + } +} + +func (e *HeaderValidationError) Error() string { + return e.Err.Message +} diff --git a/E2Manager/e2managererrors/internal_error.go b/E2Manager/e2managererrors/internal_error.go new file mode 100644 index 0000000..24fa773 --- /dev/null +++ b/E2Manager/e2managererrors/internal_error.go @@ -0,0 +1,35 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package e2managererrors + +type InternalError struct { + Err BaseError +} + +func NewInternalError() *InternalError { + return &InternalError { + BaseError{ + Code: 501, + Message: "Internal Server Error. Please try again later", + }, + } +} + +func (e *InternalError) Error() string { + return e.Err.Message +} diff --git a/E2Manager/e2managererrors/rnib_db_error.go b/E2Manager/e2managererrors/rnib_db_error.go new file mode 100644 index 0000000..7a18181 --- /dev/null +++ b/E2Manager/e2managererrors/rnib_db_error.go @@ -0,0 +1,35 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package e2managererrors + +type RnibDbError struct { + Err BaseError +} + +func NewRnibDbError() *RnibDbError { + return &RnibDbError { + BaseError{ + Code: 500, + Message: "RNIB error", + }, + } +} + +func (e *RnibDbError) Error() string { + return e.Err.Message +} \ No newline at end of file diff --git a/E2Manager/go.mod b/E2Manager/go.mod new file mode 100644 index 0000000..9e9d9d4 --- /dev/null +++ b/E2Manager/go.mod @@ -0,0 +1,21 @@ +module e2mgr + +require ( + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.16 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.16 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.16 + gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.2.0 + gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/common v1.0.5 // indirect + gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities v1.0.5 + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect + github.com/go-ozzo/ozzo-validation v3.5.0+incompatible + github.com/golang/protobuf v1.3.1 + github.com/julienschmidt/httprouter v1.2.0 + github.com/pkg/errors v0.8.1 + github.com/spf13/viper v1.4.0 + github.com/stretchr/testify v1.3.0 + go.uber.org/zap v1.10.0 + gopkg.in/yaml.v2 v2.2.2 +) + +replace gerrit.o-ran-sc.org/r/ric-plt/sdlgo => gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.2.0 diff --git a/E2Manager/go.sum b/E2Manager/go.sum new file mode 100644 index 0000000..f7061b0 --- /dev/null +++ b/E2Manager/go.sum @@ -0,0 +1,219 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.9 h1:Y3g4sQc5hiVq84xJ1Ud2m1UlxDojlO2wIP54yVFCplo= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.9/go.mod h1:XZBjA22t5rvzU4SrSGfa9TpSfPOgxhA1I3oJwWFdEM4= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.11 h1:LtxjTzxDbfaAWcfsXFZX0c2GDFNGnPgRGdHUdKlF9oc= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.11/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.12 h1:3x2WB/QdXofHxgJZXdFiOiiLmmV13fHWc9FfbZJtF1I= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.12/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.15 h1:Q2f5oLVbFi2VhlFZuU//qaC2QCXa50Ly4y0n4BV1OtQ= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.15/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.16 h1:xrgKncpNUDycoug2bnJ+Z74AePIKYOE8eykr0vxNu70= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.16/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.8 h1:25mglk3nUhSkVYnpxJH2SF9SccY2ecLio/OGBsJLNjk= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.8/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.9 h1:433mb6o1LXwDDxuq2k8NOWbo68HHgdlfxZo0s8X6n7g= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.9/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.11 h1:IzuE0JMoSd0tJG1/pw3ubim9/vBZ4/oazu6+8CpiZlA= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.11/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.12/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.14/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.15 h1:RoVrLIkCmYesG/dXHH6F3nb8nHzZBGPiuD/cA7+mPoE= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.15/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.16 h1:qcjvxx/bpoFMRYbLz0hioVmgH6xdE3+FMF7pVmprHOI= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.16/go.mod h1:GXiXLz4ORBeIr0FLIbzENRykgh3Po5uPkX2jICxnRF0= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.8 h1:nvJjn4VyRGuyp5irasfFSPKW4zNDTh12sfky53UaqL4= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.8/go.mod h1:wqyKCJkXzU/UqeuRBUv3QrMHYVI544wdoMav3aeJXdE= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.9 h1:ziuiw/eX0zBqdEGTz3Jdvp9KbirFt5mwjk6bx7c20pc= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.9/go.mod h1:85fHlwiVClS4o+BrCODiOk7ZaH9YUSYAio9masBw2Q8= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.11 h1:/+0fPbJZUhsaVlhXbSwmH8GvcGQZ8+GAnmkLH/j/qkI= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.11/go.mod h1:NF/NuFuSCfC5qdJQOdorlyW1ljIkvhQUVCRzKZzwScA= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.14/go.mod h1:wBPb2ZHeJk6i7xOiKzf1Toom0J8cKtrYH525S2baALo= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.15 h1:ejoTjZsZuWDTmqbUV0sak34X6DURQ20m7bPgIGBu4hc= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.15/go.mod h1:epfVaMMzpETIKafi3YSYWNtoY5l/0MDDR1njyUVgikE= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.16 h1:7r99RGKmyliF1jeHsOdLxE08MeNrcATLwvOxEniNDA8= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.16/go.mod h1:myZiM4n1DH4Ukak//khaimR75ymx5MwlXaob4kOYvY4= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.1.1 h1:D2fU0/YXdqSNYsmptSBbkDfG76uBFKjnhQiq5cD4WT4= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.1.1/go.mod h1:2Y8gw2jqj9urI8VFqFQn7BX0J3A852+YrXVV9V8gOt4= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.2.0 h1:7edCLIQtk9xCwxTtLRUlXr8wQ6nmr/Mo4ZoqjF3m0NE= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.2.0/go.mod h1:2Y8gw2jqj9urI8VFqFQn7BX0J3A852+YrXVV9V8gOt4= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git v1.0.0 h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git v1.0.0/go.mod h1:4QHen1jkf+TWKmFTY038+evuNgbyJAonjCGn3a5qIAc= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git v1.0.1 h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git v1.0.1/go.mod h1:4QHen1jkf+TWKmFTY038+evuNgbyJAonjCGn3a5qIAc= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/common v1.0.4 h1:gKJXQpSDbGfuYIbcDASZGHjcm33TlAf83aBqUiyeq1Q= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/common v1.0.4/go.mod h1:tg9/uNSCfkE3CkRSP1sycz43memMn6xas6fvvaGakWM= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/common v1.0.5/go.mod h1:tg9/uNSCfkE3CkRSP1sycz43memMn6xas6fvvaGakWM= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities v1.0.4 h1:QNieurltghn1wFUxGeT5AW38lbfSIIUHLtO5kBgJyMU= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities v1.0.4/go.mod h1:zJjqld4o1wW6g89uVwQCj/iGciQ//rSbnzMAOQ+M0jk= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities v1.0.5 h1:jPboKye70XLCKIUcqJW/qplfG4t70q+LpgQ0dGTl+FY= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/entities v1.0.5/go.mod h1:zJjqld4o1wW6g89uVwQCj/iGciQ//rSbnzMAOQ+M0jk= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/reader v1.0.4 h1:hGkCP2WMnWkqgiOGEgkhPa5qqNj5+IE3BSEpjUNcTEk= +gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/ric-plt/nodeb-rnib.git/reader v1.0.4/go.mod h1:ylflcy9ejVNfA8adx3GmnaeDkfNpMLt9Nf3E3Nmn0D4= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-ozzo/ozzo-validation v3.5.0+incompatible h1:sUy/in/P6askYr16XJgTKq/0SZhiWsdg4WZGaLsGQkM= +github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= +github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= +github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/E2Manager/handlers/delete_all_request_handler.go b/E2Manager/handlers/delete_all_request_handler.go new file mode 100644 index 0000000..3a9958f --- /dev/null +++ b/E2Manager/handlers/delete_all_request_handler.go @@ -0,0 +1,154 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/stateMachine" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "time" + + "e2mgr/models" +) + +type DeleteAllRequestHandler struct { + readerProvider func() reader.RNibReader + writerProvider func() rNibWriter.RNibWriter + config *configuration.Configuration +} + +func NewDeleteAllRequestHandler(config *configuration.Configuration, writerProvider func() rNibWriter.RNibWriter, + readerProvider func() reader.RNibReader) *DeleteAllRequestHandler { + return &DeleteAllRequestHandler { + readerProvider: readerProvider, + writerProvider: writerProvider, + config: config, + } +} + +func (handler *DeleteAllRequestHandler) Handle(logger *logger.Logger, request *models.Request, rmrResponseChannel chan<- *models.NotificationResponse) error { + + err, continueFlow := handler.updateNodebStates(logger, false) + if err != nil { + return err + } + + if continueFlow == false{ + return nil + } + + //TODO change to rmr_request + response := models.NotificationResponse{MgsType: rmrCgo.RIC_SCTP_CLEAR_ALL} + rmrResponseChannel <- &response + + time.Sleep(time.Duration(handler.config.BigRedButtonTimeoutSec) * time.Second) + logger.Infof("#delete_all_request_handler.Handle - timer expired") + + err, _ = handler.updateNodebStates(logger, true) + if err != nil { + return err + } + + return nil +} + +func (handler *DeleteAllRequestHandler) updateNodebStates(logger *logger.Logger, timeoutExpired bool) (error, bool){ + nbIdentityList, err := handler.readerProvider().GetListNodebIds() + + if err != nil { + logger.Errorf("#delete_all_request_handler.updateNodebStates - failed to get nodes list from RNIB. Error: %s", err.Error()) + return e2managererrors.NewRnibDbError(), false + } + + if len(nbIdentityList) == 0 { + return nil, false + } + + for _,nbIdentity := range nbIdentityList{ + + node, err := handler.readerProvider().GetNodeb((*nbIdentity).GetInventoryName()) + + if err != nil { + logger.Errorf("#delete_all_request_handler.updateNodebStates - failed to get nodeB entity for ran name: %v from RNIB. Error: %s", + (*nbIdentity).GetInventoryName(), err.Error()) + continue + } + + if timeoutExpired{ + + handler.saveNodebShutDownState(logger, nbIdentity, node) + continue + } + handler.saveNodebNextState(logger, nbIdentity, node) + } + + logger.Infof("#delete_all_request_handler.updateNodebStates - update nodeb states in RNIB completed") + return nil, true +} + +func (handler *DeleteAllRequestHandler) saveNodebNextState(logger *logger.Logger, nbIdentity *entities.NbIdentity, node *entities.NodebInfo) { + + nextStatus, res := stateMachine.NodeNextStateDeleteAll(node.ConnectionStatus) + if res == false { + return + } + + node.ConnectionStatus = nextStatus + + err := handler.writerProvider().SaveNodeb(nbIdentity, node) + + if err != nil { + logger.Errorf("#delete_all_request_handler.saveNodebNextState - failed to save nodeB entity for inventory name: %v to RNIB. Error: %s", + (*nbIdentity).GetInventoryName(), err.Error()) + return + } + + if logger.DebugEnabled() { + logger.Debugf("#delete_all_request_handler.saveNodebNextState - connection status of inventory name: %v changed to %v", + (*nbIdentity).GetInventoryName(), nextStatus.String()) + } +} + +func (handler *DeleteAllRequestHandler) saveNodebShutDownState(logger *logger.Logger, nbIdentity *entities.NbIdentity, node *entities.NodebInfo) { + + if node.ConnectionStatus == entities.ConnectionStatus_SHUT_DOWN{ + return + } + + if node.ConnectionStatus != entities.ConnectionStatus_SHUTTING_DOWN { + logger.Errorf("#delete_all_request_handler.saveNodebShutDownState - ignore, status is not Shutting Down, inventory name: %v ", (*nbIdentity).GetInventoryName()) + return + } + + node.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + + err := handler.writerProvider().SaveNodeb(nbIdentity, node) + + if err != nil { + logger.Errorf("#delete_all_request_handler.saveNodebShutDownState - failed to save nodeB entity for inventory name: %v to RNIB. Error: %s", + (*nbIdentity).GetInventoryName(), err.Error()) + return + } + + logger.Errorf("#delete_all_request_handler.saveNodebShutDownState - Shut Down , inventory name: %v ", (*nbIdentity).GetInventoryName()) +} diff --git a/E2Manager/handlers/delete_all_request_handler_test.go b/E2Manager/handlers/delete_all_request_handler_test.go new file mode 100644 index 0000000..3204b71 --- /dev/null +++ b/E2Manager/handlers/delete_all_request_handler_test.go @@ -0,0 +1,381 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "reflect" + "testing" +) + +func TestHandleBeforeTimerGetListNodebIdsFailedFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + var messageChannel chan<- *models.NotificationResponse + + rnibErr := &common.RNibError{} + var nbIdentityList []*entities.NbIdentity + readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibErr) + + expected := &e2managererrors.RnibDbError{} + actual := handler.Handle(log, nil, messageChannel) + if reflect.TypeOf(actual) != reflect.TypeOf(expected){ + t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) + } +} + +func TestHandleAfterTimerGetListNodebIdsFailedFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + messageChannel := make(chan*models.NotificationResponse) + + rnibErr := &common.RNibError{} + //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown + nbIdentityList := createIdentityList() + + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil).Return(nbIdentityList, rnibErr) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3 := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil) + + go func(){ + response := <-messageChannel + assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) + }() + + expected := &e2managererrors.RnibDbError{} + actual := handler.Handle(log, nil, messageChannel) + if reflect.TypeOf(actual) != reflect.TypeOf(expected){ + t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) + } +} + +func TestHandleSuccessFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + messageChannel := make(chan*models.NotificationResponse) + + //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown + nbIdentityList := createIdentityList() + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3 := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil) + + updatedNb2AfterTimer := &entities.NodebInfo{RanName:"RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3AfterTimer := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil) + + go func(){ + response := <-messageChannel + assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) + }() + + actual := handler.Handle(log, nil, messageChannel) + + assert.Nil(t, actual) +} + +func TestHandleSuccessGetNextStatusFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + messageChannel := make(chan*models.NotificationResponse) + + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil) + + updatedNb1AfterTimer := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1AfterTimer).Return(nil) + + + go func(){ + response := <-messageChannel + assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) + }() + + actual := handler.Handle(log, nil, messageChannel) + + assert.Nil(t, actual) +} + +func TestHandleGetNodebFailedFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + messageChannel := make(chan*models.NotificationResponse) + + //Before timer: Disconnected->ShutDown(will fail), ShuttingDown->Ignore, Connected->ShuttingDown + nbIdentityList := createIdentityList() + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + errRnib := &common.RNibError{} + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, errRnib) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3 := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(errRnib) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(nil) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, errRnib) + readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil) + + updatedNb2AfterTimer := &entities.NodebInfo{RanName:"RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3AfterTimer := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(nil) + + go func(){ + response := <-messageChannel + assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) + }() + + actual := handler.Handle(log, nil, messageChannel) + + assert.Nil(t, actual) +} + +func TestHandleSaveFailedFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + messageChannel := make(chan*models.NotificationResponse) + + //Before timer: Disconnected->ShutDown, ShuttingDown->Ignore, Connected->ShuttingDown(will fail) + nbIdentityList := createIdentityList() + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + + errRnib := &common.RNibError{} + updatedNb1 := &entities.NodebInfo{RanName:"RanName_1", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3 := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb1).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3).Return(errRnib) + + //after timer: ShutDown->Ignore, ShuttingDown->ShutDown(will fail) + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1AfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + nb2AfterTimer := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + nb3AfterTimer := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2AfterTimer, nil) + readerMock.On("GetNodeb", "RanName_3").Return(nb3AfterTimer, nil) + + updatedNb2AfterTimer := &entities.NodebInfo{RanName:"RanName_2", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + updatedNb3AfterTimer := &entities.NodebInfo{RanName:"RanName_3", ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb2AfterTimer).Return(nil) + writerMock.On("SaveNodeb", mock.Anything, updatedNb3AfterTimer).Return(errRnib) + + go func(){ + response := <-messageChannel + assert.Equal(t, response.MgsType, rmrCgo.RIC_SCTP_CLEAR_ALL) + }() + + actual := handler.Handle(log, nil, messageChannel) + + assert.Nil(t, actual) +} + +func TestHandleGetListEnbIdsEmptyFlow(t *testing.T){ + log := initLog(t) + + readerMock := &mocks.RnibReaderMock{} + readerProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + writerProvider := func() rNibWriter.RNibWriter { + return writerMock + } + config := configuration.ParseConfiguration() + + handler := NewDeleteAllRequestHandler(config, writerProvider, readerProvider) + + var messageChannel chan<- *models.NotificationResponse + + var rnibError common.IRNibError + nbIdentityList := []*entities.NbIdentity{} + + readerMock.On("GetListNodebIds").Return(nbIdentityList, rnibError) + + actual := handler.Handle(log, nil, messageChannel) + readerMock.AssertNumberOfCalls(t, "GetNodeb", 0) + assert.Nil(t, actual) +} + +func createIdentityList() []*entities.NbIdentity { + nbIdentity1 := entities.NbIdentity{InventoryName: "RanName_1"} + nbIdentity2 := entities.NbIdentity{InventoryName: "RanName_2"} + nbIdentity3 := entities.NbIdentity{InventoryName: "RanName_3"} + + var nbIdentityList []*entities.NbIdentity + nbIdentityList = append(nbIdentityList, &nbIdentity1) + nbIdentityList = append(nbIdentityList, &nbIdentity2) + nbIdentityList = append(nbIdentityList, &nbIdentity3) + + return nbIdentityList +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} \ No newline at end of file diff --git a/E2Manager/handlers/endc_configuration_update_handler.go b/E2Manager/handlers/endc_configuration_update_handler.go new file mode 100644 index 0000000..1c3736f --- /dev/null +++ b/E2Manager/handlers/endc_configuration_update_handler.go @@ -0,0 +1,68 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "unsafe" +) + +type EndcConfigurationUpdateHandler struct{} + +func (src EndcConfigurationUpdateHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, request *models.NotificationRequest, + messageChannel chan<- *models.NotificationResponse) { + + var payloadSize C.ulong + payloadSize = MaxAsn1PackedBufferSize + packedBuffer := [MaxAsn1PackedBufferSize]C.uchar{} + errorBuffer := [MaxAsn1PackedBufferSize]C.char{} + refinedMessage, err := unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + status := C.build_pack_endc_configuration_update_failure(&payloadSize, &packedBuffer[0], MaxAsn1PackedBufferSize, &errorBuffer[0]) + if status { + payload := (*[1 << 30]byte)(unsafe.Pointer(&packedBuffer))[:payloadSize:payloadSize] + logger.Debugf("#endc_configuration_update_handler.Handle - Endc configuration update negative ack message payload: (%d) %02x", len(payload), payload) + response := models.NotificationResponse{RanName: request.RanName, Payload: payload, MgsType: rmrCgo.RIC_ENDC_CONF_UPDATE_FAILURE} + messageChannel <- &response + } else { + logger.Errorf("#endc_configuration_update_handler.Handle - failed to build and pack Endc configuration update unsuccessful outcome message. Error: %v", errorBuffer) + } + logger.Errorf("#endc_configuration_update_handler.Handle - unpack failed. Error: %v", err) + } else { + logger.Infof("#endc_configuration_update_handler.Handle - Endc configuration update initiating message received") + logger.Debugf("#endc_configuration_update_handler.Handle - Endc configuration update initiating message payload: %s", refinedMessage.pduPrint) + status := C.build_pack_endc_configuration_update_ack(&payloadSize, &packedBuffer[0], MaxAsn1PackedBufferSize, &errorBuffer[0]) + if status { + payload := (*[1 << 30]byte)(unsafe.Pointer(&packedBuffer))[:payloadSize:payloadSize] + logger.Debugf("#endc_configuration_update_handler.Handle - Endc configuration update positive ack message payload: (%d) %02x", len(payload), payload) + response := models.NotificationResponse{RanName: request.RanName, Payload: payload, MgsType: rmrCgo.RIC_ENDC_CONF_UPDATE_ACK} + messageChannel <- &response + } else { + logger.Errorf("#endc_configuration_update_handler.Handle - failed to build and pack endc configuration update successful outcome message. Error: %v", errorBuffer) + } + } + printHandlingSetupResponseElapsedTimeInMs(logger, "#endc_configuration_update_handler.Handle - Summary: Elapsed time for receiving and handling endc configuration update initiating message from E2 terminator", request.StartTime) +} diff --git a/E2Manager/handlers/endc_configuration_update_handler_test.go b/E2Manager/handlers/endc_configuration_update_handler_test.go new file mode 100644 index 0000000..9a115c6 --- /dev/null +++ b/E2Manager/handlers/endc_configuration_update_handler_test.go @@ -0,0 +1,71 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "e2mgr/tests" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +func TestHandleSuccessEndcConfigUpdate(t *testing.T){ +/* log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#endc_configuration_update_handler_test.TestHandleSuccessEndcConfigUpdate - failed to initialize logger, error: %s", err) + } + h := EndcConfigurationUpdateHandler{} + E2Sessions := make(sessions.E2Sessions) + + payload := tests.GetPackedPayload(t) + mBuf := rmrCgo.NewMBuf(10370, len(payload),"RanName", &payload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + messageChannel := make(chan *models.NotificationResponse) + + go h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel) + + response := <-messageChannel + + assert.NotEmpty(t, response) + assert.EqualValues(t, 10371, response.MgsType) + assert.True(t, len(response.Payload) > 0)*/ +} + +func TestHandleFailureEndcConfigUpdate(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#endc_configuration_update_handler_test.TestHandleFailureEndcConfigUpdate - failed to initialize logger, error: %s", err) + } + h := EndcConfigurationUpdateHandler{} + E2Sessions := make(sessions.E2Sessions) + + mBuf := rmrCgo.NewMBuf(tests.MessageType, 4,"RanName", &tests.DummyPayload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + messageChannel := make(chan *models.NotificationResponse) + + go h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel) + + response := <-messageChannel + + assert.NotEmpty(t, response) + assert.EqualValues(t, 10372, response.MgsType) + assert.True(t, len(response.Payload) > 0) +} diff --git a/E2Manager/handlers/endc_setup_request_handler.go b/E2Manager/handlers/endc_setup_request_handler.go new file mode 100644 index 0000000..ad3ae8f --- /dev/null +++ b/E2Manager/handlers/endc_setup_request_handler.go @@ -0,0 +1,76 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/rNibWriter" + "e2mgr/rnibBuilders" + "sync" + "time" + + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" +) + +type EndcSetupRequestHandler struct { + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewEndcSetupRequestHandler(rnibWriterProvider func() rNibWriter.RNibWriter) *EndcSetupRequestHandler { + return &EndcSetupRequestHandler{ + rnibWriterProvider: rnibWriterProvider, + } +} + +func (handler EndcSetupRequestHandler) PreHandle(logger *logger.Logger, details *models.RequestDetails) error { + nodebInfo, nodebIdentity := rnibBuilders.CreateInitialNodeInfo(details) + + rNibErr := handler.rnibWriterProvider().SaveNodeb(nodebIdentity, nodebInfo) + if rNibErr != nil { + logger.Errorf("#endc_setup_request_handler.PreHandle - failed to initial nodeb entity for ran name: %v in RNIB. Error: %s", details.RanName, rNibErr.Error()) + } else { + logger.Infof("#endc_setup_request_handler.PreHandle - initial nodeb entity for ran name: %v was saved to RNIB ", details.RanName) + } + + return rNibErr +} + +func (EndcSetupRequestHandler) CreateMessage(logger *logger.Logger, requestDetails *models.RequestDetails, messageChannel chan *models.E2RequestMessage, e2sessions sessions.E2Sessions, startTime time.Time, wg sync.WaitGroup) { + + wg.Add(1) + + payload, err := packEndcX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId[:], eNBId[:], eNBIdBitqty) + if err != nil { + logger.Errorf("#endc_setup_request_handler.CreateMessage - pack was failed. Error: %v", err) + } else { + transactionId := requestDetails.RanName + e2sessions[transactionId] = sessions.E2SessionDetails{SessionStart: startTime, Request: requestDetails} + setupRequestMessage := models.NewE2RequestMessage(transactionId, requestDetails.RanIp, requestDetails.RanPort, requestDetails.RanName, payload) + + logger.Debugf("#endc_setup_request_handler.CreateMessage - setupRequestMessage was created successfuly. setup request details(transactionId = [%s]): %+v", transactionId, setupRequestMessage) + messageChannel <- setupRequestMessage + } + + wg.Done() +} + +func (EndcSetupRequestHandler) GetMessageType() int { + return rmrCgo.RIC_ENDC_X2_SETUP_REQ +} diff --git a/E2Manager/handlers/endc_setup_request_handler_test.go b/E2Manager/handlers/endc_setup_request_handler_test.go new file mode 100644 index 0000000..0c3b8e1 --- /dev/null +++ b/E2Manager/handlers/endc_setup_request_handler_test.go @@ -0,0 +1,59 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/sessions" + "github.com/stretchr/testify/assert" + "sync" + "testing" + "time" +) + +func TestNewEndcSetupRequestHandler(t *testing.T) { + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + h := NewEndcSetupRequestHandler(rnibWriterProvider) + assert.NotNil(t, h) +} + +func TestCreateEndcX2SetupMessageSuccess(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#setup_request_handler_test.TestCreateMessageSuccess - failed to initialize logger, error: %s", err) + } + messageChannel := make(chan *models.E2RequestMessage) + assert.NotPanics(t, func() { createEndcX2SetupMsg(log, messageChannel) }) + assert.NotEmpty(t, <-messageChannel) +} + +func createEndcX2SetupMsg(log *logger.Logger, messageChannel chan *models.E2RequestMessage) { + h := EndcSetupRequestHandler{} + E2Sessions := make(sessions.E2Sessions) + var wg sync.WaitGroup + var rd models.RequestDetails + go h.CreateMessage(log, &rd, messageChannel, E2Sessions, time.Now(), wg) + wg.Wait() +} diff --git a/E2Manager/handlers/endc_setup_response_notification_handler.go b/E2Manager/handlers/endc_setup_response_notification_handler.go new file mode 100644 index 0000000..e706039 --- /dev/null +++ b/E2Manager/handlers/endc_setup_response_notification_handler.go @@ -0,0 +1,77 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/models" + "e2mgr/rNibWriter" + "fmt" + + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + + "e2mgr/logger" + "e2mgr/sessions" +) + +type EndcX2SetupResponseNotificationHandler struct{} + +func (src EndcX2SetupResponseNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + e2session, ok := e2Sessions[request.TransactionId] + gnbId, gnb, err := unpackEndcX2SetupResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + + if err != nil { + logger.Errorf("#endc_setup_response_notification_handler.Handle - unpack failed. Error: %v", err) + } + + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#endc_setup_response_notification_handler.handle - transactionId %s: Summary: Elapsed time for receiving and handling setup response from E2 terminator", request.TransactionId), request.StartTime) + if ok { + + if gnb != nil { + nb := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + + nbIdentity.InventoryName = e2session.Request.RanName + nbIdentity.GlobalNbId = gnbId + nb.GlobalNbId = nbIdentity.GlobalNbId + nb.RanName = e2session.Request.RanName + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Ip = e2session.Request.RanIp + nb.Port = uint32(e2session.Request.RanPort) + nb.NodeType = entities.Node_GNB + nb.Configuration = &entities.NodebInfo_Gnb{Gnb: gnb} + + //insert/update database + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + logger.Errorf("#endc_setup_response_notification_handler.Handle - transactionId %s: rNibWriter failed to save GNB data for gnbId: %v. Error: %s", request.TransactionId, gnbId, rNibErr.Error()) + } else { + logger.Infof("#endc_setup_response_notification_handler.Handle - transactionId %s: saved to rNib gnbId: %v", request.TransactionId, gnbId) + if logger.DebugEnabled() { + logger.Debugf("#endc_setup_response_notification_handler..Handle - transactionId %s: saved to rNib gnbId: %v, v:[%s]", request.TransactionId, gnbId, fmt.Sprintf("%s %s", nb.ConnectionStatus, gnb.ServedNrCells)) + } + } + + } + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#endc_setup_response_notification_handler.handle - transactionId %s: Summary: Total roundtrip elapsed time", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } + + +} diff --git a/E2Manager/handlers/endc_x2Setup_failure_response_notification_handler.go b/E2Manager/handlers/endc_x2Setup_failure_response_notification_handler.go new file mode 100644 index 0000000..cfbb500 --- /dev/null +++ b/E2Manager/handlers/endc_x2Setup_failure_response_notification_handler.go @@ -0,0 +1,70 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/rNibWriter" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + + "e2mgr/logger" + "e2mgr/models" + "e2mgr/sessions" +) + +type EndcX2SetupFailureResponseNotificationHandler struct{} + +func (src EndcX2SetupFailureResponseNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + e2session, ok := e2Sessions[request.TransactionId] + + failureResponse, err := unpackEndcX2SetupFailureResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + logger.Errorf("#endc_x2Setup_failure_response_notification_handler.Handle - unpack failed. Error: %v", err) + } + + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#endc_x2Setup_failure_response_notification_handler.handle - transactionId %s: Summary: Elapsed time for receiving and handling setup response from E2 terminator", request.TransactionId), request.StartTime) + if ok { + if failureResponse != nil { + nb := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.Ip = e2session.Request.RanIp + nb.Port = uint32(e2session.Request.RanPort) + nb.SetupFailure = failureResponse + nb.FailureType = entities.Failure_ENDC_X2_SETUP_FAILURE + nbIdentity.InventoryName = e2session.Request.RanName + + //insert/update database + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + logger.Errorf("#endc_x2Setup_failure_response_notification_handler.Handle - transactionId %s: rNibWriter failed to save failure response data. Error: %s", request.TransactionId, rNibErr.Error()) + } else { + logger.Infof("#endc_x2Setup_failure_response_notification_handler.Handle - transactionId %s: saved to rNib", request.TransactionId) + if logger.DebugEnabled() { + logger.Debugf("#endc_x2Setup_failure_response_notification_handler.Handle - transactionId %s: saved to rNib , value:[%s]", request.TransactionId, fmt.Sprintf("%s %s", nb.ConnectionStatus, failureResponse)) + } + } + } + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#endc_x2Setup_failure_response_notification_handler.handle - transactionId %s: Summary: Total roundtrip elapsed time", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } + + +} diff --git a/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer.go b/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer.go new file mode 100644 index 0000000..879e01d --- /dev/null +++ b/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +func packEndcX2apSetupRequest(logger *logger.Logger, allocationBufferSize int, maxPackedBufferSize int, maxMessageBufferSize int, pLMNId []byte, eNB_Id []byte /*18, 20, 21, 28 bits length*/, bitqty uint) ([]byte, error) { + packedBuf := make([]byte, maxPackedBufferSize) + errBuf := make([]C.char, maxMessageBufferSize) + packedBufSize := C.ulong(len(packedBuf)) + + if !C.build_pack_endc_x2setup_request((*C.uchar)(unsafe.Pointer(&pLMNId[0])) /*pLMN_Identity*/, + (*C.uchar)(unsafe.Pointer(&eNB_Id[0])), C.uint(bitqty),(*C.uchar)(unsafe.Pointer(&ricFlag[0])) /*pLMN_Identity*/, + &packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0]) { + return nil, errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errBuf[0]))) + } + + if logger.DebugEnabled() { + pdu:= C.new_pdu(C.size_t(allocationBufferSize)) + defer C.delete_pdu(pdu) + if C.per_unpack_pdu(pdu, packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])),C.size_t(len(errBuf)), &errBuf[0]){ + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + logger.Debugf("endc_x2apSetupRequest_asn1_packer.packEndcX2apSetupRequest - PDU:%s\n\npacked (%d):%x", C.GoString(&errBuf[0]), packedBufSize, packedBuf[:packedBufSize]) + } + } + + return packedBuf[:packedBufSize], nil + +} diff --git a/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer_test.go b/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer_test.go new file mode 100644 index 0000000..5c88773 --- /dev/null +++ b/E2Manager/handlers/endc_x2apSetupRequest_asn1_packer_test.go @@ -0,0 +1,103 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +/* + * Create and pack an x2ap setup request. + * Verify the packed representation matches the want value. + */ +func TestPackEndcX2apSetupRequest(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + pLMNId := []byte{0xbb, 0xbc, 0xcc} + + var testCases = []struct { + eNBId []byte + eNBIdBitqty uint + packedPdu string + }{ + { + eNBId :[]byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: shortMacro_eNB_ID, + packedPdu: "0024003200000100f4002b0000020015000900bbbccc8003abcd8000fa0017000001f700bbbcccabcd80000000bbbccc000000000001", + }, + + { + eNBId :[]byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: macro_eNB_ID, + packedPdu: "0024003100000100f4002a0000020015000800bbbccc00abcde000fa0017000001f700bbbcccabcde0000000bbbccc000000000001", + }, + { + eNBId :[]byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: longMacro_eNB_ID, + //packedPdu: "0024003200000100f4002b0000020015000900bbbccc8103abcd3800fa0017000001f700bbbcccabcd38000000bbbccc000000000001", + packedPdu: "0024003200000100f4002b0000020015000900bbbcccc003abcd3800fa0017000001f700bbbcccabcd38000000bbbccc000000000001", + }, + { + eNBId :[]byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: home_eNB_ID, + packedPdu: "0024003200000100f4002b0000020015000900bbbccc40abcdef8000fa0017000001f700bbbcccabcdef800000bbbccc000000000001", + }, + + + } + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + payload, err := packEndcX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId[:], tc.eNBId[:], tc.eNBIdBitqty) + if err != nil { + t.Errorf("want: success, got: pack failed. Error: %v\n", err) + } else { + t.Logf("packed X2AP setup request(size=%d): %x\n", len(payload), payload) + tmp := fmt.Sprintf("%x", payload) + if len(tmp) != len(tc.packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2) + } + + if strings.Compare(tmp, tc.packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp) + } + } + }) + } +} + +/*Packing error*/ + +func TestPackEndcX2apSetupRequestPackError(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + wantError := "packing error: #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:53" + + _, err := packEndcX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, 40 /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId[:], eNBId[:],eNBIdBitqty) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} diff --git a/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf.go b/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf.go new file mode 100644 index 0000000..4b956d3 --- /dev/null +++ b/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf.go @@ -0,0 +1,80 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +// Populate and return the EN-DC/X2 setup response failure structure with data from the pdu +func endcX2SetupFailureResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.SetupFailure, error) { + setupFailure := entities.SetupFailure{} + + if pdu.present == C.E2AP_PDU_PR_unsuccessfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + unsuccessfulOutcome := *(**C.UnsuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if unsuccessfulOutcome != nil && unsuccessfulOutcome.value.present == C.UnsuccessfulOutcome__value_PR_ENDCX2SetupFailure { + endcX2SetupFailure := (*C.ENDCX2SetupFailure_t)(unsafe.Pointer(&unsuccessfulOutcome.value.choice[0])) + if endcX2SetupFailure != nil && endcX2SetupFailure.protocolIEs.list.count > 0 { + count:=int(endcX2SetupFailure.protocolIEs.list.count) + endcX2SetupFailure_IEs_slice := (*[1 << 30]*C.ENDCX2SetupFailure_IEs_t)(unsafe.Pointer(endcX2SetupFailure.protocolIEs.list.array))[:count:count] + for _, endcX2SetupFailure_IE := range endcX2SetupFailure_IEs_slice { + if endcX2SetupFailure_IE != nil { + switch endcX2SetupFailure_IE.value.present { + case C.ENDCX2SetupFailure_IEs__value_PR_Cause: + causeIE := (*C.Cause_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])) + err := getCause(causeIE, &setupFailure) + if err != nil { + return nil, err + } + case C.ENDCX2SetupFailure_IEs__value_PR_TimeToWait: + setupFailure.TimeToWait = entities.TimeToWait(1 + *((*C.TimeToWait_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])))) + case C.ENDCX2SetupFailure_IEs__value_PR_CriticalityDiagnostics: + cdIE := (*C.CriticalityDiagnostics_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])) + if cd, err := getCriticalityDiagnostics(cdIE); err == nil { + setupFailure.CriticalityDiagnostics = cd + } else { + return nil, err + } + } + } + } + } + } + } + + return &setupFailure, nil +} + +func unpackEndcX2SetupFailureResponseAndExtract(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*entities.SetupFailure, error) { + pdu, err := unpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + return endcX2SetupFailureResponseToProtobuf(pdu) +} diff --git a/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf_test.go b/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf_test.go new file mode 100644 index 0000000..05d7bce --- /dev/null +++ b/E2Manager/handlers/endc_x2setupFailureResponseToProtobuf_test.go @@ -0,0 +1,136 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/logger" + "e2mgr/rNibWriter" + "fmt" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb + */ + +func TestUnpackEndcX2SetupFailureResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + saveToRNib bool + response string + packedPdu string + failure error + }{ + { + saveToRNib: false, //TODO: use MOCK? + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4024001a0000030005400200000016400100001140087821a00000008040"}, + + /**** shares the same code with x2setup failure response to protobuf ****/ + } + + initDb_f := true + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := unpackEndcX2SetupFailureResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if response == nil { + if tc.failure == nil { + t.Errorf("want: response=%s, got: empty response", tc.response) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.SetupFailure = response + nb.FailureType = entities.Failure_X2_SETUP_FAILURE + respStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, response) + if !strings.EqualFold(respStr, tc.response) { + t.Errorf("want: response=[%s], got: [%s]", tc.response, respStr) + } + + // Save to rNib + if tc.saveToRNib { + if initDb_f { + rNibWriter.Init("e2Manager", 1) + initDb_f = false + } + nbIdentity := &entities.NbIdentity{InventoryName:"RanName"} + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + if tc.failure == nil { + t.Errorf("rNibWriter failed to save ENB. Error: %s\n", rNibErr.Error()) + } else { + if strings.Compare(rNibErr.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, rNibErr.Error()) + } + } + } + } + } + }) + } +} + diff --git a/E2Manager/handlers/endc_x2setupResponseToProtobuf.go b/E2Manager/handlers/endc_x2setupResponseToProtobuf.go new file mode 100644 index 0000000..b4d098d --- /dev/null +++ b/E2Manager/handlers/endc_x2setupResponseToProtobuf.go @@ -0,0 +1,326 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +// "github.com/pkg/errors" + "unsafe" +) + +const ( + maxCellinengNB = 16384 + maxofNRNeighbours = 1024 + maxnoofNrCellBands = 32 +) + +func getNRFreqInfo(freqInfo C.NRFreqInfo_t) (*entities.NrFrequencyInfo, error) { + var info *entities.NrFrequencyInfo + info = &entities.NrFrequencyInfo{NrArFcn: uint64(freqInfo.nRARFCN)} + + if freqInfo.sULInformation != nil { + info.SulInformation = &entities.NrFrequencyInfo_SulInformation{SulArFcn: uint64((*C.SULInformation_t)(freqInfo.sULInformation).sUL_ARFCN)} + + if value, err := getNR_TxBW((*C.SULInformation_t)(freqInfo.sULInformation).sUL_TxBW); err == nil { + info.SulInformation.SulTransmissionBandwidth = value + } else { + return nil, err + } + } + + if freqInfo.freqBandListNr.list.count > 0 && freqInfo.freqBandListNr.list.count <= maxnoofNrCellBands { + count := int(freqInfo.freqBandListNr.list.count) + freqBandListNr_slice := (*[1 << 30]*C.FreqBandNrItem_t)(unsafe.Pointer(freqInfo.freqBandListNr.list.array))[:count:count] + for _, freqBandNrItem := range freqBandListNr_slice { + frequencyBand := &entities.FrequencyBandItem{NrFrequencyBand: uint32(freqBandNrItem.freqBandIndicatorNr)} + + if freqBandNrItem.supportedSULBandList.list.count > 0 && freqBandNrItem.supportedSULBandList.list.count <= maxnoofNrCellBands { + count:= int(freqBandNrItem.supportedSULBandList.list.count) + supportedSULBandList_slice := (*[1 << 30]*C.SupportedSULFreqBandItem_t)(unsafe.Pointer(freqBandNrItem.supportedSULBandList.list.array))[:count:count] + for _, supportedSULFreqBandItem := range supportedSULBandList_slice { + frequencyBand.SupportedSulBands = append(frequencyBand.SupportedSulBands, uint32(supportedSULFreqBandItem.freqBandIndicatorNr)) + } + } + + info.FrequencyBands = append(info.FrequencyBands, frequencyBand) + } + } + + return info, nil +} + +func getNR_TxBW(txBW C.NR_TxBW_t) (*entities.NrTransmissionBandwidth, error) { + var bw *entities.NrTransmissionBandwidth + + bw = &entities.NrTransmissionBandwidth{Nrscs: entities.Nrscs(1 + int64(txBW.nRSCS))} + bw.Ncnrb = entities.Ncnrb(1 + int64(txBW.nRNRB)) + + return bw, nil +} + +func getnrModeInfoFDDInfo(fdd *C.FDD_InfoServedNRCell_Information_t) (*entities.ServedNRCellInformation_ChoiceNRMode_FddInfo, error) { + var fddInfo *entities.ServedNRCellInformation_ChoiceNRMode_FddInfo + + if info, err := getNRFreqInfo(fdd.ul_NRFreqInfo); err == nil { + fddInfo = &entities.ServedNRCellInformation_ChoiceNRMode_FddInfo{UlFreqInfo: info} + } else { + return nil, err + } + + if info, err := getNRFreqInfo(fdd.dl_NRFreqInfo); err == nil { + fddInfo.DlFreqInfo = info + } else { + return nil, err + } + + if bw, err := getNR_TxBW(fdd.ul_NR_TxBW); err == nil { + fddInfo.UlTransmissionBandwidth = bw + } else { + return nil, err + } + + if bw, err := getNR_TxBW(fdd.dl_NR_TxBW); err == nil { + fddInfo.DlTransmissionBandwidth = bw + } else { + return nil, err + } + + return fddInfo, nil +} + +func getnrModeInfoTDDInfo(tdd *C.TDD_InfoServedNRCell_Information_t) (*entities.ServedNRCellInformation_ChoiceNRMode_TddInfo, error) { + var tddInfo *entities.ServedNRCellInformation_ChoiceNRMode_TddInfo + + if info, err := getNRFreqInfo(tdd.nRFreqInfo); err == nil { + tddInfo = &entities.ServedNRCellInformation_ChoiceNRMode_TddInfo{NrFreqInfo: info} + } else { + return nil, err + + } + + if bw, err := getNR_TxBW(tdd.nR_TxBW); err == nil { + tddInfo.TransmissionBandwidth = bw + } else { + return nil, err + } + + return tddInfo, nil +} + +func getNRNeighbourInformation_ChoiceNRMode_FDDInfo(fdd *C.FDD_InfoNeighbourServedNRCell_Information_t) (*entities.NrNeighbourInformation_ChoiceNRMode_FddInfo, error) { + var fddInfo *entities.NrNeighbourInformation_ChoiceNRMode_FddInfo + + if info, err := getNRFreqInfo(fdd.ul_NRFreqInfo); err == nil { + fddInfo = &entities.NrNeighbourInformation_ChoiceNRMode_FddInfo{UlarFcnFreqInfo: info} + } else { + return nil, err + } + + if info, err := getNRFreqInfo(fdd.dl_NRFreqInfo); err == nil { + fddInfo.DlarFcnFreqInfo = info + } else { + return nil, err + } + + return fddInfo, nil +} +func getNRNeighbourInformation_ChoiceNRMode_TDDInfo(tdd *C.TDD_InfoNeighbourServedNRCell_Information_t) (*entities.NrNeighbourInformation_ChoiceNRMode_TddInfo, error) { + var tddInfo *entities.NrNeighbourInformation_ChoiceNRMode_TddInfo + + if info, err := getNRFreqInfo(tdd.nRFreqInfo); err == nil { + tddInfo = &entities.NrNeighbourInformation_ChoiceNRMode_TddInfo{ArFcnNrFreqInfo: info} + } else { + return nil, err + } + + return tddInfo, nil +} + +func getnRNeighbourInfo(neighbour_Information *C.NRNeighbour_Information_t) ([]*entities.NrNeighbourInformation, error) { + var neighbours []*entities.NrNeighbourInformation + + if neighbour_Information != nil && neighbour_Information.list.count > 0 && neighbour_Information.list.count <= maxofNRNeighbours { + count:=int(neighbour_Information.list.count) + neighbour_Information_slice := (*[1 << 30]*C.NRNeighbour_Information__Member)(unsafe.Pointer(neighbour_Information.list.array))[:count:count] + for _, member := range neighbour_Information_slice { + info := &entities.NrNeighbourInformation{NrPci: uint32(member.nrpCI)} + + //pLMN_Identity:nRcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.nrCellID.pLMN_Identity.buf), C.int(member.nrCellID.pLMN_Identity.size)) + nRcellIdentifier := C.GoBytes(unsafe.Pointer(member.nrCellID.nRcellIdentifier.buf), C.int(member.nrCellID.nRcellIdentifier.size)) + info.NrCgi = fmt.Sprintf("%02x:%02x", plmnId, nRcellIdentifier) + + if member.fiveGS_TAC != nil { + info.Stac5G = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.fiveGS_TAC.buf), C.int(member.fiveGS_TAC.size))) + + } + + if member.configured_TAC != nil { + info.ConfiguredStac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.configured_TAC.buf), C.int(member.configured_TAC.size))) + } + switch member.nRNeighbourModeInfo.present { + case C.NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_fdd: + if fdd, err := getNRNeighbourInformation_ChoiceNRMode_FDDInfo(*(**C.FDD_InfoNeighbourServedNRCell_Information_t)(unsafe.Pointer(&member.nRNeighbourModeInfo.choice[0]))); fdd != nil && err == nil { + info.ChoiceNrMode, info.NrMode = &entities.NrNeighbourInformation_ChoiceNRMode{Fdd: fdd}, entities.Nr_FDD + } + + case C.NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_tdd: + if tdd, err := getNRNeighbourInformation_ChoiceNRMode_TDDInfo(*(**C.TDD_InfoNeighbourServedNRCell_Information_t)(unsafe.Pointer(&member.nRNeighbourModeInfo.choice[0]))); tdd != nil && err == nil { + info.ChoiceNrMode, info.NrMode = &entities.NrNeighbourInformation_ChoiceNRMode{Tdd: tdd}, entities.Nr_TDD + } + } + neighbours = append(neighbours, info) + } + + } + + return neighbours, nil +} + +func getServedNRCells(servedNRcellsManagementList *C.ServedNRcellsENDCX2ManagementList_t) ([]*entities.ServedNRCell, error) { + var servedNRCells []*entities.ServedNRCell + + if servedNRcellsManagementList != nil && servedNRcellsManagementList.list.count > 0 && servedNRcellsManagementList.list.count <= maxCellinengNB { + count :=int(servedNRcellsManagementList.list.count) + servedNRcellsENDCX2ManagementList__Member_slice := (*[1 << 30]*C.ServedNRcellsENDCX2ManagementList__Member)(unsafe.Pointer(servedNRcellsManagementList.list.array))[:count:count] + for _, servedNRcellsENDCX2ManagementList__Member := range servedNRcellsENDCX2ManagementList__Member_slice { + servedNRCellInfo := servedNRcellsENDCX2ManagementList__Member.servedNRCellInfo + servedNRCell := &entities.ServedNRCell{ServedNrCellInformation: &entities.ServedNRCellInformation{NrPci: uint32(servedNRCellInfo.nrpCI)}} + + //pLMN_Identity:nRcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(servedNRCellInfo.nrCellID.pLMN_Identity.buf), C.int(servedNRCellInfo.nrCellID.pLMN_Identity.size)) + nRcellIdentifier := C.GoBytes(unsafe.Pointer(servedNRCellInfo.nrCellID.nRcellIdentifier.buf), C.int(servedNRCellInfo.nrCellID.nRcellIdentifier.size)) + servedNRCell.ServedNrCellInformation.CellId = fmt.Sprintf("%02x:%02x", plmnId, nRcellIdentifier) + + if servedNRCellInfo.fiveGS_TAC != nil { + servedNRCell.ServedNrCellInformation.Stac5G = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(servedNRCellInfo.fiveGS_TAC.buf), C.int(servedNRCellInfo.fiveGS_TAC.size))) + } + + if servedNRCellInfo.configured_TAC != nil { + servedNRCell.ServedNrCellInformation.ConfiguredStac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(servedNRCellInfo.configured_TAC.buf), C.int(servedNRCellInfo.configured_TAC.size))) + } + + if servedNRCellInfo.broadcastPLMNs.list.count > 0 && servedNRCellInfo.broadcastPLMNs.list.count <= maxnoofBPLMNs { + count:=int(servedNRCellInfo.broadcastPLMNs.list.count) + pLMN_Identity_slice := (*[1 << 30]*C.PLMN_Identity_t)(unsafe.Pointer(servedNRCellInfo.broadcastPLMNs.list.array))[:count:count] + for _, pLMN_Identity := range pLMN_Identity_slice { + servedNRCell.ServedNrCellInformation.ServedPlmns = append(servedNRCell.ServedNrCellInformation.ServedPlmns, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(pLMN_Identity.buf), C.int(pLMN_Identity.size)))) + } + } + switch servedNRCellInfo.nrModeInfo.present { + case C.ServedNRCell_Information__nrModeInfo_PR_fdd: + if fdd, err := getnrModeInfoFDDInfo(*(**C.FDD_InfoServedNRCell_Information_t)(unsafe.Pointer(&servedNRCellInfo.nrModeInfo.choice[0]))); fdd != nil && err == nil { + servedNRCell.ServedNrCellInformation.ChoiceNrMode, servedNRCell.ServedNrCellInformation.NrMode = &entities.ServedNRCellInformation_ChoiceNRMode{Fdd: fdd}, entities.Nr_FDD + } else { + return nil, err + } + case C.ServedNRCell_Information__nrModeInfo_PR_tdd: + if tdd, err := getnrModeInfoTDDInfo(*(**C.TDD_InfoServedNRCell_Information_t)(unsafe.Pointer(&servedNRCellInfo.nrModeInfo.choice[0]))); tdd != nil && err == nil { + servedNRCell.ServedNrCellInformation.ChoiceNrMode, servedNRCell.ServedNrCellInformation.NrMode = &entities.ServedNRCellInformation_ChoiceNRMode{Tdd: tdd}, entities.Nr_TDD + } else { + return nil, err + } + } + + neighbours, err := getnRNeighbourInfo(servedNRcellsENDCX2ManagementList__Member.nRNeighbourInfo) + if err != nil { + return nil, err + } + servedNRCell.NrNeighbourInfos = neighbours + + servedNRCells = append(servedNRCells, servedNRCell) + } + } + + return servedNRCells, nil +} + +// Populate the GNB structure with data from the pdu +// Return the GNB and the associated key which can later be used to retrieve the GNB from the database. + +func endcX2SetupResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.GlobalNbId, *entities.Gnb, error) { + + var gnb *entities.Gnb + var globalNbId *entities.GlobalNbId + + if pdu.present == C.E2AP_PDU_PR_successfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + successfulOutcome := *(**C.SuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if successfulOutcome != nil && successfulOutcome.value.present == C.SuccessfulOutcome__value_PR_ENDCX2SetupResponse { + endcX2SetupResponse := (*C.ENDCX2SetupResponse_t)(unsafe.Pointer(&successfulOutcome.value.choice[0])) + if endcX2SetupResponse != nil && endcX2SetupResponse.protocolIEs.list.count > 0 { + count:=int(endcX2SetupResponse.protocolIEs.list.count) + endcX2SetupResponse_IEs_slice := (*[1 << 30]*C.ENDCX2SetupResponse_IEs_t)(unsafe.Pointer(endcX2SetupResponse.protocolIEs.list.array))[:count:count] + for _, endcX2SetupResponse_IE := range endcX2SetupResponse_IEs_slice { + if endcX2SetupResponse_IE.value.present == C.ENDCX2SetupResponse_IEs__value_PR_RespondingNodeType_EndcX2Setup { + respondingNodeType := (*C.RespondingNodeType_EndcX2Setup_t)(unsafe.Pointer(&endcX2SetupResponse_IE.value.choice[0])) + switch respondingNodeType.present { + case C.RespondingNodeType_EndcX2Setup_PR_respond_en_gNB: + en_gNB_ENDCX2SetupReqAckIEs_Container := *(**C.ProtocolIE_Container_119P89_t)(unsafe.Pointer(&respondingNodeType.choice[0])) + if en_gNB_ENDCX2SetupReqAckIEs_Container != nil && en_gNB_ENDCX2SetupReqAckIEs_Container.list.count > 0 { + count:=int(en_gNB_ENDCX2SetupReqAckIEs_Container.list.count) + en_gNB_ENDCX2SetupReqAckIEs_slice := (*[1 << 30]*C.En_gNB_ENDCX2SetupReqAckIEs_t)(unsafe.Pointer(en_gNB_ENDCX2SetupReqAckIEs_Container.list.array))[:count:count] + for _, en_gNB_ENDCX2SetupReqAckIE := range en_gNB_ENDCX2SetupReqAckIEs_slice { + switch en_gNB_ENDCX2SetupReqAckIE.value.present { + case C.En_gNB_ENDCX2SetupReqAckIEs__value_PR_GlobalGNB_ID: + globalGNB_ID := (*C.GlobalGNB_ID_t)(unsafe.Pointer(&en_gNB_ENDCX2SetupReqAckIE.value.choice[0])) + plmnId := C.GoBytes(unsafe.Pointer(globalGNB_ID.pLMN_Identity.buf), C.int(globalGNB_ID.pLMN_Identity.size)) + if globalGNB_ID.gNB_ID.present == C.GNB_ID_PR_gNB_ID { + gnbIdAsBitString := (*C.BIT_STRING_t)(unsafe.Pointer(&globalGNB_ID.gNB_ID.choice[0])) + globalNbId = &entities.GlobalNbId{} + globalNbId.NbId = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(gnbIdAsBitString.buf), C.int(gnbIdAsBitString.size))) + globalNbId.PlmnId = fmt.Sprintf("%02x", plmnId) + } + case C.En_gNB_ENDCX2SetupReqAckIEs__value_PR_ServedNRcellsENDCX2ManagementList: + servedCells, err := getServedNRCells((*C.ServedNRcellsENDCX2ManagementList_t)(unsafe.Pointer(&en_gNB_ENDCX2SetupReqAckIE.value.choice[0]))) + if err != nil { + return globalNbId, nil, err + } + gnb = &entities.Gnb{} + gnb.ServedNrCells = servedCells + } + } + } + case C.RespondingNodeType_EndcX2Setup_PR_respond_eNB: + /*ignored*/ + } + } + } + } + } + } + + return globalNbId, gnb, nil +} + +func unpackEndcX2SetupResponseAndExtract(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*entities.GlobalNbId, *entities.Gnb, error) { + pdu, err := unpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, nil, err + } + + defer C.delete_pdu(pdu) + return endcX2SetupResponseToProtobuf(pdu) +} diff --git a/E2Manager/handlers/endc_x2setupResponseToProtobuf_test.go b/E2Manager/handlers/endc_x2setupResponseToProtobuf_test.go new file mode 100644 index 0000000..5fe9147 --- /dev/null +++ b/E2Manager/handlers/endc_x2setupResponseToProtobuf_test.go @@ -0,0 +1,632 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/logger" + "e2mgr/rNibWriter" + "fmt" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb + */ + +func TestUnpackEndcX2SetupResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + saveToRNib bool + key *entities.GlobalNbId + gnb string + packedPdu string + failure error + }{ + { + saveToRNib: false, //TODO: use MOCK? + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x12 + measurementTimingConfiguration_t = 3e 4e 5e + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x11 + measurementTimingConfiguration_t = 3e 4e 5e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0 + + */ + packedPdu: "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a00021a0044033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000"}, + { + saveToRNib: false, + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x10 + measurementTimingConfiguration_t = 3e 4e 5e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x6 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x1 + + */ + packedPdu: "2024006500000100f6005e40000200fc00090002f829504a952a0a00fd004a00004c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000209e040033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400050000150400000a00061820"}, + + { + saveToRNib: false, + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x12 + measurementTimingConfiguration_t = 3e 4e 5e + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x8 + nrCellID_t + pLMN_Identity_t = 2e 3f 45 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 4f aa 3c + configured_TAC_t = 1a 2f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 50 32 1e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x4 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x7 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x3 + sULInformation_t + sUL_ARFCN_t = 0x8 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x11 + measurementTimingConfiguration_t = 50 32 1e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0 + */ + packedPdu: "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0008002e3f451f2e3d4ff04faa3c1a2f0050321e4400040000060400000200081a00440350321e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000"}, + + { + saveToRNib: false, + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > dl_freq_info: > ul_transmission_bandwidth: dl_transmission_bandwidth: > > > nr_neighbour_infos: > dlar_fcn_freq_info: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + fdd_t + ul_NRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x2c + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x21 + dl_NRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + ul_NR_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0 + dl_NR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x13 + measurementTimingConfiguration_t = 01 02 03 + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 01 02 03 + nRNeighbourModeInfo_t: + fdd_t + ul_NRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + dl_NRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + + + */ + packedPdu: "2024006b00000100f6006440000200fc00090002f829504a952a0a00fd00500000400005001e3f271f2e3d4ff03e4e5e00000500002b0400002000010000150400000a18004c03010203000000002c001e3f271f2e3d4ff0030102030000050000150400000a00010000150400000a"}, + + + { + saveToRNib: false, + key: &entities.GlobalNbId{PlmnId:"04a5c1", NbId:"4fc52bff"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 04 a5 c1 + gNB_ID_t: + gNB_ID_t = 4f c5 2b ff (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x9 + nrCellID_t + pLMN_Identity_t = ae af a7 + nRcellIdentifier_t = 2a 3e 3b 4c d0 (36 bits) + fiveGS_TAC_t = 7d 47 73 + configured_TAC_t = 47 7f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 7e 7e 7e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x8 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x9 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0x1 + measurementTimingConfiguration_t = 7e 7e 7e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 5a 5f f1 + nRcellIdentifier_t = 2a 3e 3b 4c d0 (36 bits) + measurementTimingConfiguration_t = 5a 5f f1 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x4 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x3 + sULInformation_t + sUL_ARFCN_t = 0x6 + sUL_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x1 + NRNeighbour_Information_elm + nrpCI_t = 0x9 + nrCellID_t + pLMN_Identity_t = 5d 5c aa + nRcellIdentifier_t = af 3e 35 4a c0 (36 bits) + measurementTimingConfiguration_t = 5d 5c aa + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x7 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x3 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x1 + sULInformation_t + sUL_ARFCN_t = 0x8 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x3 + */ + packedPdu: "202400808200000100f6007b40000200fc00090004a5c1504fc52bff00fd006700004c000900aeafa72a3e3b4cd07d4773477f007e7e7e4400080000150400000a0009020204037e7e7e000100002c005a5ff12a3e3b4cd0035a5ff144000500000304000002000608200009005d5caaaf3e354ac0035d5caa4400070000020400000000081860"}, + + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952aaa"}, + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a aa (32 bits) + */ + packedPdu: "2024001700000100f6001040000100fc00090002f829504a952aaa", + + failure: fmt.Errorf("getList for path [successfulOutcome_t ENDCX2SetupResponse protocolIEs_t ProtocolIE_Container_elm RespondingNodeType-EndcX2Setup respond_en_gNB_t ProtocolIE_Container_elm ServedNRcellsENDCX2ManagementList ServedNRcellsENDCX2ManagementList_elm servedNRCellInfo_t nrpCI_t] failed, rc = 1" /*NO_ITEMS*/),}, + } + + initDb_f := true + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + key, gnb, err := unpackEndcX2SetupResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if key == nil { + if tc.failure == nil { + t.Errorf("want: key=%v, got: empty key", tc.key) + } + } else { + if strings.Compare(key.PlmnId, tc.key.PlmnId) != 0 || strings.Compare(key.NbId, tc.key.NbId) != 0{ + t.Errorf("want: key=%v, got: %v", tc.key, key) + } + } + + if gnb == nil { + if tc.failure == nil { + t.Errorf("want: enb=%s, got: empty enb", tc.gnb) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Configuration = &entities.NodebInfo_Gnb{Gnb:gnb} + gnbStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, gnb.ServedNrCells) + if !strings.EqualFold(gnbStr, tc.gnb) { + t.Errorf("want: enb=%s, got: %s", tc.gnb, gnbStr) + } + + // Save to rNib + if tc.saveToRNib { + if initDb_f { + rNibWriter.Init("e2Manager", 1) + initDb_f = false + } + nbIdentity := &entities.NbIdentity{InventoryName:"RanName", GlobalNbId:key} + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + if tc.failure == nil { + t.Errorf("rNibWriter failed to save ENB. Error: %v\n", rNibErr.Error()) + } else { + if strings.Compare(rNibErr.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, rNibErr.Error()) + } + } + } + } + } + }) + } +} + diff --git a/E2Manager/handlers/handler.go b/E2Manager/handlers/handler.go new file mode 100644 index 0000000..2a53c00 --- /dev/null +++ b/E2Manager/handlers/handler.go @@ -0,0 +1,32 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/sessions" + "sync" + "time" +) + +type Handler interface { + PreHandle(logger *logger.Logger, details *models.RequestDetails) error + CreateMessage(logger *logger.Logger, details *models.RequestDetails, messageChannel chan *models.E2RequestMessage, e2sessions sessions.E2Sessions, startTime time.Time, wg sync.WaitGroup) + GetMessageType() int +} diff --git a/E2Manager/handlers/notification_handler.go b/E2Manager/handlers/notification_handler.go new file mode 100644 index 0000000..3a31a30 --- /dev/null +++ b/E2Manager/handlers/notification_handler.go @@ -0,0 +1,28 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/sessions" +) + +type NotificationHandler interface { + Handle(*logger.Logger, sessions.E2Sessions, *models.NotificationRequest, chan<- *models.NotificationResponse) +} diff --git a/E2Manager/handlers/ranLostConnectionHandler.go b/E2Manager/handlers/ranLostConnectionHandler.go new file mode 100644 index 0000000..0404e74 --- /dev/null +++ b/E2Manager/handlers/ranLostConnectionHandler.go @@ -0,0 +1,81 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/sessions" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" +) + +type RanLostConnectionHandler struct{ + rnibReaderProvider func() reader.RNibReader + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewRanLostConnectionHandler(rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) RanLostConnectionHandler { + return RanLostConnectionHandler{ + rnibReaderProvider: rnibReaderProvider, + rnibWriterProvider: rnibWriterProvider, + } +} +func (src RanLostConnectionHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + logger.Warnf("#ranLostConnectionHandler.Handle - Received lost connection (transaction id = %s): %s", request.TransactionId, request.Payload) + + var nb *entities.NodebInfo + var rNibErr common.IRNibError + if nb, rNibErr = src.rnibReaderProvider().GetNodeb(request.RanName); rNibErr != nil { + logger.Errorf("#ranLostConnectionHandler.Handle - transactionId %s: rNib reader failed to retrieve nb entity with RanName: %s. Error: %s", request.TransactionId, request.RanName, rNibErr.Error()) + } else { + logger.Debugf("#ranLostConnectionHandler.Handle - transactionId %s: nb entity has been retrieved. RanName %s, ConnectionStatus %s", request.TransactionId, nb.RanName, nb.ConnectionStatus) + changeNodebState(logger, nb) + nbIdentity := &entities.NbIdentity{InventoryName:nb.RanName, GlobalNbId:nb.GlobalNbId} + if rNibErr = src.rnibWriterProvider().SaveNodeb(nbIdentity, nb); rNibErr != nil { + logger.Errorf("#ranLostConnectionHandler.Handle - transactionId %s: rNibWriter failed to save nb entity %s. Error: %s", request.TransactionId, nb.RanName, rNibErr.Error()) + } else { + logger.Infof("#ranLostConnectionHandler.Handle - transactionId %s: saved to rNib", request.TransactionId) + logger.Debugf("#ranLostConnectionHandler.Handle - transactionId %s: saved to rNib. RanName %s, ConnectionStatus %v", request.TransactionId, nb.RanName, nb.ConnectionStatus) + + } + } + e2session, ok := e2Sessions[request.TransactionId] + printHandlingSetupResponseElapsedTimeInMs(logger, "#ranLostConnectionHandler.Handle - Summary: Elapsed time for receiving and handling sctp error response from E2 terminator", request.StartTime) + if ok { + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#ranLostConnectionHandler.Handle- Summary: Total roundtrip elapsed time for transactionId %s", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } + +} + +func changeNodebState(logger *logger.Logger, nb *entities.NodebInfo) { + switch nb.ConnectionStatus{ + case entities.ConnectionStatus_CONNECTED, entities.ConnectionStatus_CONNECTING, entities.ConnectionStatus_CONNECTED_SETUP_FAILED: + nb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + case entities.ConnectionStatus_DISCONNECTED: + logger.Infof("#ranLostConnectionHandler.changeNodebState - nb entity with ConnectionStatus %v occurred. RanName: %s", nb.ConnectionStatus, nb.RanName) + default: + nb.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + } +} diff --git a/E2Manager/handlers/ranLostConnectionHandler_test.go b/E2Manager/handlers/ranLostConnectionHandler_test.go new file mode 100644 index 0000000..c54899b --- /dev/null +++ b/E2Manager/handlers/ranLostConnectionHandler_test.go @@ -0,0 +1,328 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/stretchr/testify/mock" + "testing" + "time" +) + +/* + * Test an error response while in an x2 setup request session + */ +func TestHandleInSession(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleInSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + xaction := []byte(fmt.Sprintf("%32s", "1234")) + e2Sessions[string(xaction)] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, + StartTime: time.Now(), TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) + + if _, ok := e2Sessions[string(xaction)]; ok { + t.Errorf("want: no session entry, got: session entry for: %s", string(xaction) ) + } +} + +/* + * Test an error response triggered by the E2 Term + */ + +func TestHandleNoSession(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) + + if _, ok := e2Sessions[transactionId]; !ok { + t.Errorf("want: session entry for %s, got: no session entry", transactionId ) + } +} +/* + * Test an error response triggered by the E2 Term + */ +func TestHandleUnsolicitedDisconnectionConnectedSuccess(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} + +func TestHandleUnsolicitedDisconnectionNotConnectedSuccess(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} + +func TestHandleUnsolicitedDisconnectionShuttingDownSuccess(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} + +func TestHandleUnsolicitedDisconnectionShutDownSuccess(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} + +func TestHandleUnsolicitedDisconnectionReaderFailure(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + var nb *entities.NodebInfo + rnibErr := common.RNibError{} + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} + +func TestHandleUnsolicitedDisconnectionWriterFailure(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err) + } + + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider) + + e2Sessions := make(sessions.E2Sessions) + transactionId := "1234" + xaction := []byte(fmt.Sprintf("%32s", transactionId+"6")) + e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()} + payload := []byte("Error") + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: string(xaction)} + var messageChannel chan<- *models.NotificationResponse + + nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,} + var rnibErr common.IRNibError + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,} + writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(common.RNibError{}) + + h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel) +} diff --git a/E2Manager/handlers/request_handler.go b/E2Manager/handlers/request_handler.go new file mode 100644 index 0000000..4b93a61 --- /dev/null +++ b/E2Manager/handlers/request_handler.go @@ -0,0 +1,27 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" +) + +type RequestHandler interface { + Handle(logger *logger.Logger, request *models.Request, rmrResponseChannel chan<- *models.NotificationResponse) error +} diff --git a/E2Manager/handlers/ric_enb_load_information_notification_handler.go b/E2Manager/handlers/ric_enb_load_information_notification_handler.go new file mode 100644 index 0000000..ff15c21 --- /dev/null +++ b/E2Manager/handlers/ric_enb_load_information_notification_handler.go @@ -0,0 +1,23 @@ +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/sessions" +) + +type RicEnbLoadInformationNotificationHandler struct{} + + +func (src RicEnbLoadInformationNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + notification, err := unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + logger.Errorf("#ric_enb_load_information_notification_handler.Handle - unpack failed. Error: %v", err) + } + + logger.Infof("#ric_enb_load_information_notification_handler.handle - Enb load information notification message received") + logger.Debugf("#ric_enb_load_information_notification_handler.handle - Enb load information notification message payload: %s", notification.pduPrint) +} diff --git a/E2Manager/handlers/setup_request_handler.go b/E2Manager/handlers/setup_request_handler.go new file mode 100644 index 0000000..146bdfb --- /dev/null +++ b/E2Manager/handlers/setup_request_handler.go @@ -0,0 +1,151 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/rNibWriter" + "e2mgr/rnibBuilders" + "fmt" + "os" + "sync" + "time" + + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" +) + +const ( + ENV_RIC_ID = "RIC_ID" + MaxAsn1CodecAllocationBufferSize = 64 * 1024 + MaxAsn1PackedBufferSize = 4096 + MaxAsn1CodecMessageBufferSize = 4096 +) + +const ( + shortMacro_eNB_ID = 18 + macro_eNB_ID = 20 + longMacro_eNB_ID = 21 + home_eNB_ID = 28 +) + +/*The Ric Id is the combination of pLMNId and ENBId*/ +var pLMNId []byte +var eNBId []byte +var eNBIdBitqty uint +var ricFlag = [3]byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + +type SetupRequestHandler struct { + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewSetupRequestHandler(rnibWriterProvider func() rNibWriter.RNibWriter) *SetupRequestHandler { + return &SetupRequestHandler{ + rnibWriterProvider: rnibWriterProvider, + } +} + +func (handler SetupRequestHandler) PreHandle(logger *logger.Logger, details *models.RequestDetails) error { + nodebInfo, nodebIdentity := rnibBuilders.CreateInitialNodeInfo(details) + + rNibErr := handler.rnibWriterProvider().SaveNodeb(nodebIdentity, nodebInfo) + if rNibErr != nil { + logger.Errorf("#setup_request_handler.PreHandle - failed to save initial nodeb entity for ran name: %v in RNIB. Error: %s", details.RanName, rNibErr.Error()) + } else { + logger.Infof("#setup_request_handler.PreHandle - initial nodeb entity for ran name: %v was saved to RNIB ", details.RanName) + } + + return rNibErr +} + +func (SetupRequestHandler) CreateMessage(logger *logger.Logger, requestDetails *models.RequestDetails, messageChannel chan *models.E2RequestMessage, e2sessions sessions.E2Sessions, startTime time.Time, wg sync.WaitGroup) { + + wg.Add(1) + + payload, err := packX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, eNBId, eNBIdBitqty) + if err != nil { + logger.Errorf("#setup_request_handler.CreateMessage - pack was failed. Error: %v", err) + } else { + transactionId := requestDetails.RanName + e2sessions[transactionId] = sessions.E2SessionDetails{SessionStart: startTime, Request: requestDetails} + setupRequestMessage := models.NewE2RequestMessage(transactionId, requestDetails.RanIp, requestDetails.RanPort, requestDetails.RanName, payload) + + logger.Debugf("#setup_request_handler.CreateMessage - setupRequestMessage was created successfully. setup request details(transactionId = [%s]): %+v", transactionId, setupRequestMessage) + messageChannel <- setupRequestMessage + } + + wg.Done() +} + +func asn1bstringToString(val []byte, numBits uint) string { + // Take the last byte + c := val[len(val)-1] + + b := numBits % 8 + + // If num bits is not evenly divisable by 8 ... + if b != 0 { + // ... shift the value to the higher bits (in our case: 0x0b -> 0xb0) + c <<= 8 - b + } + + if len(val) == 1 { + return fmt.Sprintf("%02x", c) + } + return fmt.Sprintf("%02x%02x", val[:len(val)-1], c) +} + +//Expected value in RIC_ID = pLMN_Identity-eNB_ID/ +//<6 hex digits>-<6 or 8 hex digits>/<18|20|21|28> +//Each byte is represented by two hex digits, the value in the lowest byte of the eNB_ID must be assigned to the lowest bits +//For example, to get the value of ffffeab/28 the last byte must be 0x0b, not 0xb0 (-ffffea0b/28). +func parseRicID(ricId string) error { + if _, err := fmt.Sscanf(ricId, "%6x-%8x/%2d", &pLMNId, &eNBId, &eNBIdBitqty); err != nil { + return fmt.Errorf("unable to extract the value of %s: %s", ENV_RIC_ID, err) + } + + if len(pLMNId) < 3 { + return fmt.Errorf("invalid value for %s, len(pLMNId:%v) != 3", ENV_RIC_ID, pLMNId) + } + + if len(eNBId) < 3 { + return fmt.Errorf("invalid value for %s, len(eNBId:%v) != 3 or 4", ENV_RIC_ID, eNBId) + } + + if eNBIdBitqty != shortMacro_eNB_ID && eNBIdBitqty != macro_eNB_ID && eNBIdBitqty != longMacro_eNB_ID && eNBIdBitqty != home_eNB_ID { + return fmt.Errorf("invalid value for %s, eNBIdBitqty: %d", ENV_RIC_ID, eNBIdBitqty) + } + + return nil +} + +//TODO: remove Get +func (SetupRequestHandler) GetMessageType() int { + return rmrCgo.RIC_X2_SETUP_REQ +} + +func init() { + ricId := os.Getenv(ENV_RIC_ID) + //ricId="bbbccc-ffff0e/20" + //ricId="bbbccc-abcd0e/20" + if err := parseRicID(ricId); err != nil { + panic(err) + } + +} diff --git a/E2Manager/handlers/setup_request_handler_test.go b/E2Manager/handlers/setup_request_handler_test.go new file mode 100644 index 0000000..f0de7c4 --- /dev/null +++ b/E2Manager/handlers/setup_request_handler_test.go @@ -0,0 +1,166 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "bytes" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/sessions" + "fmt" + "github.com/stretchr/testify/assert" + "strings" + "sync" + "testing" + "time" +) + +func TestNewSetupRequestHandler(t *testing.T) { + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + h := NewSetupRequestHandler(rnibWriterProvider) + assert.NotNil(t, h) +} + +func TestCreateMessageSuccess(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#setup_request_handler_test.TestCreateMessageSuccess - failed to initialize logger, error: %s", err) + } + messageChannel := make(chan *models.E2RequestMessage) + assert.NotPanics(t, func() { createMsg(log, messageChannel) }) + assert.NotEmpty(t, <-messageChannel) +} + +func TestParseRicId(t *testing.T) { + var testCases = []struct { + ricId string + pLMNId []byte + eNBId []byte + eNBIdBitqty uint + failure error + }{ + { + ricId: "bbbccc-abcd02/18", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: shortMacro_eNB_ID, + }, + { + ricId: "bbbccc-abcd0e/20", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: macro_eNB_ID, + }, + { + ricId: "bbbccc-abcd07/21", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: longMacro_eNB_ID, + }, + { + ricId: "bbbccc-abcdef08/28", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: home_eNB_ID, + }, + { + ricId: "", + failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"), + }, + + { + ricId: "bbbccc", + failure: fmt.Errorf("unable to extract the value of RIC_ID: unexpected EOF"), + }, + { + ricId: "bbbccc-", + failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"), + }, + { + ricId: "-bbbccc", + failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"), + }, + { + ricId: "/20", + failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"), + }, + { + ricId: "bbbcccdd-abcdef08/28", // pLMNId too long + failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"), + }, + { + ricId: "bbbccc-abcdef0809/28", // eNBId too long + failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"), + }, + + { + ricId: "bbbc-abcdef08/28", // pLMNId too short + failure: fmt.Errorf("invalid value for RIC_ID, len(pLMNId:[187 188]) != 3"), + }, + { + ricId: "bbbccc-abcd/28", // eNBId too short + failure: fmt.Errorf("invalid value for RIC_ID, len(eNBId:[171 205]) != 3 or 4"), + }, + { + ricId: "bbbccc-abcdef08/239", // bit quantity too long - no error, will return 23 (which is invalid) + failure: fmt.Errorf("invalid value for RIC_ID, eNBIdBitqty: 23"), + }, + } + + for _, tc := range testCases { + t.Run(tc.ricId, func(t *testing.T) { + + err := parseRicID(tc.ricId) + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: parse failed. Error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s\n", err, tc.failure) + } + } + } else { + if bytes.Compare(tc.pLMNId, pLMNId) != 0 { + t.Errorf("want: pLMNId = %v, got: pLMNId = %v", tc.pLMNId, pLMNId) + } + + if bytes.Compare(tc.eNBId, eNBId) != 0 { + t.Errorf("want: eNBId = %v, got: eNBId = %v", tc.eNBId, eNBId) + } + + if tc.eNBIdBitqty != eNBIdBitqty { + t.Errorf("want: eNBIdBitqty = %d, got: eNBIdBitqty = %d", tc.eNBIdBitqty, eNBIdBitqty) + } + } + }) + } +} +func createMsg(log *logger.Logger, messageChannel chan *models.E2RequestMessage) { + h := SetupRequestHandler{} + E2Sessions := make(sessions.E2Sessions) + var wg sync.WaitGroup + var rd models.RequestDetails + go h.CreateMessage(log, &rd, messageChannel, E2Sessions, time.Now(), wg) + wg.Wait() +} diff --git a/E2Manager/handlers/setup_response_notification_handler.go b/E2Manager/handlers/setup_response_notification_handler.go new file mode 100644 index 0000000..121c65b --- /dev/null +++ b/E2Manager/handlers/setup_response_notification_handler.go @@ -0,0 +1,51 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import "C" +import ( + "e2mgr/models" + "fmt" + "time" + + "e2mgr/logger" + "e2mgr/sessions" +) + +type SetupResponseNotificationHandler struct{} + +func (src SetupResponseNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + refinedResponse, err := unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + logger.Errorf("#setup_response_notification_handler.Handle - unpack failed. Error: %v", err) + } + + e2session, ok := e2Sessions[request.TransactionId] + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#setupResponseNotificationHandler.handle - transactionId %s: Summary: Elapsed time for receiving and handling setup response from E2 terminator", request.TransactionId), request.StartTime) + if ok { + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#setupResponseNotificationHandler.handle - transactionId %s: Summary: Total roundtrip elapsed time", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } + logger.Debugf("#setupResponseNotificationHandler.handle - transactionId %s: PDU: %v", request.TransactionId, refinedResponse.pduPrint) +} + +func printHandlingSetupResponseElapsedTimeInMs(logger *logger.Logger, msg string, startTime time.Time) { + logger.Infof("%s: %f ms", msg, float64(time.Since(startTime))/float64(time.Millisecond)) +} diff --git a/E2Manager/handlers/setup_response_notification_handler_test.go b/E2Manager/handlers/setup_response_notification_handler_test.go new file mode 100644 index 0000000..f57df71 --- /dev/null +++ b/E2Manager/handlers/setup_response_notification_handler_test.go @@ -0,0 +1,60 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "e2mgr/tests" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +func TestHandleSuccess(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#setup_request_handler_test.TestHandleSuccess - failed to initialize logger, error: %s", err) + } + h := SetupResponseNotificationHandler{} + E2Sessions := make(sessions.E2Sessions) + + payload := tests.GetPackedPayload(t) + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + var messageChannel chan<- *models.NotificationResponse + + assert.NotPanics(t, func(){h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel)}) +} + +func TestHandleFailure(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#setup_request_handler_test.TestHandleFailure - failed to initialize logger, error: %s", err) + } + h := SetupResponseNotificationHandler{} + E2Sessions := make(sessions.E2Sessions) + + mBuf := rmrCgo.NewMBuf(tests.MessageType, 4,"RanName", &tests.DummyPayload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + var messageChannel chan<- *models.NotificationResponse + + assert.Panics(t, func(){h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel)}) +} \ No newline at end of file diff --git a/E2Manager/handlers/x2Setup_failure_response_notification_handler.go b/E2Manager/handlers/x2Setup_failure_response_notification_handler.go new file mode 100644 index 0000000..fb9c602 --- /dev/null +++ b/E2Manager/handlers/x2Setup_failure_response_notification_handler.go @@ -0,0 +1,67 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/sessions" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type X2SetupFailureResponseNotificationHandler struct{} + +func (src X2SetupFailureResponseNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + e2session, ok := e2Sessions[request.TransactionId] + + failureResponse, err := unpackX2SetupFailureResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + logger.Errorf("#x2Setup_failure_response_notification_handler.Handle - unpack failed. Error: %v", err) + } + + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#x2Setup_failure_response_notification_handler.handle - transactionId %s: Summary: Elapsed time for receiving and handling setup response from E2 terminator", request.TransactionId), request.StartTime) + if ok { + if failureResponse != nil { + nb := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.Ip = e2session.Request.RanIp + nb.Port = uint32(e2session.Request.RanPort) + nb.SetupFailure = failureResponse + nb.FailureType = entities.Failure_X2_SETUP_FAILURE + nbIdentity.InventoryName = e2session.Request.RanName + + //insert/update database + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + logger.Errorf("#x2Setup_failure_response_notification_handler.Handle - transactionId %s: rNibWriter failed to save failure response data. Error: %s", request.TransactionId, rNibErr.Error()) + } else { + logger.Infof("#x2Setup_failure_response_notification_handler.Handle - transactionId %s: saved to rNib", request.TransactionId) + if logger.DebugEnabled() { + logger.Debugf("x2Setup_failure_response_notification_handler.Handle - transactionId %s: saved to rNib , value:[%s]", request.TransactionId, fmt.Sprintf("%s %s", nb.ConnectionStatus, failureResponse)) + } + } + } + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#x2Setup_failure_response_notification_handler.handle - transactionId %s: Summary: Total roundtrip elapsed time", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } +} diff --git a/E2Manager/handlers/x2apPdu_asn1_unpacker.go b/E2Manager/handlers/x2apPdu_asn1_unpacker.go new file mode 100644 index 0000000..89ec216 --- /dev/null +++ b/E2Manager/handlers/x2apPdu_asn1_unpacker.go @@ -0,0 +1,77 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +type X2PduRefinedResponse struct { + pduPrint string +} + +func unpackX2apPdu(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) { + pdu := C.new_pdu(C.ulong(allocationBufferSize)) + + if pdu == nil { + return nil, errors.New("allocation failure (pdu)") + } + + logger.Infof("#x2apPdu_asn1_unpacker.unpackX2apPdu - Packed pdu(%d):%x", packedBufferSize, packedBuf) + + errBuf := make([]C.char, maxMessageBufferSize) + if !C.per_unpack_pdu(pdu, C.ulong(packedBufferSize), (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0]) { + return nil, errors.New(fmt.Sprintf("unpacking error: %s", C.GoString(&errBuf[0]))) + } + + if logger.DebugEnabled() { + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPdu - PDU: %v packed size:%d", C.GoString(&errBuf[0]), packedBufferSize) + } + + return pdu, nil +} + +func unpackX2apPduAndRefine(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*X2PduRefinedResponse, error) { + pdu, err := unpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + var refinedResponse = "" + if logger.DebugEnabled() { + buf := make([]C.char, 16*maxMessageBufferSize) + C.asn1_pdu_printer(pdu, C.size_t(len(buf)), &buf[0]) + refinedResponse = C.GoString(&buf[0]) + } + + return &X2PduRefinedResponse{pduPrint: refinedResponse}, nil +} + + + diff --git a/E2Manager/handlers/x2apPdu_asn1_unpacker_test.go b/E2Manager/handlers/x2apPdu_asn1_unpacker_test.go new file mode 100644 index 0000000..89527f5 --- /dev/null +++ b/E2Manager/handlers/x2apPdu_asn1_unpacker_test.go @@ -0,0 +1,128 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +/* + * Unpack an x2setup response returned from RAN. + * Verify it matches the want pdu. + */ + +func TestUnpackX2apSetupResponse(t *testing.T) { + logger, _ := logger.InitLogger(logger.DebugLevel) + + wantPduAsStr := `SuccessfulOutcome ::= { + procedureCode: 6 + criticality: 0 (reject) + value: X2SetupResponse ::= { + protocolIEs: ProtocolIE-Container ::= { + X2SetupResponse-IEs ::= { + id: 21 + criticality: 0 (reject) + value: GlobalENB-ID ::= { + pLMN-Identity: 02 F8 29 + eNB-ID: 00 7A 80 (4 bits unused) + } + } + X2SetupResponse-IEs ::= { + id: 20 + criticality: 0 (reject) + value: ServedCells ::= { + SEQUENCE ::= { + servedCellInfo: ServedCell-Information ::= { + pCI: 99 + cellId: ECGI ::= { + pLMN-Identity: 02 F8 29 + eUTRANcellIdentifier: 00 07 AB 50 (4 bits unused) + } + tAC: 01 02 + broadcastPLMNs: BroadcastPLMNs-Item ::= { + 02 F8 29 + } + eUTRA-Mode-Info: FDD-Info ::= { + uL-EARFCN: 1 + dL-EARFCN: 1 + uL-Transmission-Bandwidth: 3 (bw50) + dL-Transmission-Bandwidth: 3 (bw50) + } + } + } + } + } + } + } + }` + + inputPayloadAsStr := "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + var payload []byte + + _, err := fmt.Sscanf(inputPayloadAsStr, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + t.Errorf("want: success, got: unpack failed. Error: %v\n", err) + } + + want:= strings.Fields(wantPduAsStr) + got:= strings.Fields(response.pduPrint) + if len(want) != len(got) { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", wantPduAsStr, response.pduPrint) + } + for i:=0; i < len(want); i++ { + if strings.Compare(want[i], got[i] ) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", wantPduAsStr, strings.TrimSpace(response.pduPrint)) + } + + } +} + +/*unpacking error*/ + +func TestUnpackX2apSetupResponseUnpackError(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + wantError := "unpacking error: #src/asn1codec_utils.c.unpack_pdu_aux - Failed to decode E2AP-PDU (consumed 0), error = 0 Success" + //--------------------2006002a + inputPayloadAsStr := "2006002b000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + var payload []byte + _, err := fmt.Sscanf(inputPayloadAsStr, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + _, err = unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} + + diff --git a/E2Manager/handlers/x2apSetupRequest_asn1_packer.go b/E2Manager/handlers/x2apSetupRequest_asn1_packer.go new file mode 100644 index 0000000..9c548b0 --- /dev/null +++ b/E2Manager/handlers/x2apSetupRequest_asn1_packer.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +func packX2apSetupRequest(logger *logger.Logger, allocationBufferSize int, maxPackedBufferSize int, maxMessageBufferSize int, pLMNId []byte, eNB_Id []byte /*18, 20, 21, 28 bits length*/, bitqty uint) ([]byte, error) { + packedBuf := make([]byte, maxPackedBufferSize) + errBuf := make([]C.char, maxMessageBufferSize) + packedBufSize := C.ulong(len(packedBuf)) + + if !C.build_pack_x2setup_request((*C.uchar)(unsafe.Pointer(&pLMNId[0])) /*pLMN_Identity*/, + (*C.uchar)(unsafe.Pointer(&eNB_Id[0])), C.uint(bitqty),(*C.uchar)(unsafe.Pointer(&ricFlag[0])) /*pLMN_Identity*/, + &packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0]) { + return nil, errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errBuf[0]))) + } + + if logger.DebugEnabled() { + pdu:= C.new_pdu(C.size_t(allocationBufferSize)) + defer C.delete_pdu(pdu) + if C.per_unpack_pdu(pdu, packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])),C.size_t(len(errBuf)), &errBuf[0]){ + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + logger.Debugf("#x2apSetupRequest_asn1_packer.packX2apSetupRequest - PDU:%s\n\npacked (%d):%x", C.GoString(&errBuf[0]), packedBufSize, packedBuf[:packedBufSize]) + } + } + return packedBuf[:packedBufSize], nil + +} + diff --git a/E2Manager/handlers/x2apSetupRequest_asn1_packer_test.go b/E2Manager/handlers/x2apSetupRequest_asn1_packer_test.go new file mode 100644 index 0000000..30967ad --- /dev/null +++ b/E2Manager/handlers/x2apSetupRequest_asn1_packer_test.go @@ -0,0 +1,104 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +/* + * Create and pack an x2ap setup request. + * Verify the packed representation matches the want value. + */ +func TestPackX2apSetupRequest(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + pLMNId := []byte{0xbb, 0xbc, 0xcc} + var testCases = []struct { + eNBId []byte + eNBIdBitqty uint + packedPdu string + }{ + { + eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: shortMacro_eNB_ID, + packedPdu: "0006002b0000020015000900bbbccc8003abcd8000140017000001f700bbbcccabcd80000000bbbccc000000000001", + }, + + { + eNBId: []byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: macro_eNB_ID, + packedPdu: "0006002a0000020015000800bbbccc00abcde000140017000001f700bbbcccabcde0000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: longMacro_eNB_ID, + //packedPdu: "0006002b0000020015000900bbbccc8103abcd3800140017000001f700bbbcccabcd38000000bbbccc000000000001", + packedPdu: "0006002b0000020015000900bbbcccc003abcd3800140017000001f700bbbcccabcd38000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: home_eNB_ID, + packedPdu: "0006002b0000020015000900bbbccc40abcdef8000140017000001f700bbbcccabcdef800000bbbccc000000000001", + }, + } + + // TODO: Consider using testify's assert/require + // testing/quick to input random value + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + payload, err := packX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, tc.eNBId, tc.eNBIdBitqty) + if err != nil { + t.Errorf("want: success, got: pack failed. Error: %v\n", err) + } else { + t.Logf("packed X2AP setup request(size=%d): %x\n", len(payload), payload) + tmp := fmt.Sprintf("%x", payload) + if len(tmp) != len(tc.packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2) + } + + if strings.Compare(tmp, tc.packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp) + } + } + }) + } +} + +/*Packing error*/ + +func TestPackX2apSetupRequestPackError(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + wantError := "packing error: #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:46" + pLMNId := []byte{0xbb, 0xbc, 0xcc} + eNBId := []byte{0xab, 0xcd, 0xe} + eNBIdBitqty := uint(macro_eNB_ID) + _, err := packX2apSetupRequest(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, 40 /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId[:], eNBId[:], eNBIdBitqty) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} diff --git a/E2Manager/handlers/x2apSetup_response_notification_handler.go b/E2Manager/handlers/x2apSetup_response_notification_handler.go new file mode 100644 index 0000000..5e9f674 --- /dev/null +++ b/E2Manager/handlers/x2apSetup_response_notification_handler.go @@ -0,0 +1,75 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +import ( + "e2mgr/models" + "e2mgr/rNibWriter" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + + "e2mgr/logger" + "e2mgr/sessions" +) + +type X2SetupResponseNotificationHandler struct{} + +func (src X2SetupResponseNotificationHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, + request *models.NotificationRequest, messageChannel chan<- *models.NotificationResponse) { + + e2session, ok := e2Sessions[request.TransactionId] + + enbId, enb, err := unpackX2SetupResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + logger.Errorf("#x2apSetup_response_notification_handler.Handle - unpack failed. Error: %v", err) + } + + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#x2apSetup_response_notification_handler.handle - transactionId %s: Summary: Elapsed time for receiving and handling setup response from E2 terminator", request.TransactionId), request.StartTime) + //TODO if !ok exit + if ok { + if enb != nil { + nb := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + + nbIdentity.InventoryName = e2session.Request.RanName + nbIdentity.GlobalNbId = enbId + nb.GlobalNbId = nbIdentity.GlobalNbId + nb.RanName = e2session.Request.RanName + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Ip = e2session.Request.RanIp + nb.Port = uint32(e2session.Request.RanPort) + nb.NodeType = entities.Node_ENB + nb.Configuration = &entities.NodebInfo_Enb{Enb: enb} + + //insert/update database + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + logger.Errorf("#x2apSetup_response_notification_handler.Handle - transactionId %s: rNibWriter failed to save ENB data for enbId: %v. Error: %s", request.TransactionId, enbId, rNibErr.Error()) + } else { + logger.Infof("#x2apSetup_response_notification_handler.Handle - transactionId %s: saved to rNib enbId: %v", request.TransactionId, enbId) + if logger.DebugEnabled() { + logger.Debugf("#x2apSetup_response_notification_handler.Handle - transactionId %s: saved to rNib enbId: %v, v:[%s]", request.TransactionId, enbId, fmt.Sprintf("%s %s %s %s", nb.ConnectionStatus, enb.EnbType, enb.ServedCells, enb.GuGroupIds)) + } + } + } + printHandlingSetupResponseElapsedTimeInMs(logger, fmt.Sprintf("#x2apSetup_response_notification_handler.handle - transactionId %s: Summary: Total roundtrip elapsed time", request.TransactionId), e2session.SessionStart) + delete(e2Sessions, request.TransactionId) // Avoid pinning memory (help GC) + } + + + +} diff --git a/E2Manager/handlers/x2enb_configuration_update_handler.go b/E2Manager/handlers/x2enb_configuration_update_handler.go new file mode 100644 index 0000000..93383c1 --- /dev/null +++ b/E2Manager/handlers/x2enb_configuration_update_handler.go @@ -0,0 +1,70 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "unsafe" +) + +type X2EnbConfigurationUpdateHandler struct{} + +func (src X2EnbConfigurationUpdateHandler) Handle(logger *logger.Logger, e2Sessions sessions.E2Sessions, request *models.NotificationRequest, + messageChannel chan<- *models.NotificationResponse) { + + var payloadSize C.ulong + payloadSize = MaxAsn1PackedBufferSize + packedBuffer := [MaxAsn1PackedBufferSize]C.uchar{} + errorBuffer := [MaxAsn1PackedBufferSize]C.char{} + refinedMessage, err := unpackX2apPduAndRefine(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + status := C.build_pack_x2enb_configuration_update_failure( &payloadSize, &packedBuffer[0], MaxAsn1PackedBufferSize, &errorBuffer[0]) + if status{ + payload := (*[1<<30]byte)(unsafe.Pointer(&packedBuffer))[:payloadSize:payloadSize] + logger.Debugf("#x2enb_configuration_update_handler.Handle - Enb configuration update negative ack message payload: (%d) %02x", len(payload), payload) + response := models.NotificationResponse{RanName:request.RanName, Payload:payload, MgsType: rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_FAILURE} + messageChannel<- &response + } else { + logger.Errorf("#x2enb_configuration_update_handler.Handle - failed to build and pack Enb configuration update unsuccessful outcome message. Error: %v", errorBuffer) + } + logger.Errorf("#x2enb_configuration_update_handler.Handle - unpack failed. Error: %v", err) + } else { + logger.Infof("#x2enb_configuration_update_handler.Handle - Enb configuration update initiating message received") + logger.Debugf("#x2enb_configuration_update_handler.Handle - Enb configuration update initiating message payload: %s", refinedMessage.pduPrint) + + status := C.build_pack_x2enb_configuration_update_ack( &payloadSize, &packedBuffer[0], MaxAsn1PackedBufferSize, &errorBuffer[0]) + if status { + payload := (*[1 << 30]byte)(unsafe.Pointer(&packedBuffer))[:payloadSize:payloadSize] + logger.Debugf("#x2enb_configuration_update_handler.Handle - Enb configuration update positive ack message payload: (%d) %02x", len(payload), payload) + response := models.NotificationResponse{RanName: request.RanName, Payload: payload, MgsType: rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_ACK} + messageChannel<- &response + } else { + logger.Errorf("#x2enb_configuration_update_handler.Handle - failed to build and pack enb configuration update successful outcome message. Error: %v", errorBuffer) + } + } + printHandlingSetupResponseElapsedTimeInMs(logger, "#x2enb_configuration_update_handler.Handle - Summary: Elapsed time for receiving and handling enb configuration update initiating message from E2 terminator", request.StartTime) +} + diff --git a/E2Manager/handlers/x2enb_configuration_update_handler_test.go b/E2Manager/handlers/x2enb_configuration_update_handler_test.go new file mode 100644 index 0000000..20aa3d4 --- /dev/null +++ b/E2Manager/handlers/x2enb_configuration_update_handler_test.go @@ -0,0 +1,71 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// +package handlers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "e2mgr/tests" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +func TestHandleSuccessEnbConfigUpdate(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#endc_configuration_update_handler_test.TestHandleSuccessEndcConfigUpdate - failed to initialize logger, error: %s", err) + } + h := X2EnbConfigurationUpdateHandler{} + E2Sessions := make(sessions.E2Sessions) + + payload := tests.GetPackedPayload(t) + mBuf := rmrCgo.NewMBuf(10370, len(payload),"RanName", &payload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + messageChannel := make(chan *models.NotificationResponse) + + go h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel) + + response := <-messageChannel + + assert.NotEmpty(t, response) + assert.EqualValues(t, 10081, response.MgsType) + assert.True(t, len(response.Payload) > 0) +} + +func TestHandleFailureEnbConfigUpdate(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("#endc_configuration_update_handler_test.TestHandleFailureEndcConfigUpdate - failed to initialize logger, error: %s", err) + } + h := X2EnbConfigurationUpdateHandler{} + E2Sessions := make(sessions.E2Sessions) + + mBuf := rmrCgo.NewMBuf(tests.MessageType, 4,"RanName", &tests.DummyPayload, &tests.DummyXAction) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now()} + messageChannel := make(chan *models.NotificationResponse) + + go h.Handle(log, E2Sessions, ¬ificationRequest, messageChannel) + + response := <-messageChannel + + assert.NotEmpty(t, response) + assert.EqualValues(t, 10082, response.MgsType) + assert.True(t, len(response.Payload) > 0) +} diff --git a/E2Manager/handlers/x2setupFailureResponseToProtobuf.go b/E2Manager/handlers/x2setupFailureResponseToProtobuf.go new file mode 100644 index 0000000..d72cae3 --- /dev/null +++ b/E2Manager/handlers/x2setupFailureResponseToProtobuf.go @@ -0,0 +1,150 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +const ( + maxNrOfErrors = 256 +) + +// The following are possible values of a choice field, find which the pdu contains. +func getCause(causeIE *C.Cause_t, setupFailure *entities.SetupFailure) error { + switch causeIE.present { + case C.Cause_PR_radioNetwork: + v := (*C.CauseRadioNetwork_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_NetworkLayerCause{NetworkLayerCause: entities.RadioNetworkLayer_Cause(1 + *v)} + case C.Cause_PR_transport: + v := (*C.CauseTransport_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_TransportLayerCause{TransportLayerCause: entities.TransportLayer_Cause(1 + *v)} + case C.Cause_PR_protocol: + v := (*C.CauseProtocol_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_ProtocolCause{ProtocolCause: entities.Protocol_Cause(1 + *v)} + case C.Cause_PR_misc: + v := (*C.CauseMisc_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_MiscellaneousCause{MiscellaneousCause: entities.Miscellaneous_Cause(1 + *v)} + } + return nil +} + +func getCriticalityDiagnostics(critDiagIE *C.CriticalityDiagnostics_t) (*entities.CriticalityDiagnostics, error) { + var critDiag *entities.CriticalityDiagnostics + + if critDiagIE.procedureCode != nil { + critDiag = &entities.CriticalityDiagnostics{} + critDiag.ProcedureCode = uint32(*critDiagIE.procedureCode) + + } + + if critDiagIE.triggeringMessage != nil { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + critDiag.TriggeringMessage = entities.TriggeringMessage(1 + *critDiagIE.triggeringMessage) + + } + + if critDiagIE.procedureCriticality != nil { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + critDiag.ProcedureCriticality = entities.Criticality(1 + *critDiagIE.procedureCriticality) + + } + + if critDiagIE.iEsCriticalityDiagnostics != nil && critDiagIE.iEsCriticalityDiagnostics.list.count > 0 && critDiagIE.iEsCriticalityDiagnostics.list.count < maxNrOfErrors { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + var infoElements []*entities.InformationElementCriticalityDiagnostic + iEsCriticalityDiagnostics := (*C.CriticalityDiagnostics_IE_List_t)(critDiagIE.iEsCriticalityDiagnostics) + count:=int(iEsCriticalityDiagnostics.list.count) + iEsCriticalityDiagnostics_slice := (*[1 << 30]*C.CriticalityDiagnostics_IE_List__Member)(unsafe.Pointer(iEsCriticalityDiagnostics.list.array))[:count:count] + for _, criticalityDiagnostics_IE_List__Member := range iEsCriticalityDiagnostics_slice { + infoElement := &entities.InformationElementCriticalityDiagnostic{IeCriticality: entities.Criticality(1 + criticalityDiagnostics_IE_List__Member.iECriticality)} + infoElement.IeId = uint32(criticalityDiagnostics_IE_List__Member.iE_ID) + infoElement.TypeOfError = entities.TypeOfError(1 + criticalityDiagnostics_IE_List__Member.typeOfError) + + infoElements = append(infoElements, infoElement) + + } + critDiag.InformationElementCriticalityDiagnostics = infoElements + } + + return critDiag, nil +} + +// Populate and return the EN-DC/X2 setup response failure structure with data from the pdu +func x2SetupFailureResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.SetupFailure, error) { + setupFailure := entities.SetupFailure{} + + if pdu.present == C.E2AP_PDU_PR_unsuccessfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + unsuccessfulOutcome := *(**C.UnsuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if unsuccessfulOutcome != nil && unsuccessfulOutcome.value.present == C.UnsuccessfulOutcome__value_PR_X2SetupFailure { + x2SetupFailure := (*C.X2SetupFailure_t)(unsafe.Pointer(&unsuccessfulOutcome.value.choice[0])) + if x2SetupFailure != nil && x2SetupFailure.protocolIEs.list.count > 0 { + count:=int(x2SetupFailure.protocolIEs.list.count) + x2SetupFailure_IEs_slice := (*[1 << 30]*C.X2SetupFailure_IEs_t)(unsafe.Pointer(x2SetupFailure.protocolIEs.list.array))[:count:count] + for _, x2SetupFailure_IE := range x2SetupFailure_IEs_slice { + if x2SetupFailure_IE != nil { + switch x2SetupFailure_IE.value.present { + case C.X2SetupFailure_IEs__value_PR_Cause: + causeIE := (*C.Cause_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])) + err := getCause(causeIE, &setupFailure) + if err != nil { + return nil, err + } + case C.X2SetupFailure_IEs__value_PR_TimeToWait: + setupFailure.TimeToWait = entities.TimeToWait(1 + *((*C.TimeToWait_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])))) + case C.X2SetupFailure_IEs__value_PR_CriticalityDiagnostics: + cdIE := (*C.CriticalityDiagnostics_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])) + if cd, err := getCriticalityDiagnostics(cdIE); err == nil { + setupFailure.CriticalityDiagnostics = cd + } else { + return nil, err + } + } + } + } + } + } + } + + return &setupFailure, nil +} + +func unpackX2SetupFailureResponseAndExtract(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*entities.SetupFailure, error) { + pdu, err := unpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + return x2SetupFailureResponseToProtobuf(pdu) +} diff --git a/E2Manager/handlers/x2setupFailureResponseToProtobuf_test.go b/E2Manager/handlers/x2setupFailureResponseToProtobuf_test.go new file mode 100644 index 0000000..2080058 --- /dev/null +++ b/E2Manager/handlers/x2setupFailureResponseToProtobuf_test.go @@ -0,0 +1,327 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/logger" + "e2mgr/rNibWriter" + "fmt" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb + */ + +func TestUnpackX2SetupFailureResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + saveToRNib bool + response string + packedPdu string + failure error + }{ + { + saveToRNib: false, //TODO: use MOCK? + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4006001a0000030005400200000016400100001140087821a00000008040"}, + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED transport_layer_cause:TRANSPORT_RESOURCE_UNAVAILABLE criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + transport_t = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600140000020005400120001140087821a00000008040"}, + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED protocol_cause:ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + protocol_t = 0x2 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600130000020005400144001140073a800000008040"}, + + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600120000020005400168001140061a0000008040"}, + + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: information_element_criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0x2 + iE_ID_t = 0xff + typeOfError_t = 0 + */ + packedPdu: "4006001500000200054001680011400908010000804800ff00"}, + + + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + */ + packedPdu: "4006000e0000020005400168001140024021"}, + + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + */ + packedPdu: "400600080000010005400168"}, + { + saveToRNib: false, + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4006001a0000030005400200000016400100001140087821a00000008040", + //failure: fmt.Errorf("getAtom for path [unsuccessfulOutcome_t X2SetupFailure protocolIEs_t ProtocolIE_Container_elm Cause radioNetwork_t] failed, rc = 2" /*NO_SPACE_LEFT*/), + }, + } + + initDb_f := true + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := unpackX2SetupFailureResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if response == nil { + if tc.failure == nil { + t.Errorf("want: response=%s, got: empty response", tc.response) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.SetupFailure = response + nb.FailureType = entities.Failure_X2_SETUP_FAILURE + respStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, response) + if !strings.EqualFold(respStr, tc.response) { + t.Errorf("want: response=[%s], got: [%s]", tc.response, respStr) + } + + // Save to rNib + if tc.saveToRNib { + if initDb_f { + rNibWriter.Init("e2Manager", 1) + initDb_f = false + } + nbIdentity := &entities.NbIdentity{InventoryName:"RanName"} + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + if tc.failure == nil { + t.Errorf("rNibWriter failed to save ENB. Error: %s\n", rNibErr.Error()) + } else { + if strings.Compare(rNibErr.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, rNibErr.Error()) + } + } + } + } + } + }) + } +} + diff --git a/E2Manager/handlers/x2setupResponseToProtobuf.go b/E2Manager/handlers/x2setupResponseToProtobuf.go new file mode 100644 index 0000000..3e8ee26 --- /dev/null +++ b/E2Manager/handlers/x2setupResponseToProtobuf.go @@ -0,0 +1,439 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package handlers + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/logger" + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +const ( + maxnoofMBSFN = 8 + maxnoofBPLMNs = 6 + maxCellineNB = 256 + maxnoofMBMSServiceAreaIdentities = 256 + maxnoofBands = 16 + maxPools = 16 + maxnoofNeighbours = 512 +) + + +// The following are possible values of a choice field, find which the pdu contains. +func getENB_ID_choice(eNB_ID C.ENB_ID_t) (entities.EnbType, []byte) { + + enbIdAsBitString := (*C.BIT_STRING_t)(unsafe.Pointer(&eNB_ID.choice[0])) + switch eNB_ID.present{ + case C.ENB_ID_PR_macro_eNB_ID: + return entities.EnbType_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_home_eNB_ID: + return entities.EnbType_HOME_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_short_Macro_eNB_ID: + return entities.EnbType_SHORT_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_long_Macro_eNB_ID: + return entities.EnbType_LONG_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + } + + return entities.EnbType_UNKNOWN_ENB_TYPE, nil +} + +func getFDDInfo(fdd *C.FDD_Info_t) (*entities.FddInfo, error) { + var fddInfo *entities.FddInfo + + if fdd != nil { + fddInfo = &entities.FddInfo{UlearFcn: uint32(fdd.uL_EARFCN)} + fddInfo.DlearFcn = uint32(fdd.dL_EARFCN) + fddInfo.UlTransmissionBandwidth = entities.TransmissionBandwidth(1 + fdd.uL_Transmission_Bandwidth) + fddInfo.DlTransmissionBandwidth = entities.TransmissionBandwidth(1 + fdd.dL_Transmission_Bandwidth) + + extIEs := (*C.ProtocolExtensionContainer_170P145_t)(unsafe.Pointer(fdd.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count:= int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.FDD_Info_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.FDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension: + eARFCNExtension := (*C.EARFCNExtension_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if member.id == C.ProtocolIE_ID_id_UL_EARFCNExtension { + fddInfo.UlearFcn = uint32(*eARFCNExtension) + } + if member.id == C.ProtocolIE_ID_id_DL_EARFCNExtension { + fddInfo.DlearFcn = uint32(*eARFCNExtension) + } + case C.FDD_Info_ExtIEs__extensionValue_PR_OffsetOfNbiotChannelNumberToEARFCN: + /*ignored*/ + case C.FDD_Info_ExtIEs__extensionValue_PR_NRS_NSSS_PowerOffset: + /*ignored*/ + case C.FDD_Info_ExtIEs__extensionValue_PR_NSSS_NumOccasionDifferentPrecoder: + /*ignored*/ + } + } + } + } + + return fddInfo, nil +} + +func getSpecialSubframeInfo(info C.SpecialSubframe_Info_t) *entities.SpecialSubframeInfo { + specialSubframeInfo := entities.SpecialSubframeInfo{} + + specialSubframeInfo.SpecialSubframePatterns = entities.SpecialSubframe_Patterns(1 + info.specialSubframePatterns) + specialSubframeInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + specialSubframeInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return &specialSubframeInfo +} + +func getAdditionalSpecialSubframeInfo(info *C.AdditionalSpecialSubframe_Info_t) *entities.AdditionalSpecialSubframeInfo { + additionalSpecialSubframeInfo := &entities.AdditionalSpecialSubframeInfo{AdditionalSpecialSubframePatterns: entities.AdditionalSpecialSubframe_Patterns(1 + info.additionalspecialSubframePatterns)} + + additionalSpecialSubframeInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + additionalSpecialSubframeInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return additionalSpecialSubframeInfo +} + +func getAdditionalSpecialSubframeExtensionInfo(info *C.AdditionalSpecialSubframeExtension_Info_t) *entities.AdditionalSpecialSubframeExtensionInfo { + additionalSpecialSubframeExtensionInfo := &entities.AdditionalSpecialSubframeExtensionInfo{AdditionalSpecialSubframePatternsExtension: entities.AdditionalSpecialSubframePatterns_Extension(1 +info.additionalspecialSubframePatternsExtension)} + + additionalSpecialSubframeExtensionInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + additionalSpecialSubframeExtensionInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return additionalSpecialSubframeExtensionInfo +} + +func getTDDInfo(tdd *C.TDD_Info_t) (*entities.TddInfo, error) { + var tddInfo *entities.TddInfo + + if tdd != nil { + tddInfo = &entities.TddInfo{EarFcn: uint32(tdd.eARFCN)} + tddInfo.TransmissionBandwidth = entities.TransmissionBandwidth(1 + tdd.transmission_Bandwidth) + tddInfo.SubframeAssignment = entities.SubframeAssignment(1 + tdd.subframeAssignment) + + tddInfo.SpecialSubframeInfo = getSpecialSubframeInfo(tdd.specialSubframe_Info) + + extIEs := (*C.ProtocolExtensionContainer_170P206_t)(unsafe.Pointer(tdd.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count:= int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.TDD_Info_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframe_Info: + tddInfo.AdditionalSpecialSubframeInfo = getAdditionalSpecialSubframeInfo((*C.AdditionalSpecialSubframe_Info_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + case C.TDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension: + tddInfo.EarFcn = uint32(*(*C.EARFCNExtension_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + case C.TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframeExtension_Info: + tddInfo.AdditionalSpecialSubframeExtensionInfo = getAdditionalSpecialSubframeExtensionInfo((*C.AdditionalSpecialSubframeExtension_Info_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + } + } + } + } + + return tddInfo, nil +} + +// The following are possible values of a choice field, find which the pdu contains. +func getSubframeAllocation_choice(subframeAllocation C.SubframeAllocation_t) (entities.SubframeAllocationType, string, error) { + + switch subframeAllocation.present { + case C.SubframeAllocation_PR_oneframe: + frameAllocation := (*C.Oneframe_t)(unsafe.Pointer(&subframeAllocation.choice[0])) + return entities.SubframeAllocationType_ONE_FRAME, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(frameAllocation.buf), C.int(frameAllocation.size))), nil + case C.SubframeAllocation_PR_fourframes: + frameAllocation := (*C.Fourframes_t)(unsafe.Pointer(&subframeAllocation.choice[0])) + return entities.SubframeAllocationType_FOUR_FRAME, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(frameAllocation.buf), C.int(frameAllocation.size))), nil + } + return entities.SubframeAllocationType_UNKNOWN_SUBFRAME_ALLOCATION_TYPE, "", errors.Errorf("unexpected subframe allocation choice") +} + +func getMBSFN_Subframe_Infolist(mBSFN_Subframe_Infolist *C.MBSFN_Subframe_Infolist_t) ([]*entities.MbsfnSubframe, error) { + var mBSFNSubframes []*entities.MbsfnSubframe + + if mBSFN_Subframe_Infolist.list.count > 0 && mBSFN_Subframe_Infolist.list.count <= maxnoofMBSFN { + count:=int(mBSFN_Subframe_Infolist.list.count) + BSFN_Subframe_Infolist_slice := (*[1 << 30]*C.MBSFN_Subframe_Info_t)(unsafe.Pointer(mBSFN_Subframe_Infolist.list.array))[:count:count] + for _, member := range BSFN_Subframe_Infolist_slice { + mBSFNSubframe := &entities.MbsfnSubframe{RadioframeAllocationPeriod: entities.RadioframeAllocationPeriod(1 + member.radioframeAllocationPeriod)} + + mBSFNSubframe.RadioframeAllocationOffset = uint32(member.radioframeAllocationOffset) + + allocType, subframeAllocation, err:= getSubframeAllocation_choice(member.subframeAllocation) + if err != nil { + return nil, err + } + mBSFNSubframe.SubframeAllocation = subframeAllocation + mBSFNSubframe.SubframeAllocationType = allocType + + mBSFNSubframes = append(mBSFNSubframes, mBSFNSubframe) + } + } + + return mBSFNSubframes, nil +} + +func getPRACHConfiguration(prachConf *C.PRACH_Configuration_t) *entities.PrachConfiguration { + + var prachConfiguration *entities.PrachConfiguration + + prachConfiguration = &entities.PrachConfiguration{RootSequenceIndex: uint32(prachConf.rootSequenceIndex)} + prachConfiguration.ZeroCorrelationZoneConfiguration = uint32(prachConf.zeroCorrelationIndex) + prachConfiguration.HighSpeedFlag = prachConf.highSpeedFlag != 0 + prachConfiguration.PrachFrequencyOffset = uint32(prachConf.prach_FreqOffset) + if prachConf.prach_ConfigIndex != nil { + prachConfiguration.PrachConfigurationIndex = uint32(*prachConf.prach_ConfigIndex) + } + + return prachConfiguration +} +func getServedCellsInfoExt(extIEs *C.ProtocolExtensionContainer_170P192_t, servedCellInfo *entities.ServedCellInfo) error { + + if extIEs != nil && extIEs.list.count > 0 { + count:=int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.ServedCell_Information_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.ServedCell_Information_ExtIEs__extensionValue_PR_Number_of_Antennaports: + ports := (*C.Number_of_Antennaports_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.NumberOfAntennaPorts = entities.NumberOfAntennaPorts(1 + *ports) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_PRACH_Configuration: + prachConfiguration:= getPRACHConfiguration((*C.PRACH_Configuration_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + servedCellInfo.PrachConfiguration = prachConfiguration + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MBSFN_Subframe_Infolist: + mBSFN_Subframe_Infolist, err := getMBSFN_Subframe_Infolist((*C.MBSFN_Subframe_Infolist_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + if err != nil { + return err + } + servedCellInfo.MbsfnSubframeInfos = mBSFN_Subframe_Infolist + case C.ServedCell_Information_ExtIEs__extensionValue_PR_CSG_Id: + csgId := (*C.CSG_Id_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.CsgId = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(csgId.buf), C.int(csgId.size))) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MBMS_Service_Area_Identity_List: + mBMS_Service_Area_Identity_List := (*C.MBMS_Service_Area_Identity_List_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if mBMS_Service_Area_Identity_List.list.count > 0 && mBMS_Service_Area_Identity_List.list.count < maxnoofMBMSServiceAreaIdentities { + count:= int(mBMS_Service_Area_Identity_List.list.count) + mBMS_Service_Area_Identity_List_slice := (*[1 << 30]*C.MBMS_Service_Area_Identity_t)(unsafe.Pointer(mBMS_Service_Area_Identity_List.list.array))[:count:count] + for _, identity := range mBMS_Service_Area_Identity_List_slice { + servedCellInfo.MbmsServiceAreaIdentities = append(servedCellInfo.MbmsServiceAreaIdentities, fmt.Sprintf("%02x",C.GoBytes(unsafe.Pointer(identity.buf), C.int(identity.size)))) + } + } + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MultibandInfoList: + multibandInfoList := (*C.MultibandInfoList_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if multibandInfoList.list.count > 0 && multibandInfoList.list.count < maxnoofBands { + count:= int(multibandInfoList.list.count) + multibandInfoList_slice := (*[1 << 30]*C.BandInfo_t)(unsafe.Pointer(multibandInfoList.list.array))[:count:count] + for _, bandInfo := range multibandInfoList_slice { + servedCellInfo.MultibandInfos = append(servedCellInfo.MultibandInfos, uint32(bandInfo.freqBandIndicator)) + } + } + case C.ServedCell_Information_ExtIEs__extensionValue_PR_FreqBandIndicatorPriority: + priority := (*C.FreqBandIndicatorPriority_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.FreqBandIndicatorPriority = entities.FreqBandIndicatorPriority(1 + *priority) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_BandwidthReducedSI: + si := (*C.BandwidthReducedSI_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.BandwidthReducedSi = entities.BandwidthReducedSI(1 + *si) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_ProtectedEUTRAResourceIndication: + /*ignored*/ + + } + + } + + } + + return nil +} + +func getServedCellsNeighbour_Info(neighbour_Information*C.Neighbour_Information_t) ([]*entities.NeighbourInformation, error) { + var neighbours []*entities.NeighbourInformation + + if neighbour_Information != nil && neighbour_Information.list.count > 0 && neighbour_Information.list.count <= maxnoofNeighbours { + count:= int(neighbour_Information.list.count) + neighbour_Information_slice := (*[1 << 30]*C.Neighbour_Information__Member)(unsafe.Pointer(neighbour_Information.list.array))[:count:count] + for _, member := range neighbour_Information_slice { + + //pLMN_Identity:eUTRANcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.eCGI.pLMN_Identity.buf), C.int(member.eCGI.pLMN_Identity.size)) + eUTRANcellIdentifier := C.GoBytes(unsafe.Pointer(member.eCGI.eUTRANcellIdentifier.buf), C.int(member.eCGI.eUTRANcellIdentifier.size)) + neighbourInfo := &entities.NeighbourInformation{Ecgi: fmt.Sprintf("%02x:%02x", plmnId, eUTRANcellIdentifier)} + + neighbourInfo.Pci = uint32(member.pCI) + + neighbourInfo.EarFcn = uint32(member.eARFCN) + + extIEs:= (*C.ProtocolExtensionContainer_170P172_t)(unsafe.Pointer(member.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count:= int(extIEs.list.count) + neighbour_Information_ExtIEs_slice := (*[1 << 30]*C.Neighbour_Information_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, neighbour_Information_ExtIE := range neighbour_Information_ExtIEs_slice { + switch neighbour_Information_ExtIE.extensionValue.present { + case C.Neighbour_Information_ExtIEs__extensionValue_PR_TAC: + tac := (*C.TAC_t)(unsafe.Pointer(&neighbour_Information_ExtIE.extensionValue.choice[0])) + neighbourInfo.Tac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(tac.buf), C.int(tac.size))) + case C.Neighbour_Information_ExtIEs__extensionValue_PR_EARFCNExtension: + earFcn := (*C.EARFCNExtension_t)(unsafe.Pointer(&neighbour_Information_ExtIE.extensionValue.choice[0])) + neighbourInfo.EarFcn = uint32(*earFcn) + } + } + } + + neighbours = append(neighbours,neighbourInfo) + } + } + + return neighbours, nil +} + +func getServedCells(servedCellsIE *C.ServedCells_t) ([]*entities.ServedCellInfo, error) { + var servedCells []*entities.ServedCellInfo + + if servedCellsIE != nil && servedCellsIE.list.count > 0 && servedCellsIE.list.count < maxCellineNB { + count:= int(servedCellsIE.list.count) + servedCells__Member_slice := (*[1 << 30]*C.ServedCells__Member)(unsafe.Pointer(servedCellsIE.list.array))[:count:count] + for _, member := range servedCells__Member_slice { + servedCellInfo := &entities.ServedCellInfo{Pci: uint32(member.servedCellInfo.pCI)} + + //pLMN_Identity:eUTRANcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.servedCellInfo.cellId.pLMN_Identity.buf), C.int(member.servedCellInfo.cellId.pLMN_Identity.size)) + eUTRANcellIdentifier := C.GoBytes(unsafe.Pointer(member.servedCellInfo.cellId.eUTRANcellIdentifier.buf), C.int(member.servedCellInfo.cellId.eUTRANcellIdentifier.size)) + servedCellInfo.CellId = fmt.Sprintf("%02x:%02x", plmnId, eUTRANcellIdentifier) + + servedCellInfo.Tac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.servedCellInfo.tAC.buf), C.int(member.servedCellInfo.tAC.size))) + + if member.servedCellInfo.broadcastPLMNs.list.count > 0 && member.servedCellInfo.broadcastPLMNs.list.count <= maxnoofBPLMNs { + count := int(member.servedCellInfo.broadcastPLMNs.list.count) + pLMN_Identity_slice := (*[1 << 30]*C.PLMN_Identity_t)(unsafe.Pointer(member.servedCellInfo.broadcastPLMNs.list.array))[:count:count] + for _, pLMN_Identity := range pLMN_Identity_slice { + servedCellInfo.BroadcastPlmns = append(servedCellInfo.BroadcastPlmns, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(pLMN_Identity.buf), C.int(pLMN_Identity.size)))) + } + } + + switch member.servedCellInfo.eUTRA_Mode_Info.present { + case C.EUTRA_Mode_Info_PR_fDD: + if fdd, err := getFDDInfo(*(**C.FDD_Info_t)(unsafe.Pointer(&member.servedCellInfo.eUTRA_Mode_Info.choice[0]))); fdd != nil && err == nil { + servedCellInfo.ChoiceEutraMode, servedCellInfo.EutraMode = &entities.ChoiceEUTRAMode{Fdd: fdd}, entities.Eutra_FDD + } else { + return nil, err + } + case C.EUTRA_Mode_Info_PR_tDD: + if tdd, err := getTDDInfo(*(**C.TDD_Info_t)(unsafe.Pointer(&member.servedCellInfo.eUTRA_Mode_Info.choice[0]))); tdd != nil && err == nil { + servedCellInfo.ChoiceEutraMode, servedCellInfo.EutraMode = &entities.ChoiceEUTRAMode{Tdd: tdd}, entities.Eutra_TDD + } else { + return nil, err + } + } + + neighbours, err := getServedCellsNeighbour_Info(member.neighbour_Info) + if err != nil { + return nil, err + } + servedCellInfo.NeighbourInfos = neighbours + + if err := getServedCellsInfoExt((*C.ProtocolExtensionContainer_170P192_t)(unsafe.Pointer(member.servedCellInfo.iE_Extensions)), servedCellInfo); err != nil { + return nil, err + } + + servedCells = append(servedCells, servedCellInfo) + + } + } + + return servedCells, nil +} + +func getGUGroupIDList(guGroupIDList *C.GUGroupIDList_t) []string { + var ids []string + + if guGroupIDList != nil && guGroupIDList.list.count > 0 && guGroupIDList.list.count <= maxPools { + count:=int(guGroupIDList.list.count) + guGroupIDList_slice := (*[1 << 30]*C.GU_Group_ID_t)(unsafe.Pointer(guGroupIDList.list.array))[:count:count] + for _, guGroupID := range guGroupIDList_slice { + plmnId := C.GoBytes(unsafe.Pointer(guGroupID.pLMN_Identity.buf), C.int(guGroupID.pLMN_Identity.size)) + mME_Group_ID := C.GoBytes(unsafe.Pointer(guGroupID.mME_Group_ID.buf), C.int(guGroupID.mME_Group_ID.size)) + ids = append(ids, fmt.Sprintf("%02x:%02x", plmnId, mME_Group_ID)) + } + } + + return ids +} + +// Populate the ENB structure with data from the pdu +// Return the ENB and the associated key which can later be used to retrieve the ENB from the database. +func x2SetupResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.GlobalNbId, *entities.Enb, error) { + var globalNbId *entities.GlobalNbId + + enb := entities.Enb{} + + if pdu.present == C.E2AP_PDU_PR_successfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + successfulOutcome := *(**C.SuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if successfulOutcome != nil && successfulOutcome.value.present == C.SuccessfulOutcome__value_PR_X2SetupResponse { + x2SetupResponse := (*C.X2SetupResponse_t)(unsafe.Pointer(&successfulOutcome.value.choice[0])) + if x2SetupResponse != nil && x2SetupResponse.protocolIEs.list.count > 0 { + count := int(x2SetupResponse.protocolIEs.list.count) + x2SetupResponse_IEs_slice := (*[1 << 30]*C.X2SetupResponse_IEs_t)(unsafe.Pointer(x2SetupResponse.protocolIEs.list.array))[:count:count] + for _, x2SetupResponse_IE := range x2SetupResponse_IEs_slice { + switch x2SetupResponse_IE.value.present { + case C.X2SetupResponse_IEs__value_PR_GlobalENB_ID: + globalENB_ID := (*C.GlobalENB_ID_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0])) + plmnId := C.GoBytes(unsafe.Pointer(globalENB_ID.pLMN_Identity.buf), C.int(globalENB_ID.pLMN_Identity.size)) + enbType, enbVal:= getENB_ID_choice(globalENB_ID.eNB_ID) + + globalNbId = &entities.GlobalNbId{} + globalNbId.NbId = fmt.Sprintf("%02x", enbVal) + globalNbId.PlmnId = fmt.Sprintf("%02x", plmnId) + enb.EnbType = enbType + + case C.X2SetupResponse_IEs__value_PR_ServedCells: + ServedCells, err := getServedCells((*C.ServedCells_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0]))) + if err != nil { + return globalNbId, nil, err + } + enb.ServedCells = ServedCells + case C.X2SetupResponse_IEs__value_PR_GUGroupIDList: + enb.GuGroupIds= getGUGroupIDList((*C.GUGroupIDList_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0]))) + case C.X2SetupResponse_IEs__value_PR_CriticalityDiagnostics: + /*ignored*/ + case C.X2SetupResponse_IEs__value_PR_LHN_ID: + /*ignored*/ + } + } + } + } + } + + + return globalNbId, &enb, nil +} + +func unpackX2SetupResponseAndExtract(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*entities.GlobalNbId, *entities.Enb, error) { + pdu, err := unpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, nil, err + } + + defer C.delete_pdu(pdu) + return x2SetupResponseToProtobuf(pdu) +} + diff --git a/E2Manager/handlers/x2setupResponseToProtobuf_test.go b/E2Manager/handlers/x2setupResponseToProtobuf_test.go new file mode 100644 index 0000000..666794e --- /dev/null +++ b/E2Manager/handlers/x2setupResponseToProtobuf_test.go @@ -0,0 +1,1217 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed 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. + * + *******************************************************************************/ +package handlers + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/logger" + "e2mgr/rNibWriter" + "fmt" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb + */ + +func TestUnpackX2SetupResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + saveToRNib bool + key *entities.GlobalNbId + enb string + packedPdu string + failure error + }{ + { + saveToRNib: false, //TODO: use MOCK? + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3` + */ + packedPdu: "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133"}, + { + key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060043000002001500080002f82900007a8000140030010000630002f8290007ab50102002f8290000010001330000640002f9290007ac50203202f82902f929000002000344"}, + + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5f //ul_EARFCN + criticality_t = 0 + EARFCNExtension = 0x2 + */ + packedPdu: "20060033000002001500080002f82900007a8000140020000000630002f8290007ab50102002f8291000010001330000005f0003800102"}, + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] [02f729:0203 02f929:0304]", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + ProtocolIE_Container_elm + id_t = 0x18 + criticality_t = 0 + GUGroupIDList: + GUGroupIDList_elm + pLMN_Identity_t = 02 f7 29 + mME_Group_ID_t = 02 03 + GUGroupIDList_elm + pLMN_Identity_t = 02 f9 29 + mME_Group_ID_t = 03 04 + */ + packedPdu: "2006003a000003001500080002f82900007a8000140017000000630002f8290007ab50102002f8290000010001330018000c1002f72902030002f9290304"}, + + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + */ + packedPdu: "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829400001320820"}, + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x61 + criticality_t = 0x1 + AdditionalSpecialSubframe-Info + additionalspecialSubframePatterns_t = 0x9 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + */ + packedPdu: "20060032000002001500080002f82900007a800014001f000000630002f8290007ab50102002f8295000013208800000006140021220"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x2 + */ + packedPdu: "20060033000002001500080002f82900007a8000140020000000630002f8290007ab50102002f8295000013208800000005e0003800102"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_extension_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0xb3 + criticality_t = 0x1 + AdditionalSpecialSubframeExtension-Info + additionalspecialSubframePatternsExtension_t = 0 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0 + */ + packedPdu: "20060031000002001500080002f82900007a800014001e000000630002f8290007ab50102002f829500001320880000000b3400100"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_info: additional_special_subframe_extension_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0xb3 + criticality_t = 0x1 + AdditionalSpecialSubframeExtension-Info + additionalspecialSubframePatternsExtension_t = 0 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0 + ProtocolExtensionContainer_elm + id_t = 0x61 + criticality_t = 0x1 + AdditionalSpecialSubframe-Info + additionalspecialSubframePatterns_t = 0x9 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x2 + + */ + packedPdu: "2006003e000002001500080002f82900007a800014002b000000630002f8290007ab50102002f829500001320880000200b3400100006140021220005e0003800102"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80b0"}, + enb: "CONNECTED HOME_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + home_eNB_ID_t = 00 7a 80 b0 (28 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t:nb_id + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + + */ + packedPdu: "2006004b000002001500090002f82940007a80b000140037010800630002f8290007ab50102002f829000001000133000000294001000000640002f9290007ac50203202f82902f929000002000344"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD prach_configuration: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + + */ + packedPdu: "20060056000002001500090002f8298003007a4000140042010800630002f8290007ab50102002f829000001000133000000294001000800640002f9290007ac50203202f82902f92900000200034400000037400500000f79e0"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD mbsfn_subframe_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x38 + criticality_t = 0x1 + MBSFN-Subframe-Infolist: + MBSFN_Subframe_Infolist_elm + radioframeAllocationPeriod_t = 0x3 + radioframeAllocationOffset_t = 0x3 + subframeAllocation_t: + oneframe_t = 28 (6 bits) + */ + packedPdu: "20060054000002001500090002f8298003007a4000140040010800630002f8290007ab50102002f829000001000133000000294001000800640002f9290007ac50203202f82902f929000002000344000000384003019850"}, + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 mbsfn_subframe_infos: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ProtocolExtensionContainer_elm + id_t = 0x38 + criticality_t = 0x1 + MBSFN-Subframe-Infolist: + MBSFN_Subframe_Infolist_elm + radioframeAllocationPeriod_t = 0x3 + radioframeAllocationOffset_t = 0x3 + subframeAllocation_t: + oneframe_t = 28 (6 bits) + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060052000002001500090002f8298003007a400014003e010800630002f8290007ab50102002f82900000100013300010029400100003840030198500000640002f9290007ac50203202f82902f929000002000344"}, + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 prach_configuration: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060054000002001500090002f8298003007a4000140040010800630002f8290007ab50102002f829000001000133000100294001000037400500000f79e00000640002f9290007ac50203202f82902f929000002000344"}, + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a08"}, + enb: "CONNECTED LONG_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD prach_configuration: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + long_Macro_eNB_ID_t = 00 7a 08 (21 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + prach_ConfigIndex_t = 0x3c + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + //packedPdu: "20060050000002001500090002f8298103007a080014003c010800630002f8290007ab50102002f82900000100013300000037400640000f79ef000000640002f9290007ac50203202f82902f929000002000344"}, + packedPdu: "20060050000002001500090002f829c003007a080014003c010800630002f8290007ab50102002f82900000100013300000037400640000f79ef000000640002f9290007ac50203202f82902f929000002000344"}, + + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD csg_id:\"0007aba0\" freq_band_indicator_priority:BROADCASTED bandwidth_reduced_si:SCHEDULED ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x46 + criticality_t = 0x1 + CSG-Id = 00 07 ab a0 (27 bits) + ProtocolExtensionContainer_elm + id_t = 0xa0 + criticality_t = 0x1 + FreqBandIndicatorPriority = 0x1 + ProtocolExtensionContainer_elm + id_t = 0xb4 + criticality_t = 0x1 + BandwidthReducedSI = 0 + */ + packedPdu: "2006003e000002001500080002f82900007a800014002b000800630002f8290007ab50102002f8290000010001330002004640040007aba000a040014000b4400100"}, + + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD mbms_service_area_identities:\"02f8\" mbms_service_area_identities:\"03f9\" multiband_infos:1 multiband_infos:2 multiband_infos:3 freq_band_indicator_priority:NOT_BROADCASTED ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4f + criticality_t = 0x1 + MBMS-Service-Area-Identity-List: + MBMS_Service_Area_Identity_List_elm = 02 f8 + MBMS_Service_Area_Identity_List_elm = 03 f9 + ProtocolExtensionContainer_elm + id_t = 0xa0 + criticality_t = 0x1 + FreqBandIndicatorPriority = 0 + ProtocolExtensionContainer_elm + id_t = 0x54 + criticality_t = 0x1 + MultibandInfoList: + MultibandInfoList_elm + freqBandIndicator_t = 0x1 + MultibandInfoList_elm + freqBandIndicator_t = 0x2 + MultibandInfoList_elm + freqBandIndicator_t = 0x3 + */ + packedPdu: "20060044000002001500080002f82900007a8000140031000800630002f8290007ab50102002f8290000010001330002004f40050102f803f900a040010000544006200000010002"}, + { key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + */ + packedPdu: "20060044000002001500080002f82900007a8000140031004000630002f8290007ab50102002f82900000100013300020002f8290007ab50006300010003f9300008bc5000640002"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4c + criticality_t = 0x1 + TAC = 01 02 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x3 + */ + packedPdu: "20060055000002001500080002f82900007a8000140042004000630002f8290007ab50102002f82900000100013300024002f8290007ab50006300010000004c400201024003f9300008bc50006400020000005e0003800103"}, + + {key: &entities.GlobalNbId{PlmnId:"02f829", NbId:"007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4c + criticality_t = 0x1 + TAC = 01 02 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x3 + */ + packedPdu: "20060055000002001500080002f82900007a8000140042004000630002f8290007ab50102002f82900000100013300024002f8290007ab50006300010000004c400201024003f9300008bc50006400020000005e0003800103", + /*failure: fmt.Errorf("getAtom for path [successfulOutcome_t X2SetupResponse protocolIEs_t ProtocolIE_Container_elm GlobalENB-ID pLMN_Identity_t] failed, rc = 2" /NO_SPACE_LEFT),*/}, + } + + initDb_f := true + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + key, enb, err := unpackX2SetupResponseAndExtract(logger, MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, len(payload), payload, MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if key == nil { + if tc.failure == nil { + t.Errorf("want: key=%v, got: empty key", tc.key) + } + } else { + if strings.Compare(key.PlmnId, tc.key.PlmnId) != 0 || strings.Compare(key.NbId, tc.key.NbId) != 0 { + t.Errorf("want: key=%s, got: %s", tc.key, key) + } + } + + if enb == nil { + if tc.failure == nil { + t.Errorf("want: enb=%s, got: empty enb", tc.enb) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Configuration = &entities.NodebInfo_Enb{Enb:enb} + embStr := fmt.Sprintf("%s %s %s %s", nb.ConnectionStatus, enb.EnbType, enb.ServedCells, enb.GuGroupIds) + if !strings.EqualFold(embStr, tc.enb) { + t.Errorf("want: enb=%s, got: %s", tc.enb, embStr) + } + + // Save to rNib + if tc.saveToRNib { + if initDb_f { + rNibWriter.Init("e2Manager", 1) + initDb_f = false + } + nbIdentity := &entities.NbIdentity{InventoryName:"RanName", GlobalNbId:key} + if rNibErr := rNibWriter.GetRNibWriter().SaveNodeb(nbIdentity, nb); rNibErr != nil { + if tc.failure == nil { + t.Errorf("rNibWriter failed to save ENB. Error: %s\n", rNibErr.Error()) + } else { + if strings.Compare(rNibErr.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, rNibErr.Error()) + } + } + } + } + } + }) + } +} + diff --git a/E2Manager/logger/logger.go b/E2Manager/logger/logger.go new file mode 100644 index 0000000..5b3232d --- /dev/null +++ b/E2Manager/logger/logger.go @@ -0,0 +1,184 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package logger + +import ( + "fmt" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "strings" + "time" +) + +type Logger struct { + Logger *zap.Logger +} + +// Copied from zap logger +// +// A Level is a logging priority. Higher levels are more important. +type LogLevel int8 + +const ( + // DebugLevel logs are typically voluminous, and are usually disabled in + // production. + DebugLevel LogLevel = iota - 1 + // InfoLevel is the default logging priority. + InfoLevel + // WarnLevel logs are more important than Info, but don't need individual + // human review. + WarnLevel + // ErrorLevel logs are high-priority. If an application is running smoothly, + // it shouldn't generate any error-level logs. + ErrorLevel + // DPanicLevel logs are particularly important errors. In development the + // logger panics after writing the message. + DPanicLevel + // PanicLevel logs a message, then panics. + PanicLevel + // FatalLevel logs a message, then calls os.Exit(1). + FatalLevel + + _minLevel = DebugLevel + _maxLevel = FatalLevel +) + +var logLevelTokenToLevel = map[string] LogLevel { + "debug" : DebugLevel, + "info": InfoLevel, + "warn": WarnLevel, + "error": ErrorLevel, + "dpanic": DPanicLevel, + "panic": PanicLevel, + "fatal": FatalLevel, +} + +func LogLevelTokenToLevel(level string) (LogLevel, bool) { + if level, ok := logLevelTokenToLevel[strings.TrimSpace(strings.ToLower(level))];ok { + return level, true + } + return _maxLevel+1, false +} + +func InitLogger(requested LogLevel) (*Logger, error) { + var logger *zap.Logger + var err error + switch requested { + case DebugLevel: + logger, err = initLoggerByLevel(zapcore.DebugLevel) + case InfoLevel: + logger, err = initLoggerByLevel(zapcore.InfoLevel) + case WarnLevel: + logger, err = initLoggerByLevel(zapcore.WarnLevel) + case ErrorLevel: + logger, err = initLoggerByLevel(zapcore.ErrorLevel) + case DPanicLevel: + logger, err = initLoggerByLevel(zapcore.DPanicLevel) + case PanicLevel: + logger, err = initLoggerByLevel(zapcore.PanicLevel) + case FatalLevel: + logger, err = initLoggerByLevel(zapcore.FatalLevel) + default: + err = fmt.Errorf("Invalid logging Level :%d",requested) + } + if err != nil { + return nil, err + } + return &Logger{Logger:logger}, nil + +} +func(l *Logger)Sync() error { + l.Debugf("#logger.Sync - Going to flush buffered log") + return l.Logger.Sync() +} + +func (l *Logger)Infof(formatMsg string, a ...interface{}) { + if l.InfoEnabled() { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Info(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Debugf(formatMsg string, a ...interface{}) { + if l.DebugEnabled(){ + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Debug(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Errorf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Error(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger)Warnf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Warn(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger) getTimeStampMdc() map[string]string { + timeStr := time.Now().Format("2006-01-02 15:04:05.000") + mdc := map[string]string{"time": timeStr} + return mdc +} + +func (l *Logger)InfoEnabled()bool{ + return l.Logger.Core().Enabled(zap.InfoLevel) +} + +func (l *Logger)DebugEnabled()bool{ + return l.Logger.Core().Enabled(zap.DebugLevel) +} + +func (l *Logger)DPanicf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.DPanic(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func initLoggerByLevel(l zapcore.Level) (*zap.Logger, error) { + cfg := zap.Config{ + Encoding: "json", + Level: zap.NewAtomicLevelAt(l), + OutputPaths: []string{"stdout"}, + ErrorOutputPaths: []string{"stderr"}, + EncoderConfig: zapcore.EncoderConfig{ + MessageKey: "msg", + + LevelKey: "crit", + EncodeLevel: zapcore.CapitalLevelEncoder, + + TimeKey: "ts", + EncodeTime: epochMillisIntegerTimeEncoder, + + CallerKey: "id", + EncodeCaller: e2ManagerCallerEncoder, + }, + } + return cfg.Build() +} + +func e2ManagerCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString("E2Manager") +} + +func epochMillisIntegerTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { + nanos := t.UnixNano() + millis := int64(nanos) / int64(time.Millisecond) + enc.AppendInt64(millis) +} + diff --git a/E2Manager/logger/logger_test.go b/E2Manager/logger/logger_test.go new file mode 100644 index 0000000..2c8eaf1 --- /dev/null +++ b/E2Manager/logger/logger_test.go @@ -0,0 +1,244 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package logger + +import ( + "bytes" + "github.com/stretchr/testify/assert" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "io" + "os" + "testing" +) + +func TestInitDebugLoggerSuccess(t *testing.T) { + log, err := InitLogger(DebugLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.DebugLevel)) +} + +func TestInitInfoLoggerSuccess(t *testing.T) { + log, err := InitLogger(InfoLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.InfoLevel)) +} + +func TestInitInfoLoggerFailure(t *testing.T) { + log, err := InitLogger(99) + assert.NotNil(t, err) + assert.Nil(t, log) +} + +func TestSyncSuccess(t *testing.T){ + logFile, err := os.Create("./loggerTest.txt") + if err != nil{ + t.Errorf("logger_test.TestSyncSuccess - failed to create file, error: %s", err) + } + old := os.Stdout + os.Stdout = logFile + log, err := InitLogger(DebugLevel) + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to initialize logger, error: %s", err) + } + err = log.Sync() + assert.Nil(t, err) + + os.Stdout = old + logFile, err = os.Open("./loggerTest.txt") + if err != nil{ + t.Errorf("logger_test.TestSyncSuccess - failed to open file, error: %s", err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, logFile) + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to copy bytes, error: %s", err) + } + debugRecord,_ :=buf.ReadString('\n') + errorRecord,_ :=buf.ReadString('\n') + + assert.NotEmpty(t, debugRecord) + assert.Empty(t, errorRecord) + err = os.Remove("./loggerTest.txt") + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to remove file, error: %s", err) + } + +} + +func TestSyncFailure(t *testing.T){ + log, err := InitLogger(DebugLevel) + err = log.Sync() + assert.NotNil(t, err) +} + +func TestDebugEnabledFalse(t *testing.T){ + entryNum, log := countRecords(InfoLevel, t) + assert.False(t, log.DebugEnabled()) + assert.Equal(t,3, entryNum) +} + +func TestDebugEnabledTrue(t *testing.T){ + entryNum, log := countRecords(DebugLevel, t) + assert.True(t, log.DebugEnabled()) + assert.Equal(t,4, entryNum) +} + +func TestDPanicfDebugLevel(t *testing.T){ + assert.True(t,validateRecordExists(DebugLevel, zap.DPanicLevel, t)) +} + +func TestDPanicfInfoLevel(t *testing.T){ + assert.True(t,validateRecordExists(InfoLevel, zap.DPanicLevel, t)) +} + +func TestErrorfDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.ErrorLevel, t)) +} + +func TestErrorfInfoLevel(t *testing.T) { + assert.True(t,validateRecordExists(InfoLevel, zap.ErrorLevel, t)) +} + +func TestInfofDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.InfoLevel, t)) +} + +func TestInfofInfoLevel(t *testing.T) { + assert.True(t,validateRecordExists(InfoLevel, zap.InfoLevel, t)) +} + +func TestDebugfDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.DebugLevel, t)) +} + +func TestDebugfInfoLevel(t *testing.T) { + assert.False(t,validateRecordExists(InfoLevel, zap.DebugLevel, t)) +} + +func TestInfofFatalLevel(t *testing.T) { + assert.False(t,validateRecordExists(FatalLevel, zap.InfoLevel, t)) +} + +func TestDebugfFatalLevel(t *testing.T) { + assert.False(t,validateRecordExists(FatalLevel, zap.DebugLevel, t)) +} + +func TestLogLevelTokenToLevel(t *testing.T) { + level, ok := LogLevelTokenToLevel("deBug") + assert.True(t, ok) + assert.True(t, level == DebugLevel) + + level, ok = LogLevelTokenToLevel("infO") + assert.True(t, ok) + assert.True(t, level == InfoLevel) + + level, ok = LogLevelTokenToLevel("Warn") + assert.True(t, ok) + assert.True(t, level == WarnLevel) + + level, ok = LogLevelTokenToLevel("eRror") + assert.True(t, ok) + assert.True(t, level == ErrorLevel) + + level, ok = LogLevelTokenToLevel("Dpanic ") + assert.True(t, ok) + assert.True(t, level == DPanicLevel) + + level, ok = LogLevelTokenToLevel(" panic ") + assert.True(t, ok) + assert.True(t, level == PanicLevel) + + level, ok = LogLevelTokenToLevel("fatal") + assert.True(t, ok) + assert.True(t, level == FatalLevel) + + level, ok = LogLevelTokenToLevel("zzz") + assert.False(t, ok) + assert.True(t, level > FatalLevel) + +} +func countRecords(logLevel LogLevel, t *testing.T) (int, *Logger){ + old := os.Stdout + r, w, _ :=os.Pipe() + os.Stdout = w + log, err := InitLogger(logLevel) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err) + } + log.Infof("%v, %v, %v", 1, "abc", 0.1) + log.Debugf("%v, %v, %v", 1, "abc", 0.1) + log.Errorf("%v, %v, %v", 1, "abc", 0.1) + log.DPanicf("%v, %v, %v", 1, "abc", 0.1) + err = w.Close() + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err) + } + os.Stdout = old + var buf bytes.Buffer + _, err = io.Copy(&buf, r) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err) + } + entryNum := 0 + s,_:= buf.ReadString('\n') + for len(s) > 0{ + entryNum +=1 + s,_= buf.ReadString('\n') + } + return entryNum, log +} + +func validateRecordExists(logLevel LogLevel, recordLevel zapcore.Level, t *testing.T) bool { + old := os.Stdout + r, w, _ :=os.Pipe() + os.Stdout = w + log, err := InitLogger(logLevel) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err) + } + switch recordLevel{ + case zap.DebugLevel: + log.Debugf("%v, %v, %v", 1, "abc", 0.1) + case zap.InfoLevel: + log.Infof("%v, %v, %v", 1, "abc", 0.1) + case zap.ErrorLevel: + log.Errorf("%v, %v, %v", 1, "abc", 0.1) + case zap.DPanicLevel: + log.DPanicf("%v, %v, %v", 1, "abc", 0.1) + } + err = w.Close() + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err) + } + os.Stdout = old + var buf bytes.Buffer + _, err = io.Copy(&buf, r) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err) + } + entryNum := 0 + s,_:= buf.ReadString('\n') + for len(s) > 0{ + entryNum +=1 + s,_= buf.ReadString('\n') + } + return entryNum == 1 +} diff --git a/E2Manager/main/http_server.go b/E2Manager/main/http_server.go new file mode 100644 index 0000000..037dd1b --- /dev/null +++ b/E2Manager/main/http_server.go @@ -0,0 +1,79 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package main + +import ( + "e2mgr/configuration" + "e2mgr/controllers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/julienschmidt/httprouter" + "log" + "net/http" + "os" +) + +const MAX_RNIB_PULL_INSTANCES = 4 + +func main() { + config := configuration.ParseConfiguration() + logLevel, _ := logger.LogLevelTokenToLevel(config.Logging.LogLevel) + logger, err := logger.InitLogger(logLevel) + if err != nil { + fmt.Printf("#http_server.main - failed to initialize logger, error: %s", err) + os.Exit(1) + } + rmrConfig := services.NewRmrConfig(config.Rmr.Port, config.Rmr.MaxMsgSize, 0, logger) + var msgImpl *rmrCgo.Context + rNibWriter.Init("e2Manager", MAX_RNIB_PULL_INSTANCES) + defer rNibWriter.Close() + reader.Init("e2Manager", MAX_RNIB_PULL_INSTANCES) + defer reader.Close() + var nManager = managers.NewNotificationManager(reader.GetRNibReader, rNibWriter.GetRNibWriter) + + rmrResponseChannel := make(chan *models.NotificationResponse, config.NotificationResponseBuffer) + rmrService := services.NewRmrService(rmrConfig, msgImpl, controllers.E2Sessions, nManager, rmrResponseChannel) + defer rmrService.CloseContext() + go rmrService.ListenAndHandle() + go rmrService.SendResponse() + runServer(rmrService, logger, config, rmrResponseChannel) +} + +func runServer(rmrService *services.RmrService, logger *logger.Logger, config *configuration.Configuration, rmrResponseChannel chan *models.NotificationResponse) { + + router := httprouter.New() + controller := controllers.NewNodebController(logger, rmrService, reader.GetRNibReader, rNibWriter.GetRNibWriter) + newController := controllers.NewController(logger, reader.GetRNibReader, rNibWriter.GetRNibWriter, config, rmrResponseChannel) + + router.POST("/v1/nodeb/:messageType", controller.HandleRequest) + router.GET("/v1/nodeb-ids", controller.GetNodebIdList) + router.GET("/v1/nodeb/:ranName", controller.GetNodeb) + router.GET("/v1/health", controller.HandleHealthCheckRequest) + router.PUT("/v1/nodeb/shutdown", newController.ShutdownHandler) + + port := fmt.Sprintf(":%d", config.Http.Port) + if err := http.ListenAndServe(port, router); err != nil { + log.Fatalf("#runNodebServer - fail to start http server. Error: %v", err) + } +} \ No newline at end of file diff --git a/E2Manager/main/http_server_test.go b/E2Manager/main/http_server_test.go new file mode 100644 index 0000000..c59403e --- /dev/null +++ b/E2Manager/main/http_server_test.go @@ -0,0 +1,143 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package main + +import ( + "e2mgr/configuration" + "github.com/stretchr/testify/assert" + "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "testing" +) + +func TestRunServer(t *testing.T) { + +} + +func TestParseConfigurationSuccess(t *testing.T) { + config := configuration.ParseConfiguration() + assert.Equal(t, 3800, config.Http.Port) + assert.Equal(t, 3801, config.Rmr.Port) + assert.Equal(t, 4096, config.Rmr.MaxMsgSize) + assert.Equal(t, "info", config.Logging.LogLevel) + assert.Equal(t, 100, config.NotificationResponseBuffer) + assert.Equal(t,5, config.BigRedButtonTimeoutSec) +} + +func TestParseConfigurationFileNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil{ + t.Errorf("#http_server_test.TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil{ + t.Errorf("#http_server_test.TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + assert.Panics(t, func (){configuration.ParseConfiguration()}) +} + +func TestRmrConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "logging":map[string]interface{}{"logLevel":"info"}, + "http":map[string]interface{}{"port":3800}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#http_server.fillRmrConfig - failed to fill RMR configuration: The entry 'rmr' not found\n", func (){configuration.ParseConfiguration()}) +} + +func TestLoggingConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil{ + t.Errorf("#http_server_test.TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil{ + t.Errorf("#http_server_test.TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr":map[string]interface{}{"port":3801, "maxMsgSize":4096}, + "http":map[string]interface{}{"port":3800}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil{ + t.Errorf("#http_server_test.TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#http_server.fillLoggingConfig - failed to fill logging configuration: The entry 'logging' not found\n", + func (){configuration.ParseConfiguration()}) +} + +func TestHttpConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil{ + t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil{ + t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr":map[string]interface{}{"port":3801, "maxMsgSize":4096}, + "logging":map[string]interface{}{"logLevel":"info"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil{ + t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil{ + t.Errorf("#http_server_test.TestHttpConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#http_server.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n", + func (){configuration.ParseConfiguration()}) +} diff --git a/E2Manager/managers/notification_manager.go b/E2Manager/managers/notification_manager.go new file mode 100644 index 0000000..72b42a9 --- /dev/null +++ b/E2Manager/managers/notification_manager.go @@ -0,0 +1,58 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package managers + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "time" +) + +type NotificationManager struct{ + rnibReaderProvider func() reader.RNibReader + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewNotificationManager(rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) *NotificationManager { + return &NotificationManager{ + rnibReaderProvider: rnibReaderProvider, + rnibWriterProvider: rnibWriterProvider, + } +} +//TODO add NEWHandler with log +func (m NotificationManager) HandleMessage(logger *logger.Logger, e2Sessions sessions.E2Sessions, mbuf *rmrCgo.MBuf, responseChannel chan<- *models.NotificationResponse){ + + provider := providers.NewNotificationHandlerProvider(m.rnibReaderProvider, m.rnibWriterProvider) + notificationHandler, err := provider.GetNotificationHandler(mbuf.MType) + + if err != nil { + logger.Errorf(fmt.Sprintf("%s", err)) + return + } + + notificationRequest := models.NotificationRequest{RanName: mbuf.Meid, Len: mbuf.Len, Payload: *mbuf.Payload, + StartTime: time.Now(), TransactionId: string(*mbuf.XAction)} + + go notificationHandler.Handle(logger, e2Sessions, ¬ificationRequest, responseChannel) +} \ No newline at end of file diff --git a/E2Manager/mocks/rmrMessengerMock.go b/E2Manager/mocks/rmrMessengerMock.go new file mode 100644 index 0000000..ff6c71f --- /dev/null +++ b/E2Manager/mocks/rmrMessengerMock.go @@ -0,0 +1,60 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package mocks + +import ( + "e2mgr/logger" + "e2mgr/rmrCgo" + "github.com/stretchr/testify/mock" +) + +type RmrMessengerMock struct { + mock.Mock +} + +func (m *RmrMessengerMock) Init(port string, maxMsgSize int, flags int, logger *logger.Logger) *rmrCgo.RmrMessenger{ + args := m.Called(port, maxMsgSize, flags, logger) + return args.Get(0).(*rmrCgo.RmrMessenger) +} + +func (m *RmrMessengerMock) SendMsg(msg *rmrCgo.MBuf, maxMsgSize int) (*rmrCgo.MBuf, error){ + args := m.Called(msg, maxMsgSize) + return args.Get(0).(*rmrCgo.MBuf), args.Error(1) +} + +func (m *RmrMessengerMock) RecvMsg() (*rmrCgo.MBuf, error){ + args := m.Called( ) + return args.Get(0).(*rmrCgo.MBuf), args.Error(1) +} + +func (m *RmrMessengerMock) RtsMsg(msg *rmrCgo.MBuf){ + m.Called( ) +} + +func (m *RmrMessengerMock) FreeMsg(){ + m.Called( ) +} + +func (m *RmrMessengerMock) IsReady() bool{ + args := m.Called( ) + return args.Bool(0) +} + +func (m *RmrMessengerMock) Close(){ + m.Called( ) +} \ No newline at end of file diff --git a/E2Manager/mocks/rnibReaderMock.go b/E2Manager/mocks/rnibReaderMock.go new file mode 100644 index 0000000..20bad28 --- /dev/null +++ b/E2Manager/mocks/rnibReaderMock.go @@ -0,0 +1,138 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "github.com/stretchr/testify/mock" +) + +type RnibReaderMock struct { + mock.Mock +} + +func (m *RnibReaderMock) GetNodeb(inventoryName string) (*entities.NodebInfo, common.IRNibError) { + args := m.Called(inventoryName) + + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*entities.NodebInfo), errArg.(common.IRNibError); + } + + return args.Get(0).(*entities.NodebInfo), nil +} + +func (m *RnibReaderMock) GetNodebByGlobalNbId(nodeType entities.Node_Type, globalNbId *entities.GlobalNbId) (*entities.NodebInfo, common.IRNibError) { + args := m.Called(nodeType, globalNbId) + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*entities.NodebInfo), errArg.(common.IRNibError); + } + + return args.Get(0).(*entities.NodebInfo), nil +} + +func (m *RnibReaderMock) GetCellList(inventoryName string) (*entities.Cells, common.IRNibError) { + args := m.Called(inventoryName) + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*entities.Cells), errArg.(common.IRNibError); + } + + return args.Get(0).(*entities.Cells), nil +} + +func (m *RnibReaderMock) GetListGnbIds()(*[]*entities.NbIdentity, common.IRNibError) { + args := m.Called() + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*[]*entities.NbIdentity), errArg.(common.IRNibError); + } + + return args.Get(0).(*[]*entities.NbIdentity), nil +} + +func (m *RnibReaderMock) GetListEnbIds()(*[]*entities.NbIdentity, common.IRNibError) { + args := m.Called() + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*[]*entities.NbIdentity), errArg.(common.IRNibError); + } + + return args.Get(0).(*[]*entities.NbIdentity), nil + +} + +func (m *RnibReaderMock) GetCountGnbList()(int, common.IRNibError) { + args := m.Called() + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Int(0), errArg.(common.IRNibError); + } + + return args.Int(0), nil + +} + +func (m *RnibReaderMock) GetCell(inventoryName string, pci uint32) (*entities.Cell, common.IRNibError) { + args := m.Called(inventoryName, pci) + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*entities.Cell), errArg.(common.IRNibError); + } + + return args.Get(0).(*entities.Cell), nil +} + +func (m *RnibReaderMock) GetCellById(cellType entities.Cell_Type, cellId string) (*entities.Cell, common.IRNibError) { + args := m.Called(cellType, cellId) + + errArg := args.Get(1); + + if (errArg != nil) { + return args.Get(0).(*entities.Cell), errArg.(common.IRNibError); + } + + return args.Get(0).(*entities.Cell), nil +} + +func (m *RnibReaderMock) GetListNodebIds()([]*entities.NbIdentity, common.IRNibError){ + args := m.Called() + + errArg := args.Get(1) + + if errArg != nil { + return args.Get(0).([]*entities.NbIdentity), errArg.(common.IRNibError) + } + + return args.Get(0).([]*entities.NbIdentity), nil +} \ No newline at end of file diff --git a/E2Manager/mocks/rnibWriterMock.go b/E2Manager/mocks/rnibWriterMock.go new file mode 100644 index 0000000..cae77cd --- /dev/null +++ b/E2Manager/mocks/rnibWriterMock.go @@ -0,0 +1,53 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type RnibWriterMock struct { + mock.Mock +} + +func (rnibWriterMock *RnibWriterMock) SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) common.IRNibError { + args := rnibWriterMock.Called(nbIdentity, nb) + + errArg := args.Get(0) + + if errArg != nil { + return errArg.(common.IRNibError) + } + + return nil +} + +func (rnibWriterMock *RnibWriterMock) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) common.IRNibError { + args := rnibWriterMock.Called(inventoryName, ranLoadInformation) + + errArg := args.Get(0) + + if errArg != nil { + return errArg.(common.IRNibError) + } + + return nil +} + diff --git a/E2Manager/mocks/sdlInstanceMock.go b/E2Manager/mocks/sdlInstanceMock.go new file mode 100644 index 0000000..505ca62 --- /dev/null +++ b/E2Manager/mocks/sdlInstanceMock.go @@ -0,0 +1,133 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. + +package mocks + +import "github.com/stretchr/testify/mock" + +type MockSdlInstance struct { + mock.Mock +} + +func (m *MockSdlInstance) SubscribeChannel(cb func(string, ...string), channels ...string) error { + a := m.Called(cb, channels) + return a.Error(0) +} + +func (m *MockSdlInstance) UnsubscribeChannel(channels ...string) error { + a := m.Called(channels) + return a.Error(0) +} + +func (m *MockSdlInstance) SetAndPublish(channelsAndEvents []string, pairs ...interface{}) error { + a := m.Called(channelsAndEvents, pairs) + return a.Error(0) +} + +func (m *MockSdlInstance) SetIfAndPublish(channelsAndEvents []string, key string, oldData, newData interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, oldData, newData) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) SetIfNotExistsAndPublish(channelsAndEvents []string, key string, data interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) RemoveAndPublish(channelsAndEvents []string, keys []string) error { + a := m.Called(channelsAndEvents, keys) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveIfAndPublish(channelsAndEvents []string, key string, data interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) RemoveAllAndPublish(channelsAndEvents []string) error { + a := m.Called(channelsAndEvents) + return a.Error(0) +} + +func (m *MockSdlInstance) Set(pairs ...interface{}) error { + a := m.Called(pairs) + return a.Error(0) +} + +func (m *MockSdlInstance) Get(keys []string) (map[string]interface{}, error) { + a := m.Called(keys) + return a.Get(0).(map[string]interface{}), a.Error(1) +} + +func (m *MockSdlInstance) GetAll() ([]string, error) { + a := m.Called() + return a.Get(0).([]string), a.Error(1) +} + +func (m *MockSdlInstance) Close() error { + a := m.Called() + return a.Error(0) +} + +func (m *MockSdlInstance) Remove(keys []string) error { + a := m.Called(keys) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveAll() error { + a := m.Called() + return a.Error(0) +} + +func (m *MockSdlInstance) SetIf(key string, oldData, newData interface{}) (bool, error) { + a := m.Called(key, oldData, newData) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) SetIfNotExists(key string, data interface{}) (bool, error) { + a := m.Called(key, data) + return a.Bool(0), a.Error(1) +} +func (m *MockSdlInstance) RemoveIf(key string, data interface{}) (bool, error) { + a := m.Called(key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) AddMember(group string, member ...interface{}) error{ + a := m.Called(group, member) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveMember(group string, member ...interface{}) error { + a := m.Called(group, member) + return a.Error(0) +} +func (m *MockSdlInstance) RemoveGroup(group string) error { + a := m.Called(group) + return a.Error(0) +} +func (m *MockSdlInstance) GetMembers(group string) ([]string, error) { + a := m.Called(group) + return a.Get(0).([]string), a.Error(1) +} +func (m *MockSdlInstance) IsMember(group string, member interface{}) (bool, error){ + a := m.Called(group, member) + return a.Bool(0), a.Error(1) +} +func (m *MockSdlInstance) GroupSize(group string) (int64, error){ + a := m.Called(group,) + return int64(a.Int(0)), a.Error(1) +} diff --git a/E2Manager/models/e2_request_message.go b/E2Manager/models/e2_request_message.go new file mode 100644 index 0000000..3ac82cc --- /dev/null +++ b/E2Manager/models/e2_request_message.go @@ -0,0 +1,52 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +import ( + "e2mgr/logger" + "fmt" +) + +type E2RequestMessage struct { + transactionId string + ranIp string + ranPort uint16 + ranName string + payload []byte +} + +func (e2RequestMessage E2RequestMessage) RanName() string { + return e2RequestMessage.ranName +} + +func (e2RequestMessage E2RequestMessage) TransactionId() string { + return e2RequestMessage.transactionId +} + +func NewE2RequestMessage(transactionId string, ranIp string, ranPort uint16, ranName string, payload []byte) *E2RequestMessage { + return &E2RequestMessage{transactionId: transactionId, ranIp: ranIp, ranPort: ranPort, ranName: ranName, payload: payload} +} + +func (e2RequestMessage E2RequestMessage) GetMessageAsBytes(logger *logger.Logger) []byte { + messageStringWithoutPayload := fmt.Sprintf("%s|%d|%s|%d|", e2RequestMessage.ranIp, + e2RequestMessage.ranPort, e2RequestMessage.ranName, + len(e2RequestMessage.payload)) + logger.Debugf("#e2_request_message.GetMessageAsBytes - messageStringWithoutPayload: %s", messageStringWithoutPayload) + messageBytesWithoutPayload := []byte(messageStringWithoutPayload) + return append(messageBytesWithoutPayload, e2RequestMessage.payload...) +} diff --git a/E2Manager/models/e2_request_message_test.go b/E2Manager/models/e2_request_message_test.go new file mode 100644 index 0000000..4c5ab09 --- /dev/null +++ b/E2Manager/models/e2_request_message_test.go @@ -0,0 +1,48 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +import ( + "e2mgr/logger" + "e2mgr/tests" + "encoding/hex" + "github.com/stretchr/testify/assert" + "testing" +) + +const transactionId = "transactionId" +const expectedMessageAsBytesHex = "31302e302e302e337c353535357c746573747c347c01020304" + +func TestNewE2RequestMessage(t *testing.T){ + e2 :=NewE2RequestMessage(transactionId, tests.RanIp, uint16(tests.Port), tests.RanName, tests.DummyPayload) + assert.NotNil(t, e2) + assert.IsType(t, *e2, E2RequestMessage{}) + assert.Equal(t, tests.RanName, e2.RanName()) + assert.Equal(t, transactionId, e2.TransactionId()) +} + +func TestGetMessageAsBytes(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#nodeb_controller_test.TestHandleRequestSuccess - failed to initialize logger, error: %s", err) + } + + e2 :=NewE2RequestMessage(transactionId, tests.RanIp, uint16(tests.Port), tests.RanName, tests.DummyPayload) + bytes := e2.GetMessageAsBytes(log) + assert.Equal(t, expectedMessageAsBytesHex, hex.EncodeToString(bytes)) +} \ No newline at end of file diff --git a/E2Manager/models/error_response.go b/E2Manager/models/error_response.go new file mode 100644 index 0000000..987e520 --- /dev/null +++ b/E2Manager/models/error_response.go @@ -0,0 +1,23 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +type ErrorResponse struct { + Code int `json:"errorCode"` + Message string `json:"errorMessage"` +} diff --git a/E2Manager/models/notification_request.go b/E2Manager/models/notification_request.go new file mode 100644 index 0000000..4f3cf96 --- /dev/null +++ b/E2Manager/models/notification_request.go @@ -0,0 +1,28 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +import "time" + +type NotificationRequest struct { + RanName string + Len int + Payload []byte + StartTime time.Time + TransactionId string +} diff --git a/E2Manager/models/notification_response.go b/E2Manager/models/notification_response.go new file mode 100644 index 0000000..1ed3ec7 --- /dev/null +++ b/E2Manager/models/notification_response.go @@ -0,0 +1,33 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +import ( + "e2mgr/logger" +) + +type NotificationResponse struct { + + MgsType int + RanName string + Payload []byte +} + +func (response NotificationResponse) GetMessageAsBytes(logger *logger.Logger) []byte { + return response.Payload +} diff --git a/E2Manager/models/request_details.go b/E2Manager/models/request_details.go new file mode 100644 index 0000000..ae2484c --- /dev/null +++ b/E2Manager/models/request_details.go @@ -0,0 +1,24 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +type RequestDetails struct { + RanIp string `json:"ranIp"` + RanPort uint16 `json:"ranPort"` + RanName string `json:"ranName"` +} diff --git a/E2Manager/models/request_interface.go b/E2Manager/models/request_interface.go new file mode 100644 index 0000000..cde078b --- /dev/null +++ b/E2Manager/models/request_interface.go @@ -0,0 +1,22 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package models + +type Request interface { + +} diff --git a/E2Manager/providers/incoming_request_handler_provider.go b/E2Manager/providers/incoming_request_handler_provider.go new file mode 100644 index 0000000..731fb25 --- /dev/null +++ b/E2Manager/providers/incoming_request_handler_provider.go @@ -0,0 +1,66 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package providers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/handlers" + "e2mgr/logger" + "e2mgr/rNibWriter" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" +) + +type IncomingRequest string + +const( + ShutdownRequest IncomingRequest = "Shutdown" +) + +type IncomingRequestHandlerProvider struct{ + requestMap map[IncomingRequest]handlers.RequestHandler + logger *logger.Logger +} + +func NewIncomingRequestHandlerProvider(logger *logger.Logger, config *configuration.Configuration, rNibWriterProvider func() rNibWriter.RNibWriter, + rNibReaderProvider func() reader.RNibReader) *IncomingRequestHandlerProvider { + + return &IncomingRequestHandlerProvider{ + requestMap: initRequestHandlerMap(config, rNibWriterProvider, rNibReaderProvider), + logger: logger, + } +} + +func initRequestHandlerMap(config *configuration.Configuration, rNibWriterProvider func() rNibWriter.RNibWriter, + rNibReaderProvider func() reader.RNibReader) map[IncomingRequest]handlers.RequestHandler { + + return map[IncomingRequest]handlers.RequestHandler{ + ShutdownRequest: handlers.NewDeleteAllRequestHandler(config, rNibWriterProvider, rNibReaderProvider), //TODO change to pointer + } +} + +func (provider IncomingRequestHandlerProvider) GetHandler(requestType IncomingRequest) (handlers.RequestHandler, error) { + handler, ok := provider.requestMap[requestType] + + if !ok { + provider.logger.Errorf("#incoming_request_handler_provider.GetHandler - Cannot find handler for request type: %s", requestType) + return nil, e2managererrors.NewInternalError() + } + + return handler, nil +} diff --git a/E2Manager/providers/notification_handler_provider.go b/E2Manager/providers/notification_handler_provider.go new file mode 100644 index 0000000..3a101db --- /dev/null +++ b/E2Manager/providers/notification_handler_provider.go @@ -0,0 +1,65 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package providers + +import ( + "e2mgr/handlers" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" +) + +type NotificationHandlerProvider struct{ + notificationHandlers map[int]handlers.NotificationHandler + rnibReaderProvider func() reader.RNibReader + rnibWriterProvider func() rNibWriter.RNibWriter +} + +func NewNotificationHandlerProvider(rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) *NotificationHandlerProvider { + return &NotificationHandlerProvider{ + rnibReaderProvider: rnibReaderProvider, + rnibWriterProvider: rnibWriterProvider, + notificationHandlers: initNotificationHandlersMap(rnibReaderProvider, rnibWriterProvider), + } +} + +func initNotificationHandlersMap(rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) map[int]handlers.NotificationHandler{ + return map[int]handlers.NotificationHandler{ + //TODO change handlers.NotificationHandler to *handlers.NotificationHandler + rmrCgo.RIC_X2_SETUP_RESP: handlers.X2SetupResponseNotificationHandler{}, + rmrCgo.RIC_X2_SETUP_FAILURE: handlers.X2SetupFailureResponseNotificationHandler{}, + rmrCgo.RIC_ENDC_X2_SETUP_RESP: handlers.EndcX2SetupResponseNotificationHandler{}, + rmrCgo.RIC_ENDC_X2_SETUP_FAILURE: handlers.EndcX2SetupFailureResponseNotificationHandler{}, + rmrCgo.RIC_SCTP_CONNECTION_FAILURE: handlers.NewRanLostConnectionHandler(rnibReaderProvider, rnibWriterProvider), + rmrCgo.RIC_ENB_LOAD_INFORMATION: handlers.RicEnbLoadInformationNotificationHandler{}, + rmrCgo.RIC_ENB_CONF_UPDATE: handlers.X2EnbConfigurationUpdateHandler{}, + rmrCgo.RIC_ENDC_CONF_UPDATE: handlers.EndcConfigurationUpdateHandler{}, + } +} + +func (provider NotificationHandlerProvider) GetNotificationHandler(messageType int) (handlers.NotificationHandler, error) { + handler, ok := provider.notificationHandlers[messageType] + + if !ok { + return nil, fmt.Errorf("notification handler not found for message %d",messageType) + } + + return handler, nil + +} diff --git a/E2Manager/providers/notification_handler_provider_test.go b/E2Manager/providers/notification_handler_provider_test.go new file mode 100644 index 0000000..ecdd744 --- /dev/null +++ b/E2Manager/providers/notification_handler_provider_test.go @@ -0,0 +1,106 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package providers + +import ( + "e2mgr/mocks" + "e2mgr/rNibWriter" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "strings" + "testing" + + "e2mgr/handlers" + "e2mgr/rmrCgo" +) + +/* + * Verify support for known providers. + */ + +func TestGetNotificationHandlerSuccess(t *testing.T) { + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + var testCases = []struct { + msgType int + handler handlers.NotificationHandler + }{ + {rmrCgo.RIC_X2_SETUP_RESP /*successful x2 setup response*/, handlers.X2SetupResponseNotificationHandler{}}, + {rmrCgo.RIC_X2_SETUP_FAILURE /*unsuccessful x2 setup response*/, handlers.X2SetupFailureResponseNotificationHandler{}}, + {rmrCgo.RIC_ENDC_X2_SETUP_RESP /*successful en-dc x2 setup response*/,handlers.EndcX2SetupResponseNotificationHandler{}}, + {rmrCgo.RIC_ENDC_X2_SETUP_FAILURE /*unsuccessful en-dc x2 setup response*/,handlers.EndcX2SetupFailureResponseNotificationHandler{}}, + {rmrCgo.RIC_SCTP_CONNECTION_FAILURE /*sctp errors*/, handlers.NewRanLostConnectionHandler(rnibReaderProvider, rnibWriterProvider)}, + {rmrCgo.RIC_ENB_LOAD_INFORMATION, handlers.RicEnbLoadInformationNotificationHandler{}}, + {rmrCgo.RIC_ENB_CONF_UPDATE, handlers.X2EnbConfigurationUpdateHandler{}}, + {rmrCgo.RIC_ENDC_CONF_UPDATE, handlers.EndcConfigurationUpdateHandler{}}, + } + for _, tc := range testCases { + + provider := NewNotificationHandlerProvider(rnibReaderProvider, rnibWriterProvider) + t.Run(fmt.Sprintf("%d", tc.msgType), func(t *testing.T) { + handler, err := provider.GetNotificationHandler(tc.msgType) + if err != nil { + t.Errorf("want: handler for message type %d, got: error %s", tc.msgType, err) + } + //Note struct is empty, so it will match any other empty struct. + // https://golang.org/ref/spec#Comparison_operators: Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal. + if /*handler != tc.handler &&*/ strings.Compare(fmt.Sprintf("%T", handler), fmt.Sprintf("%T", tc.handler)) != 0 { + t.Errorf("want: handler %T for message type %d, got: %T", tc.handler,tc.msgType, handler) + } + }) + } +} + +/* + * Verify handling of a request for an unsupported message. + */ + +func TestGetNotificationHandlerFailure(t *testing.T) { + var testCases = []struct { + msgType int + errorText string + }{ + {9999 /*unknown*/, "notification handler not found"}, + } + for _, tc := range testCases { + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + provider := NewNotificationHandlerProvider(rnibReaderProvider, rnibWriterProvider) + t.Run(fmt.Sprintf("%d", tc.msgType), func(t *testing.T) { + _, err := provider.GetNotificationHandler(tc.msgType) + if err == nil { + t.Errorf("want: no handler for message type %d, got: success", tc.msgType) + } + if !strings.Contains(fmt.Sprintf("%s", err), tc.errorText) { + t.Errorf("want: error [%s] for message type %d, got: %s", tc.errorText, tc.msgType, err) + } + }) + } +} diff --git a/E2Manager/providers/request_handler_provider.go b/E2Manager/providers/request_handler_provider.go new file mode 100644 index 0000000..a29f980 --- /dev/null +++ b/E2Manager/providers/request_handler_provider.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package providers + +import ( + "e2mgr/handlers" + "e2mgr/logger" + "e2mgr/rNibWriter" + "errors" + "fmt" +) + +var requestMap map[string]handlers.Handler + +type RequestHandlerProvider struct{} + +func NewRequestHandlerProvider(rnibWriterProvider func() rNibWriter.RNibWriter) *RequestHandlerProvider { + requestMap = initRequestMap(rnibWriterProvider) + return &RequestHandlerProvider{} +} + +func initRequestMap(rnibWriterProvider func() rNibWriter.RNibWriter) map[string]handlers.Handler { + return map[string]handlers.Handler{ + "x2-setup": handlers.NewSetupRequestHandler(rnibWriterProvider), + "endc-setup": handlers.NewEndcSetupRequestHandler(rnibWriterProvider), + } +} + +func (provider RequestHandlerProvider) GetHandler(logger *logger.Logger, requestType string) (handlers.Handler, error) { + handler, ok := requestMap[requestType] + + if !ok { + errorMessage := fmt.Sprintf("#request_handler_provider.GetHandler - Cannot find handler for request type: %s", requestType) + logger.Errorf(errorMessage) + return nil, errors.New(errorMessage) + } + + return handler, nil +} diff --git a/E2Manager/providers/request_handler_provider_test.go b/E2Manager/providers/request_handler_provider_test.go new file mode 100644 index 0000000..d8d4e74 --- /dev/null +++ b/E2Manager/providers/request_handler_provider_test.go @@ -0,0 +1,123 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package providers + +import ( + "e2mgr/handlers" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rNibWriter" + "testing" +) + +const x2SetupRequestType = "x2-setup" +const endcSetupRequestType = "endc-setup" + +/* + * Verify consturctor. + */ +func TestNewRequestHandlerProvider(t *testing.T) { + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + provider := NewRequestHandlerProvider(rnibWriterProvider) + if provider == nil { + t.Errorf("want: provider, got: nil") + } +} + +/* + * Verify support for known providers. + */ + +func TestGetX2SetupRequestHandler(t *testing.T) { + + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + provider := NewRequestHandlerProvider(rnibWriterProvider) + + handler, err := provider.GetHandler(log, x2SetupRequestType) + + if handler == nil { + t.Errorf("failed to get x2 setup handler") + } + + _, ok := handler.(*handlers.SetupRequestHandler) + + if !ok { + t.Errorf("failed to get x2 setup handler") + } +} + +func TestGetEndcSetupRequestHandler(t *testing.T) { + + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + provider := NewRequestHandlerProvider(rnibWriterProvider) + + handler, err := provider.GetHandler(log, endcSetupRequestType) + + if handler == nil { + t.Errorf("failed to get endc setup handler") + } + + _, ok := handler.(*handlers.EndcSetupRequestHandler) + + if !ok { + t.Errorf("failed to get endc setup handler") + } +} + +/* + * Verify handling of a request for an unsupported request. + */ + +func TestGetHandlerFailure(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + rnibWriterProvider := func() rNibWriter.RNibWriter { + return &mocks.RnibWriterMock{} + } + + provider := NewRequestHandlerProvider(rnibWriterProvider) + + _, err = provider.GetHandler(log, "dummy") + + if err == nil { + t.Errorf("Provider should had respond with error for dummy request type") + } +} diff --git a/E2Manager/rNibWriter/rNibWriter.go b/E2Manager/rNibWriter/rNibWriter.go new file mode 100644 index 0000000..14f1564 --- /dev/null +++ b/E2Manager/rNibWriter/rNibWriter.go @@ -0,0 +1,210 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rNibWriter + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "errors" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/sdlgo" + "github.com/golang/protobuf/proto" +) + + + +var writerPool *common.Pool + +type rNibWriterInstance struct { + sdl *common.ISdlInstance + namespace string +} +/* +RNibWriter interface allows saving data to the redis DB + */ +type RNibWriter interface { + SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) common.IRNibError + SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) common.IRNibError +} +/* +Init initializes the infrastructure required for the RNibWriter instance + */ +func Init(namespace string, poolSize int) { + initPool(poolSize, + func() interface{} { + var sdlI common.ISdlInstance = sdlgo.NewSdlInstance(namespace, sdlgo.NewDatabase()) + return &rNibWriterInstance{sdl: &sdlI, namespace: namespace} + }, + func(obj interface{}) { + (*obj.(*rNibWriterInstance).sdl).Close() + }) +} +/* +InitPool initializes the writer's instances pool + */ +func initPool(poolSize int, newObj func() interface{}, destroyObj func(interface{})) { + writerPool = common.NewPool(poolSize, newObj, destroyObj) +} +/* +GetRNibWriter returns RNibWriter instance from the pool + */ +func GetRNibWriter() RNibWriter { + return writerPool.Get().(RNibWriter) +} +/* +SaveNodeb saves nodeB entity data in the redis DB according to the specified data model + */ +func (w *rNibWriterInstance) SaveNodeb(nbIdentity *entities.NbIdentity, entity *entities.NodebInfo) common.IRNibError { + + isNotEmptyIdentity := isNotEmpty(nbIdentity) + + if isNotEmptyIdentity && entity.GetNodeType() == entities.Node_UNKNOWN{ + return common.NewValidationError(errors.New( fmt.Sprintf("#rNibWriter.saveNodeB - Unknown responding node type, entity: %v", entity))) + } + defer writerPool.Put(w) + data, err := proto.Marshal(entity) + if err != nil { + return common.NewInternalError(err) + } + var pairs []interface{} + key, rNibErr := common.ValidateAndBuildNodeBNameKey(nbIdentity.InventoryName) + if rNibErr != nil{ + return rNibErr + } + pairs = append(pairs, key, data) + + if isNotEmptyIdentity { + key, rNibErr = common.ValidateAndBuildNodeBIdKey(entity.GetNodeType().String(), nbIdentity.GlobalNbId.GetPlmnId(), nbIdentity.GlobalNbId.GetNbId()) + if rNibErr != nil{ + return rNibErr + } + pairs = append(pairs, key, data) + } + + if entity.GetEnb() != nil { + pairs, rNibErr = appendEnbCells(nbIdentity, entity.GetEnb().GetServedCells(), pairs) + if rNibErr != nil{ + return rNibErr + } + } + if entity.GetGnb() != nil { + pairs, rNibErr = appendGnbCells(nbIdentity, entity.GetGnb().GetServedNrCells(), pairs) + if rNibErr != nil{ + return rNibErr + } + } + err = (*w.sdl).Set(pairs) + if err != nil { + return common.NewInternalError(err) + } + if isNotEmptyIdentity { + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + return common.NewInternalError(err) + } + err = (*w.sdl).AddMember(entity.GetNodeType().String(), nbIdData) + if err != nil { + return common.NewInternalError(err) + } + } + return nil +} + +/* +SaveRanLoadInformation stores ran load information for the provided ran +*/ +func (w *rNibWriterInstance) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) common.IRNibError { + + defer writerPool.Put(w) + + key, rnibErr:= common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if rnibErr != nil { + return rnibErr + } + + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + pairs = append(pairs, key, data) + + err = (*w.sdl).Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +/* +Close closes writer's pool + */ +func Close(){ + writerPool.Close() +} + +func appendEnbCells(nbIdentity *entities.NbIdentity, cells []*entities.ServedCellInfo, pairs []interface{}) ([]interface{}, common.IRNibError) { + for _, cell := range cells { + cellEntity := entities.Cell{Type:entities.Cell_LTE_CELL, Cell:&entities.Cell_ServedCellInfo{ServedCellInfo:cell}} + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + return pairs, common.NewInternalError(err) + } + key, rNibErr := common.ValidateAndBuildCellIdKey(cell.GetCellId()) + if rNibErr != nil{ + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + key, rNibErr = common.ValidateAndBuildCellNamePciKey(nbIdentity.InventoryName, cell.GetPci()) + if rNibErr != nil{ + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + } + return pairs, nil +} + +func appendGnbCells(nbIdentity *entities.NbIdentity, cells []*entities.ServedNRCell, pairs []interface{}) ([]interface{}, common.IRNibError) { + for _, cell := range cells { + cellEntity := entities.Cell{Type:entities.Cell_NR_CELL, Cell:&entities.Cell_ServedNrCell{ServedNrCell:cell}} + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + return pairs, common.NewInternalError(err) + } + key, rNibErr := common.ValidateAndBuildNrCellIdKey(cell.GetServedNrCellInformation().GetCellId()) + if rNibErr != nil{ + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + key, rNibErr = common.ValidateAndBuildCellNamePciKey(nbIdentity.InventoryName, cell.GetServedNrCellInformation().GetNrPci()) + if rNibErr != nil{ + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + } + return pairs, nil +} + +func isNotEmpty(nbIdentity *entities.NbIdentity) bool { + return nbIdentity.GlobalNbId != nil && nbIdentity.GlobalNbId.PlmnId != "" && nbIdentity.GlobalNbId.NbId != "" +} \ No newline at end of file diff --git a/E2Manager/rNibWriter/rNibWriter_test.go b/E2Manager/rNibWriter/rNibWriter_test.go new file mode 100644 index 0000000..97535cc --- /dev/null +++ b/E2Manager/rNibWriter/rNibWriter_test.go @@ -0,0 +1,587 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rNibWriter + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/mocks" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "errors" + "fmt" + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes/timestamp" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +func TestInitRNibWriter(t *testing.T) { + writerPool = nil + initSdlInstanceMock(namespace, 1) + available, created := writerPool.Stats() + assert.Equal(t, available, 0, "number of available objects in the writerPool should be 0") + assert.Equal(t, created, 0, "number of created objects in the writerPool should be 0") + w := GetRNibWriter() + assert.NotNil(t, w) +} + +func TestInitPool(t *testing.T) { + writerPool = nil + sdlInstanceMock := new(mocks.MockSdlInstance) + initPool(1, func() interface{} { + sdlI := common.ISdlInstance(sdlInstanceMock) + return &rNibWriterInstance{sdl: &sdlI, namespace: namespace} + }, + func(obj interface{}) { + }, + ) + assert.NotNil(t, writerPool) + assert.NotNil(t, writerPool.New) + assert.NotNil(t, writerPool.Destroy) + available, created := writerPool.Stats() + assert.Equal(t, 0, available, "number of available objects in the writerPool should be 0") + assert.Equal(t, 0, created, "number of created objects in the writerPool should be 0") +} + +var namespace = "namespace" + +func initSdlInstanceMock(namespace string, poolSize int) *mocks.MockSdlInstance { + sdlInstanceMock := new(mocks.MockSdlInstance) + initPool(poolSize, func() interface{} { + sdlI := common.ISdlInstance(sdlInstanceMock) + return &rNibWriterInstance{sdl: &sdlI, namespace: namespace} + }, + func(obj interface{}) { + }, + ) + return sdlInstanceMock +} + +func TestSaveEnb(t *testing.T) { + name := "name" + ranName := "RAN:" + name + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{CellId:"aaff", Pci:3} + cellEntity := entities.Cell{Type:entities.Cell_LTE_CELL, Cell:&entities.Cell_ServedCellInfo{ServedCellInfo:cell}} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} + data, err := proto.Marshal(&nb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal Cell entity. Error: %v", err) + } + var setExpected []interface{} + setExpected = append(setExpected, ranName, data) + setExpected = append(setExpected, "ENB:02f829:4a952a0a", data) + setExpected = append(setExpected, fmt.Sprintf("CELL:%s", cell.GetCellId()), cellData) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetPci()), cellData) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB Identity entity. Error: %v", err) + } + sdlInstanceMock.On("AddMember", "ENB", []interface{}{nbIdData}).Return(e) + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.Nil(t, rNibErr) +} + +func TestSaveEnbCellIdValidationFailure(t *testing.T) { + name := "name" + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{Pci:3} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} + + nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.Equal(t, common.VALIDATION_ERROR, rNibErr.GetCode()) + assert.Equal(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildCellIdKey - an empty cell id received", rNibErr.Error()) +} + +func TestSaveEnbInventoryNameValidationFailure(t *testing.T) { + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{CellId:"aaa",Pci:3} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} + + nbIdentity := &entities.NbIdentity{InventoryName:"", GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.Equal(t, common.VALIDATION_ERROR, rNibErr.GetCode()) + assert.Equal(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildNodeBNameKey - an empty inventory name received", rNibErr.Error()) +} + +func TestSaveEnbOnClosedPool(t *testing.T) { + name := "name" + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} + data, err := proto.Marshal(&nb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnbOnClosedPool - Failed to marshal NodeB entity. Error: %v", err) + } + setExpected := []interface{}{name, data} + var e error + sdlInstanceMock.On("Set", setExpected).Return(e) + writerPool.Close() + nbIdentity := &entities.NbIdentity{} + assert.Panics(t, func(){w.SaveNodeb(nbIdentity, &nb)}) +} + +func TestSaveGnbCellIdValidationFailure(t *testing.T) { + name := "name" + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_GNB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + gnb := entities.Gnb{} + cellInfo:= &entities.ServedNRCellInformation{NrPci:2} + cell := &entities.ServedNRCell{ServedNrCellInformation:cellInfo} + gnb.ServedNrCells = []*entities.ServedNRCell{cell} + nb.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb} + + nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.Equal(t, common.VALIDATION_ERROR, rNibErr.GetCode()) + assert.Equal(t, "3 VALIDATION_ERROR - #utils.ValidateAndBuildNrCellIdKey - an empty cell id received", rNibErr.Error()) +} + +func TestSaveGnb(t *testing.T) { + name := "name" + ranName := "RAN:" + name + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_GNB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + gnb := entities.Gnb{} + cellInfo:= &entities.ServedNRCellInformation{NrPci:2,CellId:"ccdd"} + cell := &entities.ServedNRCell{ServedNrCellInformation:cellInfo} + cellEntity := entities.Cell{Type:entities.Cell_NR_CELL, Cell:&entities.Cell_ServedNrCell{ServedNrCell:cell}} + gnb.ServedNrCells = []*entities.ServedNRCell{cell} + nb.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb} + data, err := proto.Marshal(&nb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + + + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal Cell entity. Error: %v", err) + } + var setExpected []interface{} + setExpected = append(setExpected, ranName, data) + setExpected = append(setExpected, "GNB:02f829:4a952a0a", data) + setExpected = append(setExpected, fmt.Sprintf("NRCELL:%s", cell.GetServedNrCellInformation().GetCellId()), cellData) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetServedNrCellInformation().GetNrPci()), cellData) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal NodeB Identity entity. Error: %v", err) + } + sdlInstanceMock.On("AddMember", "GNB", []interface{}{nbIdData}).Return(e) + + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.Nil(t, rNibErr) +} + +func TestSaveRanLoadInformationSuccess(t *testing.T) { + inventoryName := "name" + loadKey, validationErr := common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationSuccess - Failed to build ran load infromation key. Error: %v", validationErr) + } + + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + + + ranLoadInformation := generateRanLoadInformation() + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err) + } + + var e error + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + + rNibErr := w.SaveRanLoadInformation(inventoryName, ranLoadInformation) + assert.Nil(t, rNibErr) +} + +func TestSaveRanLoadInformationMarshalNilFailure(t *testing.T) { + inventoryName := "name2" + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + + expectedErr := common.NewInternalError(errors.New("proto: Marshal called with nil")) + err:= w.SaveRanLoadInformation(inventoryName, nil) + assert.Equal(t, expectedErr, err) +} + +func TestSaveRanLoadInformationEmptyInventoryNameFailure(t *testing.T) { + inventoryName := "" + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + + err:= w.SaveRanLoadInformation(inventoryName, nil) + assert.NotNil(t, err) + assert.Equal(t, common.VALIDATION_ERROR, err.GetCode()) +} + +func TestSaveRanLoadInformationSdlFailure(t *testing.T) { + inventoryName := "name2" + + loadKey, validationErr := common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationSuccess - Failed to build ran load infromation key. Error: %v", validationErr) + } + + + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + + ranLoadInformation := generateRanLoadInformation() + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err) + } + + + expectedErr := errors.New("expected error") + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + + + rNibErr := w.SaveRanLoadInformation(inventoryName, ranLoadInformation) + assert.NotNil(t, rNibErr) + assert.Equal(t, common.INTERNAL_ERROR, rNibErr.GetCode()) + assert.Equal(t, expectedErr, rNibErr.GetError()) +} + +func generateCellLoadInformation() *entities.CellLoadInformation { + cellLoadInformation := entities.CellLoadInformation{} + + cellLoadInformation.CellId = "123" + + ulInterferenceOverloadIndication := entities.UlInterferenceOverloadIndication_HIGH_INTERFERENCE + cellLoadInformation.UlInterferenceOverloadIndications = []entities.UlInterferenceOverloadIndication{ulInterferenceOverloadIndication} + + ulHighInterferenceInformation := entities.UlHighInterferenceInformation{ + TargetCellId:"456", + UlHighInterferenceIndication:"xxx", + } + + cellLoadInformation.UlHighInterferenceInfos = []*entities.UlHighInterferenceInformation{&ulHighInterferenceInformation } + + cellLoadInformation.RelativeNarrowbandTxPower = &entities.RelativeNarrowbandTxPower{ + RntpPerPrb:"xxx", + RntpThreshold:entities.RntpThreshold_NEG_4, + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V1_ANT_PRT, + PB: 1, + PdcchInterferenceImpact:2, + EnhancedRntp: &entities.EnhancedRntp{ + EnhancedRntpBitmap:"xxx", + RntpHighPowerThreshold:entities.RntpThreshold_NEG_2, + EnhancedRntpStartTimes: []*entities.StartTime{&entities.StartTime{StartSfn:500,StartSubframeNumber:5}}, + }, + } + + cellLoadInformation.AbsInformation = &entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_FDD, + AbsPatternInfo:"xxx", + NumberOfCellSpecificAntennaPorts:entities.NumberOfCellSpecificAntennaPorts_V2_ANT_PRT, + MeasurementSubset:"xxx", + } + + cellLoadInformation.InvokeIndication = entities.InvokeIndication_ABS_INFORMATION + + cellLoadInformation.ExtendedUlInterferenceOverloadInfo = &entities.ExtendedUlInterferenceOverloadInfo{ + AssociatedSubframes:"xxx", + ExtendedUlInterferenceOverloadIndications:cellLoadInformation.UlInterferenceOverloadIndications, + } + + compInformationItem := &entities.CompInformationItem{ + CompHypothesisSets: []*entities.CompHypothesisSet{&entities.CompHypothesisSet{CellId: "789", CompHypothesis:"xxx"}}, + BenefitMetric:50, + } + + cellLoadInformation.CompInformation = &entities.CompInformation{ + CompInformationItems:[]*entities.CompInformationItem{compInformationItem}, + CompInformationStartTime:[]*entities.StartTime{&entities.StartTime{StartSfn:123,StartSubframeNumber:456}}, + } + + cellLoadInformation.DynamicDlTransmissionInformation = &entities.DynamicDlTransmissionInformation{ + State: entities.NaicsState_NAICS_ACTIVE, + TransmissionModes:"xxx", + PB: 2, + PAList:[]entities.PA{entities.PA_DB_NEG_3}, + } + + return &cellLoadInformation +} + +func generateRanLoadInformation() *entities.RanLoadInformation { + ranLoadInformation := entities.RanLoadInformation{} + + ranLoadInformation.LoadTimestamp = ×tamp.Timestamp{Seconds:time.Now().Unix(),Nanos: int32(time.Now().UnixNano())} + + + cellLoadInformation := generateCellLoadInformation() + ranLoadInformation.CellLoadInfos = []*entities.CellLoadInformation{cellLoadInformation} + + return &ranLoadInformation +} + +func TestSaveNilEntityFailure(t *testing.T) { + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + expectedErr := common.NewInternalError(errors.New("proto: Marshal called with nil")) + nbIdentity := &entities.NbIdentity{} + actualErr := w.SaveNodeb(nbIdentity, nil) + assert.Equal(t, expectedErr, actualErr) +} + +func TestSaveUnknownTypeEntityFailure(t *testing.T) { + writerPool = nil + initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + expectedErr := common.NewValidationError(errors.New("#rNibWriter.saveNodeB - Unknown responding node type, entity: ip:\"localhost\" port:5656 ")) + nbIdentity := &entities.NbIdentity{InventoryName:"name", GlobalNbId:&entities.GlobalNbId{PlmnId:"02f829", NbId:"4a952a0a"}} + nb := &entities.NodebInfo{} + nb.Port = 5656 + nb.Ip = "localhost" + actualErr := w.SaveNodeb(nbIdentity, nb) + assert.Equal(t, expectedErr, actualErr) +} + +func TestSaveEntityFailure(t *testing.T) { + name := "name" + plmnId := "02f829" + nbId := "4a952a0a" + + writerPool = nil + sdlInstanceMock := initSdlInstanceMock(namespace, 1) + w := GetRNibWriter() + gnb := entities.NodebInfo{} + gnb.NodeType = entities.Node_GNB + data, err := proto.Marshal(&gnb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEntityFailure - Failed to marshal NodeB entity. Error: %v", err) + } + nbIdentity := &entities.NbIdentity{InventoryName:name, GlobalNbId:&entities.GlobalNbId{PlmnId:plmnId, NbId:nbId}} + setExpected := []interface{}{"RAN:" + name, data} + setExpected = append(setExpected,"GNB:" + plmnId + ":" + nbId, data) + expectedErr := errors.New("expected error") + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + rNibErr := w.SaveNodeb(nbIdentity, &gnb) + assert.NotEmpty(t, rNibErr) +} + +func TestGetRNibWriterPoolNotInitializedFailure(t *testing.T) { + writerPool = nil + assert.Panics(t, func(){GetRNibWriter()}) +} + +func TestGetRNibWriter(t *testing.T) { + writerPool = nil + initSdlInstanceMock(namespace, 1) + received := GetRNibWriter() + assert.NotEmpty(t, received) + available, created := writerPool.Stats() + assert.Equal(t, 0, available, "number of available objects in the writerPool should be 0") + assert.Equal(t, 1, created, "number of created objects in the writerPool should be 1") + writerPool.Close() +} + +func TestClose(t *testing.T) { + writerPool = nil + instanceMock := initSdlInstanceMock(namespace, 2) + w1 := GetRNibWriter() + w2 := GetRNibWriter() + writerPool.Put(w1) + writerPool.Put(w2) + available, created := writerPool.Stats() + assert.Equal(t, 2, available, "number of available objects in the writerPool should be 2") + assert.Equal(t, 2, created, "number of created objects in the writerPool should be 2") + var e error + instanceMock.On("Close").Return(e) + Close() + available, created = writerPool.Stats() + assert.Equal(t, 0, available, "number of available objects in the writerPool should be 0") + assert.Equal(t, 0, created, "number of created objects in the writerPool should be 0") +} + +func TestCloseOnClosedPoolFailure(t *testing.T) { + writerPool = nil + instanceMock := initSdlInstanceMock(namespace, 1) + w1 := GetRNibWriter() + writerPool.Put(w1) + available, created := writerPool.Stats() + assert.Equal(t, 1, available, "number of available objects in the writerPool should be 1") + assert.Equal(t, 1, created, "number of created objects in the writerPool should be 1") + var e error + instanceMock.On("Close").Return(e) + Close() + assert.Panics(t, func(){Close()}) +} + +func TestCloseFailure(t *testing.T) { + writerPool = nil + instanceMock := initSdlInstanceMock(namespace, 2) + w1 := GetRNibWriter() + writerPool.Put(w1) + available, created := writerPool.Stats() + assert.Equal(t, 1, available, "number of available objects in the writerPool should be 1") + assert.Equal(t, 1, created, "number of created objects in the writerPool should be 1") + e := errors.New("expected error") + instanceMock.On("Close").Return(e) + Close() + available, created = writerPool.Stats() + assert.Equal(t, 0, available, "number of available objects in the writerPool should be 0") + assert.Equal(t, 0, created, "number of created objects in the writerPool should be 0") +} + +func TestInit(t *testing.T) { + writerPool = nil + Init("", 1) + assert.NotNil(t, writerPool) + assert.NotNil(t, writerPool.New) + assert.NotNil(t, writerPool.Destroy) + available, created := writerPool.Stats() + assert.Equal(t, 0, available, "number of available objects in the writerPool should be 0") + assert.Equal(t, 0, created, "number of created objects in the writerPool should be 0") +} + +//Integration tests +// +//func TestSaveEnbInteg(t *testing.T){ +// for i := 0; i<10; i++{ +// Init("e2Manager", 1) +// w := GetRNibWriter() +// nb := entities.NodebInfo{} +// nb.NodeType = entities.Node_ENB +// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED +// nb.Ip = "localhost" +// nb.Port = uint32(5656 + i) +// enb := entities.Enb{} +// cell1 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",111 + i), Pci:uint32(11 + i)} +// cell2 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",222 + i), Pci:uint32(22 + i)} +// cell3 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",333 + i), Pci:uint32(33 + i)} +// enb.ServedCells = []*entities.ServedCellInfo{cell1, cell2, cell3} +// nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} +// plmnId := 0x02f828 +// nbId := 0x4a952a0a +// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameEnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId + i), NbId:fmt.Sprintf("%02x", nbId + i)}} +// err := w.SaveNodeb(nbIdentity, &nb) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err) +// } +// +// nb1 := entities.NodebInfo{} +// nb1.NodeType = entities.Node_GNB +// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED +// nb1.Ip = "localhost" +// nb1.Port = uint32(6565 + i) +// gnb := entities.Gnb{} +// gCell1 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",1111 + i), NrPci:uint32(1 + i)}} +// gCell2 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",2222 + i), NrPci:uint32(2 + i)}} +// gCell3 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",3333 + i), NrPci:uint32(3 + i)}} +// gnb.ServedNrCells = []*entities.ServedNRCell{gCell1, gCell2, gCell3,} +// nb1.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb} +// nbIdentity = &entities.NbIdentity{InventoryName: fmt.Sprintf("nameGnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId - i), NbId:fmt.Sprintf("%02x", nbId - i)}} +// err = w.SaveNodeb(nbIdentity, &nb1) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err) +// } +// } +//} + +//func TestSaveRanLoadInformationInteg(t *testing.T){ +// Init("e2Manager", 1) +// w := GetRNibWriter() +// ranLoadInformation := generateRanLoadInformation() +// err := w.SaveRanLoadInformation("ran_integ", ranLoadInformation) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationInteg - Failed to save RanLoadInformation entity. Error: %v", err) +// } +//} \ No newline at end of file diff --git a/E2Manager/resources/configuration.yaml b/E2Manager/resources/configuration.yaml new file mode 100644 index 0000000..833c927 --- /dev/null +++ b/E2Manager/resources/configuration.yaml @@ -0,0 +1,9 @@ +logging: + logLevel: debug +http: + port: 3800 +rmr: + port: 3801 + maxMsgSize: 4096 +notificationResponseBuffer: 100 +bigRedButtonTimeoutSec: 5 diff --git a/E2Manager/rmrCgo/rmrCgoApi.go b/E2Manager/rmrCgo/rmrCgoApi.go new file mode 100644 index 0000000..2de57d9 --- /dev/null +++ b/E2Manager/rmrCgo/rmrCgoApi.go @@ -0,0 +1,123 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +import "C" +import ( + "fmt" + "github.com/pkg/errors" + "strings" + "time" + "unsafe" + + "e2mgr/logger" +) + +func (*Context) Init(port string, maxMsgSize int, flags int, logger *logger.Logger) *RmrMessenger {//TODO remove pointer from interface + pp := C.CString(port) + defer C.free(unsafe.Pointer(pp)) + logger.Debugf("#rmrCgoApi.Init - Going to initiate RMR router") + ctx := NewContext(maxMsgSize, flags, C.rmr_init(pp, C.int(maxMsgSize), C.int(flags)), logger) + start := time.Now() + //TODO use time.Ticker() + for !ctx.IsReady() { + time.Sleep(time.Second) + if time.Since(start) >= time.Minute { + logger.Debugf("#rmrCgoApi.Init - Routing table is not ready") + start = time.Now() + } + } + logger.Infof("#rmrCgoApi.Init - RMR router has been initiated") + r := RmrMessenger(ctx) + return &r +} + +func (ctx *Context) SendMsg(msg *MBuf, maxMsgSize int) (*MBuf, error) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.SendMsg - Going to send message. MBuf: %v", *msg) + allocatedCMBuf := ctx.getAllocatedCRmrMBuf(ctx.Logger, msg, maxMsgSize) + defer C.rmr_free_msg(allocatedCMBuf) + state := allocatedCMBuf.state + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to get allocated message. state: %v - %s", state, states[int(state)]) + ctx.Logger.Errorf(errorMessage) + return nil, errors.New(errorMessage) + } + + //TODO: if debug enabled + transactionId := string(*msg.XAction) + tmpTid := strings.TrimSpace(transactionId) + ctx.Logger.Infof("[E2 Manager -> RMR] #rmrCgoApi.SendMsg - Going to send message %v for transaction id: %s", *msg, tmpTid) + + currCMBuf := C.rmr_send_msg(ctx.RmrCtx, allocatedCMBuf) + state = currCMBuf.state + ctx.Logger.Debugf("#rmrCgoApi.SendMsg - The current message state: %v, message buffer:%v", state, currCMBuf) + + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to send message. state: %v - %s", state, states[int(state)]) + ctx.Logger.Errorf(errorMessage) + return nil, errors.New(errorMessage) + } + + ctx.Logger.Debugf("#rmrCgoApi.SendMsg - The message has been sent successfully ") + return convertToMBuf(ctx.Logger, currCMBuf), nil +} + +func (ctx *Context) RecvMsg() (*MBuf, error) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.RecvMsg - Going to receive message") + allocatedCMBuf := C.rmr_alloc_msg(ctx.RmrCtx, C.int(ctx.MaxMsgSize)) + defer C.rmr_free_msg(allocatedCMBuf) + + currCMBuf := C.rmr_rcv_msg(ctx.RmrCtx, allocatedCMBuf) + state := currCMBuf.state + + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.RecvMsg - Failed to receive message. state: %v - %s", state, states[int(state)]) + ctx.Logger.Errorf(errorMessage) + return nil, errors.New(errorMessage) + } + + mbuf := convertToMBuf(ctx.Logger, currCMBuf) + transactionId := string(*mbuf.XAction) + tmpTid := strings.TrimSpace(transactionId) + ctx.Logger.Infof("[RMR -> E2 Manager] #rmrCgoApi.RecvMsg - message %v has been received for transaction id: %s", *mbuf, tmpTid) + return mbuf, nil +} + +func (ctx *Context) RtsMsg(msg *MBuf) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.RtsMsg - Going to return message to the sender") + allocatedCMBuf := C.rmr_alloc_msg(ctx.RmrCtx, C.int(ctx.MaxMsgSize)) + defer C.rmr_free_msg(allocatedCMBuf) + C.rmr_rts_msg(ctx.RmrCtx, allocatedCMBuf) +} + +func (ctx *Context) IsReady() bool { + ctx.Logger.Debugf("#rmrCgoApi.IsReady - Going to check if routing table is initialized") + return int(C.rmr_ready(ctx.RmrCtx)) != 0 +} + +func (ctx *Context) Close() { + ctx.Logger.Debugf("#rmrCgoApi.Close - Going to close RMR context") + C.rmr_close(ctx.RmrCtx) + time.Sleep(100 * time.Millisecond) +} diff --git a/E2Manager/rmrCgo/rmrCgoApi_test.go b/E2Manager/rmrCgo/rmrCgoApi_test.go new file mode 100644 index 0000000..59fd93f --- /dev/null +++ b/E2Manager/rmrCgo/rmrCgoApi_test.go @@ -0,0 +1,142 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rmrCgo + +import ( + "e2mgr/logger" + "e2mgr/tests" + "bytes" + "encoding/json" + "github.com/stretchr/testify/assert" + "io/ioutil" + "testing" + "time" +) + +var ( + log *logger.Logger + msgr *RmrMessenger +) + +func TestLogger(t *testing.T){ + var err error + log, err = logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#rmrCgoApi_test.TestLogger - failed to initialize logger, error: %s", err) + } + data := map[string]interface{}{"messageType": 1001, "ranIp":"10.0.0.3", "ranPort": 879, "ranName":"test1"} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req := tests.GetHttpRequest() + boo, _ := ioutil.ReadAll(req.Body) + log.Debugf("#rmrCgoApi_test.TestLogger - request header: %v\n; request body: %s\n", req.Header, string(boo)) +} + + +func TestNewMBufSuccess(t *testing.T) { + var err error + log, err = logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#rmrCgoApi_test.TestNewMBufSuccess - failed to initialize logger, error: %s", err) + } + msg := NewMBuf(tests.MessageType, len(tests.DummyPayload),"RanName", &tests.DummyPayload, &tests.DummyXAction) + assert.NotNil(t, msg) + assert.NotEmpty(t, msg.Payload) + assert.NotEmpty(t, msg.XAction) + assert.Equal(t, msg.MType, tests.MessageType) + assert.Equal(t, msg.Meid, "RanName") + assert.Equal(t, msg.Len, len(tests.DummyPayload)) +} + +func TestInitFailure(t *testing.T) { + var err error + log, err = logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#rmrCgoApi_test.TestInitFailure - failed to initialize logger, error: %s", err) + } + go initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) + time.Sleep(time.Second) + if msgr != nil { + t.Errorf("The rmr router is ready, should be not ready") + } +} + +//func TestInitSuccess(t *testing.T) { +// var err error +// log, err = logger.InitLogger(true) +// if err != nil { +// t.Errorf("#rmrCgoApi_test.TestInitSuccess - failed to initialize logger, error: %s", err) +// } +// go initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) +// time.Sleep(time.Second) +// if msgr == nil { +// t.Errorf("The rmr router is not ready, should be ready") +// } +//} + +func TestIsReadyFailure(t *testing.T) { + var err error + log, err = logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#rmrCgoApi_test.TestIsReadyFailure - failed to initialize logger, error: %s", err) + } + + go initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) + time.Sleep(time.Second) + assert.True(t, msgr == nil || !(*msgr).IsReady()) +} + +//func TestSendRecvMsgSuccess(t *testing.T) { +// var err error +// log, err = logger.InitLogger(true) +// if err != nil { +// t.Errorf("#rmrCgoApi_test.TestSendRecvMsgSuccess - failed to initialize logger, error: %s", err) +// } +// go initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) +// time.Sleep(time.Second) +// if msgr == nil || !(*msgr).IsReady() { +// t.Errorf("#rmrCgoApi_test.TestSendRecvMsgSuccess - The rmr router is not ready") +// } +// msg := NewMBuf(1, tests.MaxMsgSize, &tests.DummyPayload, &tests.DummyXAction) +// log.Debugf("#rmrCgoApi_test.TestSendRecvMsgSuccess - Going to send the message: %#v\n", msg) +// msgR, _ := (*msgr).SendMsg(msg, tests.MaxMsgSize) +// log.Debugf("#rmrCgoApi_test.TestSendRecvMsgSuccess - The message has been sent %#v\n", msgR) +// log.Debugf("#rmrCgoApi_test.TestSendRecvMsgSuccess - The payload: %#v\n", msgR.Payload) +// msgR = (*msgr).RecvMsg() +// log.Debugf("#rmrCgoApi_test.TestSendRecvMsgSuccess - The message has been received: %#v\n", msgR) +// log.Debugf("#rmrCgoApi_test.TestSendRecvMsgSuccess - The payload: %#v\n", msgR.Payload) +// (*msgr).Close() +//} + +//func TestIsReadySuccess(t *testing.T) { +// var err error +// log, err = logger.InitLogger(true) +// if err != nil { +// t.Errorf("#rmrCgoApi_test.TestIsReadySuccess - The rmr router is not ready") +// } +// go initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) +// time.Sleep(time.Second) +// if msgr == nil || !(*msgr).IsReady() { +// t.Errorf("#rmrCgoApi_test.TestIsReadySuccess - The rmr router is not ready") +// } +//} + +func initRmr(port string, maxMsgSize int, flags int, log *logger.Logger){ + var ctx *Context + msgr = ctx.Init(port, maxMsgSize, flags, log) +} diff --git a/E2Manager/rmrCgo/rmrCgoTypes.go b/E2Manager/rmrCgo/rmrCgoTypes.go new file mode 100644 index 0000000..cc92dca --- /dev/null +++ b/E2Manager/rmrCgo/rmrCgoTypes.go @@ -0,0 +1,137 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "unsafe" +) + +func NewMBuf(mType int, len int, meid string, payload *[]byte, xAction *[]byte) *MBuf { + return &MBuf{ + MType: mType, + Len: len, + Meid: meid, + Payload: payload, + XAction: xAction, + } +} + +func NewContext(maxMsgSize int, flags int, ctx unsafe.Pointer, logger *logger.Logger) *Context { + return &Context{ + MaxMsgSize: maxMsgSize, + Flags: flags, + RmrCtx: ctx, + Logger: logger, + } +} +//TODO: consider declaring using its own type +const ( + // messages + RIC_X2_SETUP_REQ = C.RIC_X2_SETUP_REQ + RIC_X2_SETUP_RESP = C.RIC_X2_SETUP_RESP + RIC_X2_SETUP_FAILURE = C.RIC_X2_SETUP_FAILURE + RIC_ENDC_X2_SETUP_REQ = C.RIC_ENDC_X2_SETUP_REQ + RIC_ENDC_X2_SETUP_RESP =C.RIC_ENDC_X2_SETUP_RESP + RIC_ENDC_X2_SETUP_FAILURE = C.RIC_ENDC_X2_SETUP_FAILURE + RIC_SCTP_CONNECTION_FAILURE = C.RIC_SCTP_CONNECTION_FAILURE + RIC_ENB_LOAD_INFORMATION = C.RIC_ENB_LOAD_INFORMATION + RIC_ENB_CONF_UPDATE = C.RIC_ENB_CONF_UPDATE + RIC_ENB_CONFIGURATION_UPDATE_ACK = C.RIC_ENB_CONF_UPDATE_ACK + RIC_ENB_CONFIGURATION_UPDATE_FAILURE = C.RIC_ENB_CONF_UPDATE_FAILURE + RIC_ENDC_CONF_UPDATE = C.RIC_ENDC_CONF_UPDATE + RIC_ENDC_CONF_UPDATE_ACK = C.RIC_ENDC_CONF_UPDATE_ACK + RIC_ENDC_CONF_UPDATE_FAILURE = C.RIC_ENDC_CONF_UPDATE_FAILURE + RIC_SCTP_CLEAR_ALL = C.RIC_SCTP_CLEAR_ALL +) + +const ( + RMR_MAX_XACTION_LEN = int(C.RMR_MAX_XID) + RMR_MAX_MEID_LEN = int(C.RMR_MAX_MEID) + + //states + RMR_OK = C.RMR_OK + RMR_ERR_BADARG = C.RMR_ERR_BADARG + RMR_ERR_NOENDPT = C.RMR_ERR_NOENDPT + RMR_ERR_EMPTY = C.RMR_ERR_EMPTY + RMR_ERR_NOHDR = C.RMR_ERR_NOHDR + RMR_ERR_SENDFAILED = C.RMR_ERR_SENDFAILED + RMR_ERR_CALLFAILED = C.RMR_ERR_CALLFAILED + RMR_ERR_NOWHOPEN = C.RMR_ERR_NOWHOPEN + RMR_ERR_WHID = C.RMR_ERR_WHID + RMR_ERR_OVERFLOW = C.RMR_ERR_OVERFLOW + RMR_ERR_RETRY = C.RMR_ERR_RETRY + RMR_ERR_RCVFAILED = C.RMR_ERR_RCVFAILED + RMR_ERR_TIMEOUT = C.RMR_ERR_TIMEOUT + RMR_ERR_UNSET = C.RMR_ERR_UNSET + RMR_ERR_TRUNC = C.RMR_ERR_TRUNC + RMR_ERR_INITFAILED = C.RMR_ERR_INITFAILED +) + +var states = map[int]string { + RMR_OK : "state is good", + RMR_ERR_BADARG : "argument passd to function was unusable", + RMR_ERR_NOENDPT : "send/call could not find an endpoint based on msg type", + RMR_ERR_EMPTY : "msg received had no payload; attempt to send an empty message", + RMR_ERR_NOHDR : "message didn't contain a valid header", + RMR_ERR_SENDFAILED : "send failed; errno has nano reason", + RMR_ERR_CALLFAILED : "unable to send call() message", + RMR_ERR_NOWHOPEN : "no wormholes are open", + RMR_ERR_WHID : "wormhole id was invalid", + RMR_ERR_OVERFLOW : "operation would have busted through a buffer/field size", + RMR_ERR_RETRY : "request (send/call/rts) failed, but caller should retry (EAGAIN for wrappers)", + RMR_ERR_RCVFAILED : "receive failed (hard error)", + RMR_ERR_TIMEOUT : "message processing call timed out", + RMR_ERR_UNSET : "the message hasn't been populated with a transport buffer", + RMR_ERR_TRUNC : "received message likely truncated", + RMR_ERR_INITFAILED : "initialisation of something (probably message) failed", +} + +type MBuf struct { + MType int + Len int + Meid string //Managed entity id (RAN name) + Payload *[]byte + XAction *[]byte +} + +func (m MBuf) String () string { + return fmt.Sprintf("{ MType: %d, Len: %d, Meid: %q, Xaction: %q, Payload: [%x] }", m.MType, m.Len, m.Meid, m.XAction, m.Payload) +} + +type Context struct { + MaxMsgSize int + Flags int + RmrCtx unsafe.Pointer + Logger *logger.Logger +} + +type RmrMessenger interface { + Init(port string, maxMsgSize int, flags int, logger *logger.Logger) *RmrMessenger + SendMsg(msg *MBuf, maxMsgSize int) (*MBuf, error) + RecvMsg() (*MBuf, error) + RtsMsg(msg *MBuf) + IsReady() bool + Close() +} diff --git a/E2Manager/rmrCgo/rmrCgoUtils.go b/E2Manager/rmrCgo/rmrCgoUtils.go new file mode 100644 index 0000000..b0ce30c --- /dev/null +++ b/E2Manager/rmrCgo/rmrCgoUtils.go @@ -0,0 +1,107 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "bytes" + "encoding/binary" + "strings" + "unsafe" +) + +func convertToMBuf(logger *logger.Logger, m *C.rmr_mbuf_t) *MBuf { + payloadArr := C.GoBytes(unsafe.Pointer(m.payload),C.int(m.len)) + xActionArr := C.GoBytes(unsafe.Pointer(m.xaction),RMR_MAX_XACTION_LEN) + + // Trim padding (space and 0) + xActionStr := strings.TrimRight(string(xActionArr),"\040\000") + xActionArr = []byte(xActionStr) + + mbuf := &MBuf{ + MType: int(m.mtype), + Len: int(m.len), + Payload: &payloadArr, + XAction: &xActionArr, + } + + meidBuf := make([]byte, RMR_MAX_MEID_LEN) + if meidCstr := C.rmr_get_meid(m, (*C.uchar)(unsafe.Pointer(&meidBuf[0]))); meidCstr != nil { + mbuf.Meid = strings.TrimRight(string(meidBuf), "\000") + } + + return mbuf +} + +func (ctx *Context) getAllocatedCRmrMBuf(logger *logger.Logger, mBuf *MBuf, maxMsgSize int) (cMBuf *C.rmr_mbuf_t) { + var xActionBuf [RMR_MAX_XACTION_LEN]byte + var meidBuf[RMR_MAX_MEID_LEN]byte + + cMBuf = C.rmr_alloc_msg(ctx.RmrCtx, C.int(maxMsgSize)) + cMBuf.mtype = C.int(mBuf.MType) + cMBuf.len = C.int(mBuf.Len) + + payloadLen := len(*mBuf.Payload) + xActionLen := len(*mBuf.XAction) + + //Add padding + copy(xActionBuf[:], *mBuf.XAction) + for i:= xActionLen; i < RMR_MAX_XACTION_LEN; i++{ + xActionBuf[i] = '\040' //space + } + + // Add padding + copy(meidBuf[:], mBuf.Meid) + for i:= len(mBuf.Meid); i < RMR_MAX_MEID_LEN; i++{ + meidBuf[i] = 0 + } + + payloadArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.payload))[:payloadLen:payloadLen] + xActionArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.xaction))[:RMR_MAX_XACTION_LEN:RMR_MAX_XACTION_LEN] + + err := binary.Read(bytes.NewReader(*mBuf.Payload), binary.LittleEndian, payloadArr) + if err != nil { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read payload to allocated RMR message buffer") + } + err = binary.Read(bytes.NewReader(xActionBuf[:]), binary.LittleEndian, xActionArr) + if err != nil { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read xAction data to allocated RMR message buffer") + } + len := C.rmr_bytes2meid(cMBuf, (*C.uchar)(unsafe.Pointer(&meidBuf[0])), C.int(RMR_MAX_MEID_LEN)) + if int(len) != RMR_MAX_MEID_LEN { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to copy meid data to allocated RMR message buffer") + } + return cMBuf +} + +//TODO: change to assert or return error +func (ctx *Context) checkContextInitialized() { + if ctx.RmrCtx == nil { + if ctx.Logger != nil { + ctx.Logger.DPanicf("#rmrCgoUtils.checkContextInitialized - The RMR router has not been initialized") + } + panic("#rmrCgoUtils.checkContextInitialized - The RMR router has not been initialized. To initialize router please call Init() method") + } +} diff --git a/E2Manager/rnibBuilders/node_info_builder.go b/E2Manager/rnibBuilders/node_info_builder.go new file mode 100644 index 0000000..53c3411 --- /dev/null +++ b/E2Manager/rnibBuilders/node_info_builder.go @@ -0,0 +1,35 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rnibBuilders + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "e2mgr/models" +) + +func CreateInitialNodeInfo(requestDetails *models.RequestDetails) (*entities.NodebInfo, *entities.NbIdentity) { + nodebInfo := &entities.NodebInfo{} + nodebInfo.Ip = requestDetails.RanIp + nodebInfo.Port = uint32(requestDetails.RanPort) + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTING + nodebInfo.RanName = requestDetails.RanName + + nodebIdentity := &entities.NbIdentity{} + nodebIdentity.InventoryName = requestDetails.RanName + return nodebInfo, nodebIdentity +} diff --git a/E2Manager/rnibBuilders/node_info_builder_test.go b/E2Manager/rnibBuilders/node_info_builder_test.go new file mode 100644 index 0000000..40c0d1b --- /dev/null +++ b/E2Manager/rnibBuilders/node_info_builder_test.go @@ -0,0 +1,42 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package rnibBuilders + +import ( + "e2mgr/models" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "testing" +) + +const ranName = "name" +const ranIP = "ip" +const ranPort = uint16(30000) + +func TestCreateInitialNodeInfo(t *testing.T) { + requestDetails := &models.RequestDetails{ + RanName: ranName, + RanPort:ranPort, + RanIp:ranIP, + } + nodebInfo, identity := CreateInitialNodeInfo(requestDetails) + assert.Equal(t, identity.InventoryName, ranName) + assert.Equal(t, nodebInfo.Ip, ranIP) + assert.Equal(t, nodebInfo.ConnectionStatus, entities.ConnectionStatus_CONNECTING) + assert.Equal(t, nodebInfo.Port, uint32(ranPort)) +} \ No newline at end of file diff --git a/E2Manager/router.txt b/E2Manager/router.txt new file mode 100644 index 0000000..2cf418a --- /dev/null +++ b/E2Manager/router.txt @@ -0,0 +1,18 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 +rte|1090|10.0.2.15:38000 + +newrt|end diff --git a/E2Manager/services/rmr_service.go b/E2Manager/services/rmr_service.go new file mode 100644 index 0000000..5a8be8b --- /dev/null +++ b/E2Manager/services/rmr_service.go @@ -0,0 +1,137 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package services + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "strconv" + "sync" +) + + +type RmrConfig struct { + Port int + MaxMsgSize int + Flags int + Logger *logger.Logger +} + +func NewRmrConfig(port int, maxMsgSize int, flags int, logger *logger.Logger) *RmrConfig { + return &RmrConfig{port, maxMsgSize, flags, logger} +} + +// RmrService holds an instance of RMR messenger as well as its configuration +type RmrService struct { + config *RmrConfig + messenger *rmrCgo.RmrMessenger + e2sessions sessions.E2Sessions + nManager *managers.NotificationManager + rmrResponse chan *models.NotificationResponse +} + +// NewRmrService instantiates a new Rmr service instance +func NewRmrService(rmrConfig *RmrConfig, msrImpl rmrCgo.RmrMessenger, e2sessions sessions.E2Sessions, nManager *managers.NotificationManager, + rmrResponse chan *models.NotificationResponse) *RmrService { + + return &RmrService{ + config: rmrConfig, + messenger: msrImpl.Init("tcp:"+strconv.Itoa(rmrConfig.Port), rmrConfig.MaxMsgSize, rmrConfig.Flags, rmrConfig.Logger), + e2sessions: e2sessions, + nManager: nManager, + rmrResponse: rmrResponse, + } +} + +func (r *RmrService) SendMessage(messageType int, messageChannel chan *models.E2RequestMessage, errorChannel chan error, + wg sync.WaitGroup) { + + wg.Add(1) + setupRequestMessage := <-messageChannel + e2Message := setupRequestMessage.GetMessageAsBytes(r.config.Logger) + + transactionId := []byte(setupRequestMessage.TransactionId()) + + msg := rmrCgo.NewMBuf(messageType, len(e2Message)/*r.config.MaxMsgSize*/, setupRequestMessage.RanName(), &e2Message, &transactionId) + + r.config.Logger.Debugf("#rmr_service.SendMessage - Going to send the message: %#v\n", msg) + _, err := (*r.messenger).SendMsg(msg, r.config.MaxMsgSize) + + errorChannel <- err + wg.Done() +} + +func (r *RmrService) SendRmrMessage(response *models.NotificationResponse) { + + msgAsBytes := response.GetMessageAsBytes(r.config.Logger) + transactionIdByteArr := []byte(response.RanName) + + msg := rmrCgo.NewMBuf(response.MgsType, len(msgAsBytes), response.RanName, &msgAsBytes, &transactionIdByteArr) + + r.config.Logger.Debugf("#rmr_service.SendRmrMessage - Going to send the message: %#v\n", msg) + + _, err := (*r.messenger).SendMsg(msg, r.config.MaxMsgSize) + + if err != nil { + r.config.Logger.Errorf("#rmr_service.SendRmrMessage - error: %#v\n", err) + return + } +} + +// ListenAndHandle waits for messages coming from rmr_rcv_msg and sends it to a designated message handler +func (r *RmrService) ListenAndHandle() { + + for { + mbuf, err := (*r.messenger).RecvMsg() + r.config.Logger.Debugf("#rmr_service.ListenAndHandle - Going to handle received message: %#v\n", mbuf) + + // TODO: one mbuf received immediately execute goroutine + if err != nil { + continue //TODO log error + } + + r.nManager.HandleMessage(r.config.Logger, r.e2sessions, mbuf, r.rmrResponse) + } +} + +func (r *RmrService) SendResponse(){ + for{ + + response, ok := <-r.rmrResponse + if !ok { + + r.config.Logger.Errorf("#rmr_service.SendResponse - channel closed") + break + } + + r.config.Logger.Debugf("#rmr_service.SendResponse - Going to send message: %#v\n", response) + r.SendRmrMessage(response) + } +} + +func (r *RmrService) CloseContext() { + if r.config.Logger.DebugEnabled(){ + r.config.Logger.Debugf("#rmr_service.CloseContext - RMR is ready: %v", (*r.messenger).IsReady()) + (*r.messenger).Close() + r.config.Logger.Debugf("#rmr_service.CloseContext - RMR is ready: %v", (*r.messenger).IsReady()) + } +} + diff --git a/E2Manager/services/rmr_service_test.go b/E2Manager/services/rmr_service_test.go new file mode 100644 index 0000000..1fad55c --- /dev/null +++ b/E2Manager/services/rmr_service_test.go @@ -0,0 +1,107 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package services + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/sessions" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "sync" + "testing" + "time" +) + +func TestNewRmrConfig(t *testing.T) { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#rmr_service_test.TestNewRmrConfig - failed to initialize logger, error: %s", err) + } + assert.NotNil(t, NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log)) +} + +func TestSendMessage(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#rmr_service_test.TestSendMessage - failed to initialize logger, error: %s", err) + } + rmrMessengerMock := &mocks.RmrMessengerMock{} + mbuf := rmrCgo.NewMBuf(tests.MessageType, tests.MaxMsgSize,"RanName" , &tests.DummyPayload, &tests.DummyXAction) + rmrMessengerMock.On("SendMsg", mock.AnythingOfType(fmt.Sprintf("%T", mbuf)), tests.MaxMsgSize).Return(mbuf, nil) + + errorChannel := make(chan error) + var wg sync.WaitGroup + go getRmrService( rmrMessengerMock, log).SendMessage(tests.MessageType, make(chan *models.E2RequestMessage), errorChannel, wg) + wg.Wait() + + assert.Empty (t, errorChannel) +} + +func TestListenAndHandle(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#rmr_service_test.TestListenAndHandle - failed to initialize logger, error: %s", err) + } + rmrMessengerMock := &mocks.RmrMessengerMock{} + + var buf *rmrCgo.MBuf + e := fmt.Errorf("test error") + rmrMessengerMock.On("RecvMsg").Return(buf, e) + + go getRmrService(rmrMessengerMock,log).ListenAndHandle() + + time.Sleep(time.Microsecond*10) +} + +func TestCloseContext(t *testing.T){ + log, err := logger.InitLogger(logger.DebugLevel) + if err!=nil{ + t.Errorf("#rmr_service_test.TestCloseContext - failed to initialize logger, error: %s", err) + } + rmrMessengerMock := &mocks.RmrMessengerMock{} + + rmrMessengerMock.On("IsReady").Return(true) + rmrMessengerMock.On("Close").Return() + + getRmrService(rmrMessengerMock, log).CloseContext() + time.Sleep(time.Microsecond*10) +} + +func getRmrService(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *RmrService { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + readerMock :=&mocks.RnibReaderMock{} + rnibReaderProvider := func() reader.RNibReader { + return readerMock + } + writerMock := &mocks.RnibWriterMock{} + rnibWriterProvider := func() rNibWriter.RNibWriter { + return writerMock + } + nManager := managers.NewNotificationManager(rnibReaderProvider, rnibWriterProvider) + messageChannel := make(chan *models.NotificationResponse) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return NewRmrService(NewRmrConfig(tests.Port, tests.MaxMsgSize, tests.Flags, log), rmrMessenger, make(sessions.E2Sessions), nManager, messageChannel) +} \ No newline at end of file diff --git a/E2Manager/services/rnib_reader_service.go b/E2Manager/services/rnib_reader_service.go new file mode 100644 index 0000000..1c310a1 --- /dev/null +++ b/E2Manager/services/rnib_reader_service.go @@ -0,0 +1,58 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package services + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" +) + +type RnibReaderService struct { + rnibReaderInstance reader.RNibReader +} + +func NewRnibReaderService(rnibReaderInstance reader.RNibReader) *RnibReaderService{ + return &RnibReaderService{rnibReaderInstance} +} + + + +func (s RnibReaderService) GetNodeb(ranName string) (*entities.NodebInfo, common.IRNibError) { + return s.rnibReaderInstance.GetNodeb(ranName) +} + +func (s RnibReaderService) GetNodebIdList()(*[]*entities.NbIdentity, common.IRNibError) { + enbIdList, err := s.rnibReaderInstance.GetListEnbIds() + + if (err != nil) { + return nil, err + } + + gnbIdList, err := s.rnibReaderInstance.GetListGnbIds() + + if (err != nil) { + return nil, err + } + + nodebIdList := append(*enbIdList, *gnbIdList...) + + return &nodebIdList, nil +} + + diff --git a/E2Manager/sessions/e2session.go b/E2Manager/sessions/e2session.go new file mode 100644 index 0000000..99a458d --- /dev/null +++ b/E2Manager/sessions/e2session.go @@ -0,0 +1,45 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package sessions + +import "time" +import "e2mgr/models" +/* + * Container for session data + * Note: + * - If this is the only item in the session data, we should eliminate this session manager + * and just send the start time as part of the xaction field in the RMR message. + */ +type E2SessionDetails struct { + SessionStart time.Time + Request *models.RequestDetails +} + +/* + * Map of session id to session details. + * Notes: + * - Since the transaction id is the CellId, there is no + * need to delete the entry when a response is received nor + * provide a mechanism for removing stale entries (no response received). + * Having said that, deleting the entry on a successful flow may still be a good idea + * in order to avoid pinning large amount of memory (help the GC). + * + * TODO: + * - Synchronize access. + */ +type E2Sessions map[string]E2SessionDetails diff --git a/E2Manager/stateMachine/delete_all_node_state_machine.go b/E2Manager/stateMachine/delete_all_node_state_machine.go new file mode 100644 index 0000000..891ccaf --- /dev/null +++ b/E2Manager/stateMachine/delete_all_node_state_machine.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package stateMachine + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + + +var nodeStateMap = map[entities.ConnectionStatus]entities.ConnectionStatus{ + entities.ConnectionStatus_CONNECTING: entities.ConnectionStatus_SHUTTING_DOWN, + entities.ConnectionStatus_CONNECTED: entities.ConnectionStatus_SHUTTING_DOWN, + entities.ConnectionStatus_CONNECTED_SETUP_FAILED: entities.ConnectionStatus_SHUTTING_DOWN, + entities.ConnectionStatus_DISCONNECTED: entities.ConnectionStatus_SHUT_DOWN, +} + +func NodeNextStateDeleteAll(state entities.ConnectionStatus) (entities.ConnectionStatus, bool) { + nextState, error := nodeStateMap[state] + + if !error { + return state, false + } + + return nextState, true +} diff --git a/E2Manager/tests/dataProvider.go b/E2Manager/tests/dataProvider.go new file mode 100644 index 0000000..64d390e --- /dev/null +++ b/E2Manager/tests/dataProvider.go @@ -0,0 +1,83 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package tests + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" + "strconv" + "testing" +) + +const ( + MaxMsgSize int = 4096 + Port int = 5555 + Flags int = 0 + MessageType int = 1001 + RanPort uint16 = 879 + RanName string = "test" + RanIp string = "10.0.0.3" +) + +var ( + DummyPayload = []byte{1, 2, 3, 4} + DummyXAction = []byte{5, 6, 7, 8} +) + +func GetPort() string { + return "tcp:" + strconv.Itoa(Port) +} + +func GetHttpRequest() *http.Request { + data := map[string]interface{}{"ranIp": RanIp, + "ranPort": RanPort, "ranName": RanName} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req, _ := http.NewRequest("POST", "https://localhost:3800/request", b) + return req +} + +func GetInvalidRequestDetails() *http.Request { + data := map[string]interface{}{"ranIp": "256.0.0.0", + "ranPort": RanPort, "ranName": RanName} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req, _ := http.NewRequest("POST", "https://localhost:3800/request", b) + return req +} + +func GetInvalidMessageType() *http.Request { + data := map[string]interface{}{"ranIp": "1.2.3.4", + "ranPort": RanPort, "ranName": RanName} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req, _ := http.NewRequest("POST", "https://localhost:3800/request", b) + return req +} + +func GetPackedPayload(t *testing.T) []byte { + inputPayloadAsStr := "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + payload := make([]byte, len(inputPayloadAsStr)/2) + _, err := fmt.Sscanf(inputPayloadAsStr, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + return payload +} diff --git a/E2Manager/utils/proto_utils.go b/E2Manager/utils/proto_utils.go new file mode 100644 index 0000000..de9c5c6 --- /dev/null +++ b/E2Manager/utils/proto_utils.go @@ -0,0 +1,53 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed 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. +// + +package utils + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" + "strings" +) + +func ConvertNodebIdListToProtoMessageList(l []*entities.NbIdentity) []proto.Message { + protoMessageList := make([]proto.Message, len(l)) + + for i, d := range l { + protoMessageList[i] = d + } + + return protoMessageList +} + +func MarshalProtoMessageListToJsonArray(msgList []proto.Message) (string, error){ + m := jsonpb.Marshaler{} + ms := "[" + + for _, msg := range msgList { + s, err :=m.MarshalToString(msg) + + if (err != nil) { + return s, err; + } + + + ms+=s+"," + } + + return strings.TrimSuffix(ms,",") +"]", nil +} diff --git a/E2Manager/x2_setup_message/tests/configuration_update_wrapper_test b/E2Manager/x2_setup_message/tests/configuration_update_wrapper_test new file mode 100644 index 0000000000000000000000000000000000000000..14afe4675b0e595aab9e7803eec8d953cfe039d0 GIT binary patch literal 1210240 zcmdRX33yaR)^;asaqTEL#J#~*!8H-o#I*y7+-L`*fG{E^$Szxi4n%QjOd_;x#;7>z zxW!RNXLOWN25Ck^kddI{5@kklCF90zq>*?WM^f0tiNo}Sstcx4-5!M{p<0B=k70Q{uA&NdiKD-KF^_^-bnWn z7;~5xND8-W)K-`yxgJjsggx~_)~_SFn{g|Ckfxg&$1&%j**ru zIr@+y&HeBnMb7*YZ?_D)j=Nms?9zNnvx190(y_24MVcxU7Pdo1G%1dY7zT)_+R`mS( zzC)^4&1(oAJS*?Sl74sYJ-oJT=E}jP{|cgN#=r9+%!I}#ip3F42R|Fkrh~r?X4AoI z!C*Rg5Dce-&(1*4%^Bdo%FyoXFrIYy@66Ed(hT@FWhlQWL-|`W$fqI$J=GcHb4dpL zJ2T)vECYOS2Ke$$f@e74jRk@GXa|CE8R6&dKC0Xzdd2Yadps&RarZel6; zB0Tp91+Ufc6M={DCJpy#`1c42Z}%tT*@XTT`~wu+D&GhA_e1%xhNGDL_0#PJj#TBt z8Xnj1rMi5DhChOk_&YS*D*rj?9O&8C(>ydFB_S61yHnHCs`<6>v}t-;HD9@!pnswk z$A|X*0jY2Ob2B1@=jR11kP0ym%nwbTbnLMl`%m#yR!*BecTVN}(8PJ6%1Te=xeF>U zoHA|3{Lqwn!)HyLKYz-6Pi5KY^2*6m=4tTg^5L`Q&Y3cL;$^d@sJ!$!7mvPZWI=vq z<)qr$iI>e-P*89x;zU^)y0Uso<%~H~=azaZFCIB6R5)Yq{L0HF&Yv>0Y|e~ONkQoX zz(-#+DpYVXpfe_cx_MJ3&c3W>YS|iYPN}RU#gHhtnm=V;C~esbQF2IvKa?&TT{$|xvUJobl@;fW z8d6EpM}>w?nKOCTe~bWC!R#rs=1!V8Yl||w`NkPbT(Cw-8);MvlYGMB+;eG6Q$=> zpM<8*o4XKZFu8Kl#Q7m=#GHk*FN8W4&6%t6LMd3pTtGa_jzmG5+JxCad>PC}5j+Hx zYPFtQ1lqMi%q}gxaMaw<7!NKUJ^Fv9mZ-f8tsE-0RRJj^=(f$hppsgfP!`SZoQd6w zX1EeCrD9ui;pDl>m}NwOxU^i!>bgLt0%`ctd>bd{00ZbFqCSl~|EK%U895ZL(j5(7r zHO#M>J;j5}N!IjHjiE0zwQ|z*nHYyLjZB)!c;(cIGcZ6@at6V~qEnMMMUF&Lv7)5ZNd?ZNidUX=!caR_kcggi!pSxm4RQj_#ww^M z{^S38;eWj)odZ}ef$ibh6R^Ex&7>fzB>%O_cszUSH8G)m0Pl%^RSDwGLYi>;1X=js zAoyOEpH*?xm3y)ND!}-ch1Tc_FuxlAP27G5Jk7m4t-8*YuRn?Mdw5>c>5Wg$geTF* z^PWyet{aTul0is`JpCr{9bjSorSg$wfYCSa!>A zk(=W=NT+KKnz09W0FKn@(1A>6dkQqZ?T0Hr3Y9!Z5uyI8(*6>Nm35;9xBM}}Pqcst zEx(I!t}(4Y%kLumBnybp@+S%B+SK~9{4TU8xZeTKcfgNyzzZGlK@NDp0Uzvu8xHuX zPI%qtIYzYCm_1MM7!9qVUgmAEN~7-YIqMvS5bZj77>aZqS%QDPhX)X2dO8cmJG$_9 zUX?9Dz zTGH7}(`4gSlHRcg(lph0g`~e>nkE_#NcuCTX`1nTNq@*RO)~D2^gB$`6yv#)euHV6 zVB90=mzbvM#kcMR;K=8hrpd)SB)ytxnp(VF(oZo>6N|S>`cF*LwBpMp{d=ZqQt@U< z|Bh*zQoKphw=(@Jro)oHk!hM#yjs%NGfh*9S4sLRrfEX)3Q5mnnx+#ENcwW7X)^JA zNnge^O(pJ=^uTxiK7ADtlqk;M!-+@-9o{&`j zd6s_zXjFM76XjoWmtV*7zqiXXnJE9er1Aw{lto^@)QEg&)P20QVsu$sYwK(0dW^QU z6%w>nfGo2OsJ;UWB_7YJX`pzFaeNg5qi*}YM&y$P2d^S)G~4|qtYJo1ht2PVb+pn1 zKP}83V=Vqs5UkzV0|<=BR%5Mswvn~ocztK+02|w07B=tUo(bzz`{6Tx-0K97r)Iw~ zsA$fC3@5Db^(jDE-%3ksJUFm0>dyAm^y<6~^=xEcvqD$|@4Iwk*;SjC?rRi1s{^qn;5d-GmNbb3rdp zeQRiu5gpTB(ArYiey(Q?6vI>St~vUrt}dhQns!gU6y$Q zOBGFMU)a$S+h|p8HTwe`jC^iHOE*n6hNvcMjx!pknB$8tDV_k?B=jZnVT*~blXlGy zc1Xp}7tD`=f<5uS%CC2762BW9{7y#8yXN;SmU8oZv?6$KG`Gl!aw#Y zj%-*uGH>B5jY7v+U_ z^jR=?{W*DHv3HgfR($p*tP~73)@B)zvpVa={+3>pXO#i=1V7%D=Y!Oo&@`tYYXjN!N|VxgE@vvKZ5c2 zK1f;f<5Y#dow27`ecAwzaB@~Zjh&s|-R`c*xHk(XL} z5*hu1f$)*0Hl-_H>nu;tRmy(@A8Tq8XT9RF#TRjAD~s$LWkkM3TZ5c4*9O=|-OjVU zzsW~01{>!V7C%e<3P!#%zXWE(``mgXGG&!fxAp9`+j|5jZ7(1Eb6MTbS>E~+St0Ui zFtW{DaVAs;!mg-)F?5XRr*!|uj>wy3(TfUUu!CQPwMM?)*x}1AUVl!7r>yRr!mP5! z62I4oykpdLY&8b|eHH!c;Na~>Gx!}exhXOJgwOJX_WG7asq`;=Hk`3@au5IKxt^N7h~+T0zV}|1 z{>0zCKil&^segBJeQ|u?kLfm{CwprTC+N>9coF2(_#I>z(Gq`7g4h9}c{~dawkjBri+t;Q_vw5w!7qC{(q=^Z`OORN%Jy_VVV?G_(?7Fxcg!ewUM7|y zM&mvHb}Yw&jVt_H;b#XMAM&?D4;>m^@85)i9P#VuwLv}C*GpN5vfdx2Md6R}CP%#4 z5r5PXU+##na>PxpAvK;3XB@<=hVw@Jrj7?A5BYhc#E9JE&y%p;pR3b32tl6@0YmcQ zF>A1=X4E~ah_xtXj^-rG+i)?~fWgMc{rRBD;_K1t&tnPfF-l2hNnVwv8_LU~)jG*| zF5)zIRLem$i?BQmL)5Q}BHL$W57OD@i31dsg5E+*WZs4cv0^0yO;QPDRv^M6EE~90 z$P6ILb`6F`M3+H04gkROwMYsXvaZ1h{*YH;!Nw(ERTivC!&s-;5nt|z%ajCM-uefy zOydxig?)-$$ox~R%e4%{pfN?{^Nvsh+#gz0VgH+C3|M#v2{h=O9t(z2I64*k0!tC?U^QUGC?1wmmxrav^@3JMsu>u{3}O@^$;atsR@qF$A%w^j1d;C4oI zS>~}UH-%W1#|b3LgEarpP7b3iBYDKnGAL{4vbnk}>*ZN-l#_gf6}o(tF7Hd=9>gfx z2ry)Q!>W%suM_bP`QvoCYO5ShCFGBFa&;W#e2fyG4#zPh?b0^F=>V`!H8Yrpc&!zW z&dWjFCM2^F-hyyD!dnpzHWu$}Mz@3x4xe?5xBghD>>8$H+`Ibr58j3Y0WlhvsXmL= z>pr_lI*S7tkp`h0%Ozal4+mgij%S4B^uVdj%uU`l%AEOLd^OG0tx1Rv5}rr9f0J zqU>2TH_M-6w3YaCrJBmmohsK7Qc0vNjUV;x0yhm~z=nE4@l1;d|@O|tXZwhWUE@4%U4%XG+{T~f<5 z)dVGL>(7HkR`_#-N_YwkL8a6|Sje)#!L4vH6A4v!v7Ca#L^MvS6-Xm19z-dr4kVd2 zbto%G_MOmyzJpOVqtj4C`VJwJJrF*C@JBYg9d%i*Rh9caf_$<-PSFhOZbcxSOf5#5 zMH#L|$ie1$gwG;ehp-px=AoQzF^F3hgQ)a?fyiWqBOoy7n6L@9+tDb+A|Y^%Ljlcp z1o{faqzYYaf(vmreah{b3j{#tV>Y^uyKeASv+)LQ^*b>%0FaR zTiLuJ%WU&SY|hIp&qCyvZ8FE(@F+$CQr`gx&8-RT6}-VRq|vCuq=@*Ph~xh#QO)6_ z3GpoR2w%47(w(ScL{~`FH9TcC-`;{nUZl;;Vi;9O*+?@>7Pa9lW+8KE-N1zPo;mh3 z?t^*jp8-{99z!mjSmRi94Z<*VTFAZq`Nre0>tGsL?_)D+psd%uEBhw)Jh5eZ#-~7y ztxuz` zdGJfvie|qwLrJ{#A(EE$JOPgaKx*5G1Rc1XX$Wi;LjG|J+e?E}J&P@piX2iBMtSox zoT)I;fr94A$0Gqu0b;UhagZ`1b}bGt=5bQ%YJa|&EmcY|3!(hpMs&2_XB7q_ncOTy zYHG6)wSqiz2v-CsxSZ@*1y?bVXt9bdo{O^{+pY38Tr2$zvW3zv^k$J$zI)?jg{8w3 zfwy6XlvWEUds*jgm`U*BzjOUHege0gxtLY!Jcy5S=3hZ;!5i^qSk=n@;xh5t3^)wh zG4R%3{6kk4oP*H*NsdANaDZch1?PEIb1ZEc*NN@xAy`3~*L_S}Vd5t1q|u006JHn$ z9rzgETlkoc4L~_K8uk4Ej`^mz@tx?vhn`#xuBgu2DMj@9Dq((wz?CYtpaMKO&7A5Q&9DAmwBbr&t?I)*b@Jn9t+Rh$6#0 zMX*}!Vf18sk#$DVTj;;I5Mwu)S!0)T4Q6RF& zY{?Y_pDz{Gwj}MU)B=Vfy9}g;Pv6(Oq!mTID|>YLUoaqOYd>~UetE;k-iA?_t%K1? zgP5q_iNtE|khL_tft``amSA*dPB1z@&xnrqnd2zd$OizMf9}8`Cl8}r8l@n1hSr&d z$cLSh)kfxH67;lOm&nhP{2!SAKJ#JDo|fO^kVJNt)|uM@#J(HzpF_0e_o}M790{W_ z1h*P{dUYfsdbPj8Xe^5zE{(!)@;!M*VCgUFzFU_qVfCOw&cv_Yvgue*&f)VMQ0HQ7u$4kC+ zj*s~{tp9ML{^^o0o!i@(_i@GejS7T?v)AF2R3jF#= zy~y$n6x6c3gNRbK=qUiT7A<5xuXwb)lxXNy$rnPmyboFbQ)QXw0v^8|^MLq2t7%^? z@7V2AdZ1x`elWU7(ZTYX4lmnDrQ;ZBXD7A!E3~7mp)*0po{}#DuVg+a=a#P%`JVyE z(IT?h=uvAfK0nVBz^KaeVa?rO))F!Okf^l+z<6jUxd;QHXEjzYo|YcAJ|^UNBk?Pp zJfE0S>AxI6-O`E7$C&PEIZ!Dkt^Hid7dhVlo<;wmiTq=b@21}`^h>Q7sMS&?8r^2T zj6}RYjxj8{ML!0nq5BP%91cZM{d6$NDo9iAPbjDPn~SK6zZ(J6{GHEy4!|wt3HmPw zFn-K0Ry$n0v^;FLW9fs^g|kprx7CBVQe}A9lr%ok2B*DZTXv09CIWR@w;#e zV4r6w`~1Y_SMhlf%MJO7_4kF)BlSp>E-NM@3KQBKo2=^fB1 z!o4)X@0S1uBVs$lnJ;`SO60#P`JzQfFdyTwr{&s2{u7cfwl&|b@0e+RBl$9zjY2g3 zEeuADmnn2l!t6Iw&3+f7pr-lBx6vlAHnntoX3t)yC2)2jKYkr>ng>Xwb(}H}0+55j z{@{IT6V6l5&0EDmv^cW0WblSS;nw*^WGxacm{mL*KMh6?DjwWg(m1lK1V^!vSGT=c zJa9;HYwP>99QSk~-8jq9+;AVK}(oiZj$B zjp&8DI=Byb&`7#-vr5ozad>;51w+;kOeTFQgfYU~=E6u+EfyM6zq1jN#h_vmx&QKC>r$H8%JLG58Gb?Ws&!a>pu3@JT0d4mH8+% zFbOZ$?@729xNwJvyXgIzCyXc@sf76E^Tg2M?9dVKY!>#}(=0+&>1FyO!RUi@ zhv8L*&MXdJjUC0%-s|fqpRD-5L01qKk;k^8J^i35-#AlT;rCj6D1ywc_Reu4zU*#*32Q z{vqUxdAO8GSr5ganA$bKlUuU~`4!$`RcYvc=AT&gc+xDv z?n6exc114IA0q;|TbLEP9RFt5l;A=W^j+5d`PkwLjZpGpJjNLf@){az=AtS^US|Wn zwN4_Awh;joM+b5TrKU`GMwl>18&_awHT02cgYg*G8)&0F*1;8BN*nKPQ_X`d+0$Oj$rPA9C(A&0Q!hV@%zc__|yIsej z(_w5k>CkEKly?8P+wFGVkiuVk;&AH+SjifuW7rW>{Bb-;@aL^R)3Tpk@n>CTQvR1i z56wh-Q`sKVF68*Olt*l`>maE%)2w@U`+~U~1 z_D=7vJyHB~oo&^ek<`xj;whu;UGlXNC7WWt8n=y}+HQ{nY4;iXJMzP6>Ti23QNJTi z{#%axRt^OzW5hFwe9NBTcI;Sqt`R+-BSV+}mF>1Y89t-2)@Ky`7&=1aTVS*mYx_W- z(>}Ig%e&@N%{_!> z$lb0VxP^PJ<9lMZlRaFfW4toJJ=YR|W4<)J|Ls++CpMlc!86Ln!*q;ZFY%l~JgxKH z^vrkR2@9U{Y&=ZI_+bO_3?-hbG|1>NrUI3S5o=v5IjF& zJ*(uybd1Yn;`tchSYV!;ue)7%S_RJ#n;xcP{Gfw)4k10wY4D74;ql;>4fe=wJWR*( zG@gFM({Y8Hp1oXne1hjA8xPZVzrRd8;WT*Gy__naX2El?jfZKigWmd{#N(-U)3eBh zCoFh2+IX0bapg<-JWD*SY48kj;pq@O=Oy}!c=UK)&tvgeV6K~<&VQuxRV8?O*z_>1 z9V2i3=fvYnBcBIdcv=O|={7w~+w$=fPjec2#=Gz|37&6lJWN~Tc>R0CQv#T z?#NVsGjev_ek^1C`**AUl^N?-?pFPxjP(!St@=Oyn2~?v><0fC>)*dy^{>oWzjC+g z7iFw}_-@tzaeGGok+U28XRLq!Zq>gsWBtnAs$Z0`{^7e-|Ho|^`A5!f@b9dT^QI-u zv{&w!Y|r-A|BZ>d?L9(MWJ%WFXscsB|JL{LB+j9tOSleBI-YF>Kuv{7$FqL~IPLLl z(|YbJIPrL}#PilaYU5!#b_9|f>iOM6tZIgPh&F)7x<8$auNB9{p{v!9#<)H*4$X*l z%y#4PkeXk_#h^B>dOGf zs?y+@@50k8c*fg!nARN%f0TGUY49BD!qX~pPWTf{+y1Ed6V21ze0{Vom9GxLlki8G zw*3I{M+0f_-0i~S5x&;h^EcDBKl(W5?~XM6HOhs@CwLP61k<)3DgHz_4W7MRc&dc2 z`L>*yjvcA{>k`U2aJgGP>z+@QPm|y|*4AgHZNH=+^|>RBJ}+|NX@xK1t$)zgL#Ay% z=_cx-XO^3uAuc=}g6Cix57V~)*OPdfXS(rpu1)33BYfRv%ZF*(POldEq`~u`3y)9m z>}BI&I_B4M{!aYbG;$vA!V?g_66+bJZ9SCrOgPP8*Vl!oO7JAsGfdldD(e|v8a)4K zO_fhr@XWXMndulm=%&42LVa#c(_eKiJk5gVF>L7Q@sN0|^~^GWV^wMJobJHWRu@LI z{KNhq)`)Pg)(;Orf9cPrT+r!Z*Te4VdDuPO;H~fB^v7~t`&O?Tk@lKTu$Sif$!>QBg6fB0_IKQv?g9=lcl{bYZ}$-mQ|$;^Mo`gOZie?rFk!*{Fx zp&9G<*sc2SJN+rl!;b!U`eT{-&se{1x9U&GSbz9#)ju?2{T{nj|9yB%j`f_Af8^Ny zXlDL1*00;G`V%tN=S9O^w|{8H`aO25{`dSe`l4fof zH$Ec)zBa`Myie~RX5LqgUN4ux8lRE?Rn$3C#(mi6_0y%5rzF^&@)azPgC1}Fkt&w$ zZMd7GbM*QE0qV?$=VJO?ftOjG=Vac7SyJx$K@1w7k^n6q;gEkf^yaEs5};OTxBJf) zE6?{*CeapTI1iKpkj|1jDIMHk-q${NRX3fZOO}eS;*EsHuxoc5&pVHC$Bd+Q8nJ@2}7i~set=qYro7fzr@iI8}P3D7ErYDzMMLd ze?Z4ifIZ0grp{N@d1^;3h6_1X>br(12Zo+}gh z7*D|$NQ1BKuc`Q|dH$>D^EvP_u9pfHeV*gp^eyZTU%-Kn@f3XFC2*UsN4;H@W0dD%1bce6QfsgUn8ApQ{GD>3ilcsq%B+Yj)scJa%dlzK%g|eA80#-4RBegvlk` zg1jWRU{4tWW!{SUM!E5Nf!8@*%Q!3dqmuE9MsyajHireRpoAceY(TvyEZ`|<9aL1qOT+9 z#`nyV-O%T`E`g8n*a=Df-&*L#H?2E-0S7+DW5*`p3#7r1E(zNx^VTpP zJ5!-__IKbMH=S#q$k5*@_*)(L8Bd45xzvrnG9&)>B>FvJOT>9=7>^aW>8~2@#^3el zO!Oz?4><5Mo(_M%cMapQp-KJOTI9w%0(djpL#qQH<0<1!;1oB$ zZI5?@&$HMPZr?SGr{MGK<;M3&clZJhe2m9VOX9a`PdC1?-Qf#6@G%}cF&W}Nu#IFJl383cqXOCI}gvKlIQmhubaMU-Qf#3@G+h`Kc&IfKNVlfd=j=% z!v2YJfZKjNm%8a(^QTPq69$6B_|odY&v-ig%?G;iSMDZ$9vdnV!~PMsrU2*o72d;* zzw3_~=pXCwZxi=7`zGDrwALFJy74{&yvg?Iz*l7x+jkA)Df3Gp4ZgA6;cIf>V_aY3 zu;#1Q3*7Ye=?-7310Uo1h{D1bNQ3X0M^pKA%+GRtRqMawx~+w;qs&d;wC?cjqCdiE z@b!1$bNFXlc^z2O$9T&6s$-;^zP3kF`E}sSZAjo_Tpu}E{8pvGx3D{W`3`)HTX(Xx z{&l4BZ;tK`Uxfo7L%MU!Ak)^Ne@Xx9y=+ejWHcOC0neu8(vre9afT@jcQVzFY@B z##8)%&p0=}u`Yap-R8HoryF0N?(pq`->NkDo_R1;eh&I}#cvvX)4IcFIONB8j2|E- z^tri*o8SH}e2($CVrim(8BZCne7|<%Yx{jFzYcuW4t$KK*l$M~d<(n7*W|#*xc=n8 z(!X$DH+@ID@Kq)BWf%B5db#nv^*}1W4t&cU^f4ae7t)FT2&cifq&s}A4t$KK%txMs z-SnN>9ll+R2hBNdd|R5k;ddAI5lDmYj_&a7LZ3T&yXhOz9lpykhgNWfQ{8lKyDx=*CqBNuGf;_#WvFU%-Kn@f3WmY1XG> zQ}LzrPqmFQZw=$tl$X>$7rFWFx;I1rq~K48G;fVlq)z-D=eY6Tp9#Nn{V$*8SnI<^ z5U)PTvBtO7)7^MS0B`d8!ZH2^fWy*%##8+F)|1`%w%yYWzOVxy<0<+SNQ3W@?(nrb z@G+i(uXU)KzOkwJQu=55Z!DJc)-ax~|65Dkc)RZ2z5Wl_BPP2c1{%+#;IP{fqYe;d@?@O~z{_4)%qd)%^OC|EwFm5d&o%mY~w|s8S zgx@(HR@un0KSJc{(=kims>ZwVo(jCl_TbRBumd0CDeH|un)S<;JG#Nw?7+u(iho;` zX8m$UclcTz_!v*Iuc|cj)`;%#bvW=bp0YlzO4Bdfe%lSd9(-P8%_ofOE17nGq_NjW zy2Iyl;A1?+zimC!-M?eI!&l|N$9T&ANb6~Ce0{pZ7k1!d+?q`Edb}#l{PfK2-N=uh zXIb)de5z&1&vTNSzG>azYj)scTwjg0@HL<4#@D|)e60?AjHloWq`}v=tQ&qi9QYVd zSx<%sx#?Tj9X=1P0bBB8Jas-xGrk|)9X_7}ALFU~9^$6&t=nvV)x#b?^I;EMS=nsh zVUNha)D@c-vdlSu!!#{30Pu?fmY+eFV_}EB2P#EfsvN99`NWBy_4&}BJgMR0&D1w_f1}^~dUC8*efFzbQ`27hb2wZuBAU0DF<_t}M zycAYXIYejYn4?_n7w@|LYn|=K14tE*9#a8zBy8nO5Wlh-U80j@pG3(FE2|yXz^3$YT^n)x|in@ zXv3Cgyc#L+g9~E`eu9mcWtm5#MfIT2Q)~`|9su0xHKSD;(nDG+%~xM>^}>0m_l8Hn zu6)b&Yy8{O+pvY{XsJ(Mv<%?(fw%rf6xAOJ@iu~5ZFuYF101V5$*uhFG&y_RfzBuB zHlhuMj%oY5qh|q*wWdKA1v=it#I?{G+`F@h>sUnM4z-D6T2Bq$`rafiJj6}hnSu@X z804Ct-0!q8dW62GZTgtDzyG+0^!d_Y?7Ug%)306Kiz|H5+5KAH)KZ^-_C%}j6p$zu zEW@k?F!5rUc_mJ*CHXcj0yf{nFc+8Q@rhsa&%jPnQ7wK2;!V1plXW})MmwFq1s@uI zsD{4;xIB=h;k`8cZ-h_6#XRf&VH$gUdnM?BF~~z@_wwN>+T%L3PH4hJ{z6Fi`upW? zP{bM!;>(dr)7}i-9zU^fF)28)e^-0OyKe8=r1k>o+xro>-E97TL3`2JJwOfcoSz2jO^OQ|>~`{jh>oJX3{n zv!GRecGSLKoyMN;dWvW^tH%d(@bg4s&vk;_IeuJ0NcRTz#EmFoj~~@YIo_w`PclXi z_pUrIfCwUuQ0i3s^aWne(#LZ~_QkHeiI`Kc_u+;|`16Qyb!A=Iw#gZt+r@PJ(W0?{Pi<7>PIzh?0b zm4H7q`7lH)C{Lej%!T>t904qC71*h~XFiUPU)VzLt)_o%upvmZ|}Zs~c9B6)yBZ=wDzHk3t>DIWAQoXZ1^KV@3s|r&>RUmfXo3t)D|n+@(+a92#ns zMK3KZi=G2*-2`p*6+^L%#+g}VkvWB-VdEh>@w1CB)$bbu8}+oT?HuX(vdB5U;`P0u zsAZ9ha6w+Z)$aJdLG<){xX7rH%gNB&Fc_>LmBSS3LQ&7~i=s~d?-cb6e=s_?usrf* z+2AilQHPZj%?j%qJCN3`a=D~em|J6VQhw0T!T8_ zw9v6K%O6LjsL~-8Pq)4(`ZLMctRC{^&%ep|dc+M1n()u|Bc%KBbz}pI*yC$1QfbEX z7eN!-ll7S&?a^Oa!J0|_((eiBzPZiy&gLFKs!6?n`KDSX|Ds#pjMZUT;~acT@_Al) zbinv=<6FC;ZLkk0_1-E4M6K zlNXHqo0t|T7R`MVm^MC!dK|%8uF;s*A~ShS^`u}btx{{MTOfMx4L`wglQq>CwWeA? zYl@auSZgZWIQG`_yEVP0;tgc$v8!nS$2_Cm&e{!iSW}4}IZ*jf)$)%R*WY5pKMJQo zF&rploglB>eh)XGLE9P-qgz4jxBO3yGB)tY}{-CygvA=XuE z?KX275@5npUi5h=42$p4d5$%Icw6QTr#L4srp~sR?=ft=2A@n}jQhac=Vx+VI>;z0 z&GXjZ0Yb~8et&t6jZ#MgZ1d5N( zutt~l*or)K3Vw2fns*iE+=h9a%Om&}4x1e2_auYc9rF7CcvLs>R;sr?s7iLVdt0`~ z&qjjlkH%|!n&uaO!k9HizyYd0UPHx4UsM)L={vBJ4xLPe-**k;ddoF5Fcu!;R`$EX zqU`nL(dwsC+{kO0p=F%|V(otV38gJvr8Prc<3X8y!>sS1!sDY%sq^ zzZS0;qdN@qA~dJQ+b4CKB|w}!_?#pSpAW}%doX$pRy;xfAna4+lojD)!k|CjTc3}o zBk+@@*}=xi_yq&Nd`R`f)2!IbD#1?`08$vg0SZAny)8AOnE$wzYSCs6zm6IaVjcVl z!fGFA4MryWE6jH!W3+!9b8#+1&A@;M>YWVJk$R$w)CmFsLyFWV zP*c4?{+gEadxRvB`jTKDgJoO|*72K-XwV-pOEZwVne-`AuXmDKa}7v@RKGwd*$wL; z(DLZn!6N*!inqQ2g~0ct$IHiB1Kx~%YMGLF>I$+Cl znx#FYfD8pmVjW`B+OYE%4x9LWUsQ(0c=RY>J(ujQ|4teR1phPxameCCYz!c7|-?Af3lOpVs1~q#2x<;+*s|Q z^B0Jo9&xpj=-mwYLU)Rq4w1H;f|@80TToA-qQi%ZYz{_ia?SS$g<#Y+Fje&>X#jL$ zSDi1tCnh3$SG^C5M4mUI=)-^+jIPM$cw64^gSY-wm{)Q5TI%k<0n_BaWlmnC$bXNa zJ>c(Twdib5un0T+-um}`VP=T(5v`bwvHy#7T5*oh=wvn|5S!T-&`k0K@vSthwPJ-f zHW17mRYh<^6Z(Nagt`eu%c8wqN>QWol~PPcLdHwHMv9+SG#^Z=#2;IH%nCu7MmxXyNz_*n@*xt5A(&d7m#N-mKRfD; zL4x}=_(8(NbL5Bc=U31v*2)RLa%KK_6}xU-XD{=9#uC2~BTvGQm)y+PZ4k8w~g7V5xE*80yl**DI`4xUyI+} zDR=;V%J(T-KG2qaxNdvImE>zH3@EEOd|eLkV7SLyW$>2B-=J`99vpxRkPO%Q5POSn z4Al-oYzlf`7YTT3j!Bk=w_z1AxFn*!Qx9=Q*=*k3jLFd&0xkt1wpVlk610Adq$L~z zCK|!UEAZd+?DC@TLd(h`ZDn4ZPrda< z7boN-KZ!rUAb!%$`%}%}bK*_oC#|7KlKmw7B=xIOx}QItmoyUX!k%sy)e<7Lu>c<~IwVRM2D}67ZhQr&v-3{4*5w#nCw%%zIEedHlSQ_4T??I>L73 z?eVh>sM*OkvkB#xk0y5B#B2#F>}An8o6NIZ*pJ&a_8A&`K?3^^_X4}DXGhz#e{6Q3 zKr-#GvTFCV@1?PCtl^5|S`!2Posg_OFGkr^(!6*jo53p4qkDR@ISr8V=+v!cjpuBY z`LL|$@7{(TC=w3>7wroZ$3mI+jzv3^)q@OE=Dk^P&rTPTol}AE&mkyS^cCE*)u@;< z?_HB?eoSc6y!VDQpyoZUmD0?6UKVl8d(Y~5ughD19T>#e!+9?bJ~a7nnX^KQ{Er#h z27DHV9WHc&MU(wG-ukh6-ov@8%zF-FcDO_2wp@sGa=S<%Hn%UMo#cschqSCGzGwBs z2a353t0-=`8A1<6y3EZeS{Ci&n)vv;N61&EJ`D-yd;^Kd{FhWWW&ZodLSWB-9e}W( z&GC1G;3NYqBf&7hE9O&V^vIDIiek~8M{sl&pHYe!Og}IhYje!Yw}ATtkZV>5k?T75 zh~IY1JfF&^_iQu;XBmTLv!rT)W#nHWm!>bXSLW`4&ovCnhlXC&70U!Flv+WR~_bx84FWccMi&sm@)c{Do?G?44meV&Ja zGR1%4KF>Z<{6E;|iKTmAVcQ(qdKgVO_kq^NVR$Et;}gJXkYhVA?gvk5|5EEv&2Lfm z5J1hxAehAPsrQ3-Du4Jb=YDYAdK|QUK0Rr}WSrVC$uo}xzSVi4r=?aKL|@=dHi#@h z%A-e>HJ*>(iP{^RYTtS5%c1DpK!N8JC~v$j+gg$4c3z<9wfxW(vsFJH2i6^a=mb;x zG0!-?bdb0HY+y5r8kU0&bq=OF6;A0VqRwiSnqSuVxIX|nSsQstb6UQ6C7ZyAhC@o_ znwgIX1RDiv2Hy@^)K8h+qM1EP3b?gkJ(^WoFcj_CyM29h3u$-z_Eja-&FW* z-cENc9-CsGzV02*M`otjldKo6_*7((7yl#NA+t{S;Hq=5Z~|@Mk}{xvSL_pDp!^Pn zND|g$??3*>_Vlk?!MofD{I{0II<$~1jlTf$U)$5<%T>3$$1t(3+vgL-^Z%wj4W?|8 z>}jk(Ys{Uv8v^>S0n2sF^yTRkQPJ0@9i`79t z>kb-7BA^22&LHjDp7ud8u_syV^nX*9naZBNLAhjm>X4fB_*p-LJsr$Ku&0lv6LV&J zx~&Q5lk90R8%%Oh<`S1}Pix=#Z|up}-)&E0L0i)NB=$7mBawx+ry;@z?dfgdB-x&B zCk(=T1*J0D6J{jG1f}lv!uH{o58?ocO&0^(G&kN1w)=AAJ5q_?tOfF9K}-b%ri5)! zOikDimAUC_&KZrRvaHV!;=Ts6@;b|t_D2qxMnc=nWegK`^uoUtugZ?L5K~cUH5NIb z!y2>dn+TSk#xl!CpCg=hO7fYX5<5%?p0-|p^wUD~sVQj+3aH_|NHckxRB=y9yf><* zq@u)>lxv1`3%TjGR{A=pq~1s*x8nOi z&0mabxj<9>{#1%{v)PLwc;(@Qxq-#RaknO<=EnC4-K_4cc}9&niRJBhA17X;ruZ!Y5r(U^S#J4U~}txK?iv#&5LKz&l)bAQQzaF zK{j$Qf8?wAgY=M9@}CfH%KWi=`u@9{AQw4+n5>1m6v&hHeE}f0zV}qF*tv9`Qq>(h z0Hud2y{|~pd;er5$a@$j^!^ph$>cd{{s^OoQ~a^_MfH_G2F-um55G9QKjt&zY$8ed z`&$xJ%0C?i)bAfJ&>a6(s<@Ru!~C&OxA0&3W2Mzv@ADIS?+1fxn6_7N`vao&e%p;8 zm>0QQZqfvQGKu2cZ0^GldN0mcJBnp+#{PntmskiSY+I@mCV_j>}33;Vw~9PYe;_HLa6 zud7mBb^1hv2?Lw;t`dSWu${Eo(;GU(z}Dhlb^|x@aCnuC2HD5f;nm~*-1IhvQ)IJ& zt-!_-hssY2ME3EvVb`)JlCn-}$^BgIm7gR9#Kw}2HGjs=y*h$zI1vr<0H{BTraji= z#DW59tj9x-Zp=M_iiX~gr1*{k?g-FI!Xq|`4kDZhasH`%|EA&;ISy{OA zSX$+}iSr3}RQBghoPF%Jf4qU!c^Bto)U=*lzafE2aM|5q)oONdDbus&Ql zR~m0_zp$?+|(GUsO3gy$xaX1G=q=0QFXQK)&hN27tb9#oH$w z`S@EC9SGBY!qOiUYx|F-d#7RB1Unz5;S1sgb(~49-6Y+T7yk?=iPrc+#uMj>-iApe z+jWAL7$TC%_X+vckcT3lY0HtR|24pAKbaXPy=su%It!ciw$V$hlMuh@Te5KL{#o6PpU4q*U&n-tAm~X%SiQ>@u z-cXNLl1@S9qmF$5atac`=%0DCZ8SD8z-<6;{S$%$Cx*QHfJU#zv0()J**Gf130SYP z$jiJ~6-IIEV12W>7ib_YbqrBl!jo=RttMi%HpEGP;^4d<%BK&`vC#z0-)7#AqUjFKN2`1_?2JId(f^`P zLh=Z2y;O?=%iu5!FDr}c~9EO1&WjNk1j=QK+X^f)wBQN_6a%qlb> z?I%`CFLv6K*5@IK_V_J@YVTOIXZ{*Ym_6|iw*8a#^f8S*2UO(hdt{40`Ty1ZYzj7U zKbxtf``H!H!2jYyg8$9?*%Kh&boa9#et_`*JNL5>(D$Do;^<03VHO&-H3W;-k6mX8rxFHTp9f4X@P>&R65j`FE+b0XL5iF(QIk4oEeK<3vhcwQ>5Xq3B=pr-OIVGwwg&qy^XBbHv!9|5B1&(4A@ok)_;R7*y8ZjeqM>V2xqrg zX@LW}3FA%i7%ZV!& zSsCS!o%3e@AlG_AZuTeE6S6(_$E!$o`n&ztkPPQ~0_UZJ%!R_Jy`FF%)vmk{)l!dY zi&2aB5_r~G9$nE>NfuWY?}QfVJC?7Y5(K*da@}HjfQ53cWtdK`UZKM&*E0oT%k?*; zL*%+j%k^18lCGL9Ygf4>@zs+zQ9FAWil1ZQFHYXq{8!s*gcf9 z%6x~=q#oWNEp%)5y-*~B-S5~V!NHe3Ee>e+Rp%=?Zeo~@gSpbMQ;zov#FpcisJWV_ zLoLUukqaDDn|Uad%t3Fd)-4Cafhq$Bg$@o@C`HgC*L@=u2fspP?77s!+jtk$6o;Q{ zLV(oqU|5abQJg?v%$MyZZ~enSLzZ#<^HI0}SgDbxhE^H2x&HG6vHCJ({GK7=aZ2G1 zf!IvN_8QHhO>;Qzsxi1>^^cs?wwOCmo9gen<;7pSMgg@-yA=s_ zzN=2g%%^M6Xwr)I0g{olb#XJrgRRPO<OP_<`h%4Kx{FsMa`s(f8|&~=9-@o zoTTrYqzR=h8E*a^z#@^vjd#b*zddnlQ{VjC3=T8{Z<+Igih<7%mT^0%4ElhNoOsPq z-%5oP)?x)m_I$z~KK{d%_a8(dgjHxohti5sLZp-3#R9R}eFNP?Ty6e6F*zkCX*BxgZ4QmT9*L=V zPh^X^{k#koaQhBN`K3s({5Ergly}q9;iP9{f}T4w;os)O|C!)t--}lErnM=zZMl z8)scC3|PbIX7dQ_8*)Clo1yG;$_Jz`uO$*|pYu1O4f+F8_yD2|M$+vBa$Zs%DlK+@NxAwQpo54C8B(zE5l|AlC%&F- zwN_@gR%kwk!mifV14tjCyDQPzy0w?UrfTgq?neGY!2AyAM>Tph*89Wg7Ipvlc*)&t zP60cen>yd@{3q`!_w0P7^B=nOGF|$unm0QCWwLzd^3EqZAGgjYqc_vl!b2oQUx%{S z;r!~yJ-kcyfZZriyYy}w)6mTRuLm!!_b`ubq`h+3{GzcULu znY&3GV)I@wV}Fp+M9y$Uh40VtbWv9JaAa^{Mb_;43qH)^hta)jEX@rz)?nb{;=QqS ze?|%s!AE_lq3Op5ZR`-te)t0AXgHeY#b|%^!QiQ7kS4-lyD**V5-1Z!V9pO1sLgzq zl(V)HRkAobJ8T|=(#a!m4(mgaBk!ndy=m@clmazXWgj-7zCd|nriFc?!d@1g-DEzC z0?F9_#H!t6-!fcbe-fd_9wK&m@#X2Nk>9}JmdO1z_E0{K{f=m@SL1_(B~csR`kG#yr6e_-nblHf14)m zc9gbHhnA9^XemD49g|bmSiT3kLpBof!IOfQLp`jG1e{A^i=?|30z~a5p*a!bW_cul z_nF&D^r_^j6fqu~NNglTXXlv(LWb(r&FoqG!ye z2@u>2FdPH5WmlBT*>_Ve^Ob$PfRFxj)F+^rNVCkRW-vsCM8exoY6&9?`9WMNdq^PkJADU0Woq`vXfp_+$e`|fsic))^ls5NVFy*cHU_Ecn zWV4U!W=~*C5XB7v5~x>NWi0W$Dp4M-=`eFpN)OR(Hm^qjh;MZ;*~p2dzfvcElpTEl z6UUX~h#jr?5W=_OCtKJMv>PmMtl4V*a~c}8ZvEeZg0?hnM4~);&DQdwZ8ZnP4?#u6 z=h@{&JH7RLBaKhDRp)r?-$(D8OMxrdcUmA6Y&P#Z8&o!4w?VxnFpX=%kR{*Zf*h# zY&RdFGGO!jDae09<)brm%@xSg;z}HYzs8F4G@LpH=lQlu$7L7?G$F8T-O5X6+O6Eo zR-U(8@tGsjwK5~6l^Ln6JXcE;j;8KF6J)3|(Uc!eL6--6R$YU_EpMwv#j|@GrCjFn zouI(iU0r5OW7{u*?aj#`JZ=+SXx?t&!2Doq({fgHh-WztRWpj`qcarEk0Au1bfaf- zH!OTj1?=yOUo4?vlpSYY#P+rIu|u=XerU@!!9GaX1ME|%T2}Y>9-aHC^|T%(dGsu! zB){2*U1IPtyCwmN^+L+?nxKOiHeRzqe7g_K=t^P2#C_RKHGe@yhtBvA8J*2I5Bvug z2-f`$^D*E|HtxFw@n&=F>ExJ?3a-JnlgBI&%<5t%zu5}|i1Cj!+2fz4=>}G{$3K)X zaH%*K#S`_0u-zm#X@G9GOjnj=^xi1u{7%r)|I5&7kGGYRw+a>PPJIjsI2WsMOt74L zS90ZubI^srq%z8vb9VQx#HAy?|I^CZeec8vKO5!Jk@fr!#c$q#<}mKykv8|0ql-bd zV`h(RM$fjIqlJlXCimM;Lp3$I^R|(C{^u~(!tw1n$dr-2=6q`c8su$g`W_38x}U`F zF~6PY(1n#KPlMVQq3UkcW!J7yq93G1ACOH;3bwrQnyu!O#9>Vm^HA5;&?!h@FBX%; z&o#k#Eru=K-`4j;lZ#Y~?=i$077i2NaQVR8OPaJ6aQC8Nb+vJex4r;qlGbjjGsVdL zASGE1_a{$k`IhtoP!*T4@@0E9@ab=Ya?NiwA!#pQV=sUu)lL(PFQNYy?Qq~fFxNZ{ z0b`TRv3_>=sU7&9&|ALWNnSR${EXoZL%(6hP}4Q^{}Vvx*!IthtaKa-#?jv~ z9`|8ksLyMsg8yTnVCKI7k#BKA*eEZvvpcpsO}Nx)j1ZR!jB|z+~(4T}a4BbB#4{ z_s3$@cawiPY8p|v`H>ZV?#>#KWpZYXRVcHY0rJ+Li<1eQQKRl&Jl}0+IeGDg=ev=5 zKNqgS=(AGVh^|mbVOkCN8oLCiL+1IQNnIr`(uAE!hB2T_IfdP^LbZwXku1s4pyfPW zvM)*|gvmNtw!xewjOb3L2a~#pdF*71Gj+A{?^Lu?P>VZSmm zREbRSrCQNMDT>V>rG%TV0WP}cN=fjdM&4?*s>AkOuDJ|Z$?A8#6lPCb&bI6Jz#7oV zdmK0`lQZszdToVF>{m?3bdz<&!|YG>sJ zE%3h+0v{^zXvI^~9+;=2f-evZpV4?xAGzdFhfj5}Oq?z!BL;44=E{|iAg+8g{01wc z_`jf|%I{Bf(1jtNE$VzT zN_ruZ#5I~LrEs^RUI_v-i28mizvgONlBoC7TtygSD8n;HTxA@D^T_b3FepG`AE4{d4T6oU2EnDX2Jtd) zX&WmKGGCV_-NO1&;7(zU07MOuP1b&ylyQ&WYjKRPd$-}=aHKfN{TgMt`R+QPU#|)% zuQaCodR7>eslv>k1*58PDH43|3)k7x@@;;70!8ZP??9p5$=@`TOg^i;osgvAvQDr; zZo%lI9HJps8L2tvmKXgJY^>g+=Dc{7<*!=ngfos;{ksAo&$h4wDd#*NKSH4ZojyhX zCs10K#p@3O7BYrA0*cJ?#wj>QcRU@Z&e8RRmy?0fe1SU|y%tm?uQDDdeQ8!1+i^!w ztuioJKtu7)DBjQdjg(IRe%8LKoa&q`B*cH#=Xt_&6?l&KmmE3I3s5HM6yr;$Vo;3| z=XunRoJ{pPb~yB7BNFO-eA96m+F9h(r#ZGhWth1h0Gf3A^rFC>V(t$}vObj(lB7>V zq?XdB4d{HMm;4*)>F1{t@~L=yPmrY7of!PpyNR90ushn!Nym~JhmIsqv)@U!Tlo)h z5qmjGrW}L=t9cv2N#p)vL8*qo3=b)`fH;2KVL3o6`X~nom;4^VNTn~MZ3nx;4|lH) z*8JSYst$wbfn}~*`yc1WRx^|!$<({Ih#!bFjp-jIEI7Mr7D^^t#P6i89@-q=hkT0D z9_#y%oz$~!=5<1|`y$0?m9I>JXO>R=-DVmYs`05rpjFk>gHjmuM?3D99QF__=u;xJ z_OFtJlB@z>4^A(H1BF4S5T>D|n)zSRKFRHbBj-7$7=do5Ez%kDN_ox4tV6Ia8fEhi=12gbdEN~}Z zHv^gaPS*2|+A4dFkR-ky14J00B;f`xT~1?cyl4-jm&EGUu}x6BXW!xY z7T)r$>Ofq=WBlt;im2l?QP{3hO(d&Ki)6cr`c&XfqJ{#ZzL_r2L|sNml4vUc!3w-W zPCe_d&k=3G2Y=(#NoW>65R;pU*Hyu@tCMSIYnmZ_q`rsscO$%C2|aE)&l0$k&YQrv zx*NVg(ODjSgafVlG&7RMw+ARAIS9_U!294xj&Erfcx^BSOZHomT)ZMwqC)%yVR3j( zyW;R$?a}3Hj}8ikb9Qh2yATQW5paiRlUR;7<#C=(U6EtZHM4|%w@?NP+$ofWphUf! zu%GU{he@My1Anfe6h<}RjX^^B za~YI#fY9jXuT0=h{_gODzoffoFA$QXoKFK%9)0pr^hR0Z5(ex5pG>}cLHpv@2tD?^ zJO2pPi=7P7HF@bR=xU%%H}gCsa3_)908yHG_h3?*q?db0)o$nAbA-6W1vJM4#wX%u zi1fU>6-;V=-ZCE?sQ5V;Rh{!LdAIi5ect+o=tlKSrJ}w2dG}foj=PKgAaE!5-=X>B zd3T_canHMR{@qQS(soP2o6@t$#~HS==14e+iL zACXh@&}e>GdbPUWdEY&le?M@}zch$iL7irSv(xFv@_SmP-?m$yJopx~N76VgGX(Aw z-ZKLryd?epgpeft-UtZvdy~>{1_}M%llpy~&|~ZOZ9b(Bd!e4Q!;@*eS90AQ{DQ!p zH1-7~je4I!aFTi-BUQUq?`fbdgIigV_{QODOTFn<{{3*p&Ka!ga4UaCA%}Wjg+&6b z*&cGb*YEo%q%>W$Uf@pl`vH=y-@~MgTfcvU*)YYgJQ_t4x|+C#?Di|=KJRw$ny&bF zmR39NR~pfNep{Viy9?_4CDl3c`xs7PB=`LT6logfUlh2L`Tl??=b%c@FQtSe>E{qY z%A!k}sF?CB!0(|I-WxtgA*A6Y?9WdRjQ15qy7GIFJ6w|h?IK$XEEIR*Zfnz};+l_SXA z=En~Km2ejPs2E@TgT21wIJTU~-0SgB8!}~%?tBjKjoR|_IpoLq|6%RRl35ZUVTV;W7c@IEsRbqSpW}xS+Uz49XB? z3AiAF3aFT%2t5w62neXi`@ZTvTh0W1@Av*l&YV8o)z#J2)z#J2)v;47`c-84={E)y zACP|CQF|)--74vB`ppF>p&w?3wD<-rSrYI4N$Bv8a^Y9)!jHcVgYf>r6#e_d(SL#8 zG*T`F`+p?qZu~MW{9q+di}%40NE~h9Crgb)_GVea0bg)9;*~Vp)sVyMiTvrBIr-Zn z?vb(j#i?n0fB+OSFLaPw>tb9nB1dP~ZXyO8eLxw5w>w;shpwd!3w z6F2PS{DmP~fmT_ri;PZSu*~8Z?1FDQUMxE@mX`v{3WDSK0Y059EKeYfW?>9SXm#uJ zVb*7dgxCo4)nDwYpTDgkd}ORT)%bVS|IWpRO4x8pi*pPnzC<6fdq!$^@j6N(dv^?0 zSF_26&9(}Z2~>Wtf%(JP)p)BI2`{wDbre}N(1y*Xs{RC_#ZF;vu*#S#8Ky6>{0}T}Ejwk8!--9;dXG;i6+xnW5i7wUNsG(9 zckmU!mkf1^56{D-rUNR4R{(G$N?{l1w`R?=Su-RL6z^AWptp$ADJ<$z3U?xtV{2@M zW)Ne0JLSMS;e*mZKgYc#>28ioLyA`?JX7*C)CtS(H~QckkVv#M9)WDB6ue3LyIwz! z!;3!OrO?b&+4Z3tV_)2i>|E{OG>KW zZ^^nmQG9l`Cjc-AVg@6?(F@$tgr8u1oBF67f7Yt*$bowuEx*A3JWQhWhHq}~HRVs@ zL%s0}{0JX(z2)OAah^C2_=!G2GKh`}?ycz35Q{s!SRC(Q(bHh@KAvumw9QfCZ8;J0 zut-UAZ*q5XS8_*kdva^?=VUUONN!60nEWBRK3SJsm;5HVHn}?aWpY*W^W$#W_5f}mjyh!u=Z(oQ;^S0hx;V}b$hKLUC;H5nmx2m}S zZF_sYiWi_OcNac^g9}ZQ-Px~tKN9+X2GN23k8HS`Rc}XbQT-$AlO71K)dQaXPl7hu zYZ3PrUIuJJ(E$zaE!+yP#Wm^U8gq_%K^-|ET*eG z$qTc3s+h5TbxtkYpbc7n=FxkzWD9kRIutmI(x^@WAhS=F!e4LM`K+@}U&^runqFim z?mrbe)Hy7srZGj#zvL|UaTHr0t_vWG?XEW!ZxeK&`!7>edj+bEpIxWb@52Dxc6Cgb zn(Xs8HYd*_qH-?h@14JCfw+KW_czAGADR~0Obj>0O!YpSkg}DAiGOcnGqHBcg^*EW z?S|KBMK$p}vXQUMVI%tUC5EAwQV=49Z#Mn2wrKiyB1F%6~F?p>_|laztO+DX`z??U8Qa#L_Az(=zs4&QqaF8 zO9|sy^v^~%7yW_T9b%zDch#wQOLf2T zHSYT2roNuO`p*9A`tJ19cNXiz`6o;odtCdUSZ?hp-$TCJbJjPQuF{h&X=kXywQZOY zuWW*Yn&r5?{IbGe^p0HICw_`^N4s^?{8jFo=6my|`QEur0&`$F-m1Fv(`^pS*@0Iy z`!pmtb7nBoDljJ_yt4c_UhG|)m%$5`%a2@=)*3JAe6e!is_%t^Cq%AlKIXTk!?UVB zUy|0!&Qb;EI|GQ>fd7@?NT}Dpl4nAY$|pz>-Wsp!_NkjimTXXW`GR@1V@+xy1GJO+Vl01NRv@U zeEvVr*Q-r~?4c&}_2+{30p{xrWbn<`Q&vU9M&)2`B zo&(I+f20$gT2+Q@uKD_fG3=B7>-jp~5iNG<(a;A7_ixVE6D05d^L%|HaMttn2mrGD zS{jS5MpFsnt1;jgcW^p-Jm0yWan>@mQr+)J@M7J`!Q0@X90Mk zq{V+V1ztr)@1o@?T@>NZuu(Hfd$pS|XhjTzR@EN2%GclsB>Z7bD72D5cqnZ-SkWNT z|4kYA4!+|pRaHy1pDZ-fxm;8h1tVRvt?k?Vs^>L$w_|ls<+2U1G|nXnu>P1Oq^MKH zlK#HDoBMBD0eOk$b_#+6l5M|53Z=NHUplG-PEiHIlip!Hnxc#N1e!U1ieA$QLZcy^m zXs8khoDc{k7OJM70U+IWO+hQfpd6_xG?IG9 zAeHXApec&!1@L0~!2TstO0NhJ=-nKNfJkZrg%m4d##4;b`A75YR&@}dP$-SY^Wutl z1*i?%dKa;+%ixE`hx>5J5?O)DxFa*)ihsyMP5$~R7bB^XP`7BWR?8u=A`rj~hwq<+7+ z(Cu}1#Ww&l4+A?b{*G=9BG_lB7HpA6WbBa2*b90I>KweXmn$8S#T^pwwU*le7k<>Z zuU(u zWf1Ucq$!*r%rKe?j5}ll=&KRb(SZ!;-MP9;{ZO`H4Qi*>fyUtQkCYrMjX0-M&vtpoIsajS$ErSCA<|a zH4Ry!D zL{ASdM~YUBI9)^Ku}`PkLb5foIFbcZl?X|hs)`{_^i;JG9c+onTYn=<)T;0COq?ps z5&QL4RZ38)#_!2{WPocL9*Gy%_{F%-6)aPX`#j}7Q2(W)eB9E&bpt=twQ=)p@ zFD_IM)i3I^#&X}i+m-uvzKFPla`8|WW-D1?TVn4X0P%{w5~N_3#+t4d6nKUg;t7^k zlygxiDqcDF&pn!brt^tfpw%~Aa^?z}e&Q8Nx=lRnalH;8eo426sh)ALL@GO=q-(}3 zRViI)i+K35g3==VGkU<5bj7=MQ`YclOS+aWNrw=Q5wJVkDa(TcOS(M4(%2FZu`9s(@Ii0=X36AmYg^Yn|#Y%KRB7&3P53-Lli z7gHzx^4NxKyYSbBZ2KlsMAvq_8T33I2#=@W(Z(DEALUUbOFr21_08BRrx^T(Pltt_ z`Ffau_xI-0lJ4$J1rUBNZcBtcT%0B)56HzA3RWq(_%Wy|hKoJ(_0w<@WkcFZLwcDT zcG6v3jQM)R4ozIKx*V8`?-4luc2ARZce}TtW-k{XCwcr_{1vb?o@j9|QvSMs7dO85kf%o)|RL3ZQPO=|^G2xJ<)!>QTYPbcP*2w5-6y4jl$?bgH=r z*;2+1y-H`$u|q?wT<9oALHh&E#7#(3x3L!SV?cb(=C~X{a|qU@2s%&;8UK+q6#M_^ zxYTYCYBjPX=OyPR=Oo`rz6EIXa&{nn2uQ2T=Okm;SF!vXuwOKKv)0i2=E1bw+`jX5 zq>jaTGF5lp{B?+Y2~@6!1=WA^myXx@FveD}Y9AtW&e)ABTSUL>)6sHPew+v4+Tk3A zaaP8A>;&`-ot6K95*I5@^Sg9jx&2QFVCVo2oJkUY2kRyS2k$Y4O(&dzNRFi)B&NLjp$3SdpS2mJkSuOl<&hf#?5;&_cS!+0akI{3E^m!l2vAkw}I7x)-_O>fe z;M|OfQ^VoAeQ8@hl4JEv{cxuH;1mm--ysS#9KOdg4L%!?94k%%=Q*1ke-TUIJ}$ zle!xvI01Z)Sv(XiZ^E?4nW2rzP=pNje$}PSjorXt=VTzvbpbq6nkCy?^CLph20O0{ zgg?QTVC6S(SphiMTkxv#2=q(X1z1BfQ|oo8H5h#_D8k|=Iv6d3DL)t)Q$&f;Wen~5 zfpC=Iy7bsq{+vE6PziR|#{{m^znYX+VtcGYeOo}OL^y2H!vi2@ZUF>azgO=a=0f6r zR*rmM;pnX{rQ?S678JBhV92(-Gzm4DP*}E`eTe9L#SY429h7B<%eB6V92Jaoht;f3 z?)Z_=3%Lc+Ax+iUL}WNfOnqe+5FjE2c!r`QVDGL|hcW~EfG=O*gWU(Ug6^LD2vnm)m^YS}G`_}HP@V66+ zA%sl|xL_Gd5NBZ3ijk^3vuxXZ25Z1dgMqLXfCInWtq?0O?NYaXGzyBYnf#}D6) z8+;&~kK|Z=6aP3o8VI6&QqLooxa+wbGgbnIZCwxXc;iy{_Zx`^HB{oECSup!OM=mW zOj5jz(_-$pfJY7n6x*fG>}!HXuin$LFbo*k1Se zEW237=5#$aUxwL0kIe`4uO{VHGB)$j9nRSN1ss!r8US+lL;=ruI?t&h`Mi8jO{Xn~ z0^=cuPHz%Z@Y6wfT6Fr987w(A0UvBSjbUz!PRF77LZ?G4`E>|VT=ZFtfv+kE%%V>Z zQ`?k8L;4&v@WAv5+4MQyOP?$#Ne+EhUfno-4tJ_B^a)0e%8v{)a-PP#g6JJh)pEL> zU2a6kqr?>SNhs21xX759%wWlwQe?2{b2DBbU=XqxS8Vo75hsoG=c!YoP~XaEwF>WXAYFxZ08) z(=1^Lb;))ppcF9^~?v7&Dq5H;rm27xI)W+$`^xwm4m;8 z$k+TV=X$<_G!Y!n?O`>S;9j~C6@G|su=k{#pARPzovrbY%310xJT1Q71&1)3ujk@} z-LzMk+v4lqFuyc1{<(wX%+EjW;rJ&|i@$F+wZ4aN6Ai}yjVbuMGv;P9{!fLfr8{ar zlqLMK#(%MNlr=Z69ML#`pXXHJ9{)CfL+S~CZ}|r>KE@jV#1wQo2v71iMdPQ;V2^)% zu<0}gFE)Q4hvtW(*B^kt|9~w*^Ebc-!lTIFr37x#>l{;igQ+sa!aL)u; zb_=}FZF;>7Dh(f@DOR8<*1UY2Okm5wHnPJd+RTL8Kr#FYpYDJ+oL%`GRLZ8ek>}Tm zbAYYIr)C}!RK9aiN!$%UuwM$FLNNotG_Y+h}&D8e~Re zF17fz7c*G>kd6#?Km3kdHordcYh(O+AHKNw^<2EFZE*XtN$@t|fCR1i^yrg!Uw>eJ z4Z+AVysxJJzwsNtK!2IBF6-`=$Qidf^!LtJW1T82c`S6j2y_)d{XKwQf;BgBqR>Az zJr8Hgmcmt*JiPV?-LkXrwCK5uE@T!x=i-A+&sUk-9{(_HH!}Y5#YN8_VenGb1Zwf~ z&8F7(zHdm+Q~&LwXJ=>rFB?iqmh~ZHl|L$t4|*E^8=0ycjZZP}U*v%14H=>rK&c-A zbGI`wCMZ2S34lE44fy_&=ld;~TM|%UQGxk>zUTYPEWZ;BWPcyx`F<+Pf8qY#$MgLl zfxp95eswoDej$PXi|czUPx)m~m=k4~FYWrD^prn{<@>q6*LuEJv3x&_aJ&4~p6|=9 z!1qq(yNqhm52`wti8CZG<2Ezo>*+*%lb#{(TJK_`fp~Fd$c+TK9Vkr@cxzvl1Qu@I^__jgRJCWZZ>2Ld8terA7bR#5B9 z0QXxcW`qm8s@0uc*_`juR7wKgmzEgd(4kuG@8bS`7Qc73=qQSddKOM$@sSvKR9T8q zr9G~$#0y-L#)qQ4$BVDTJoGSaM7Y-+w|R#chV}OBLJ}7THTLC4aGO*xdN~4Wejq** zSfybLkPGDsG!u3m#yQ7HsGDgz;w37bcrF(E1^6ibc=K}bD;_ksG)MKs>GV1d$N8E2 zh2yyXdiomTQJI63V3*2VJj(6~cImaP{23X7Prw>zQ9LgKijUHk1pc-T72g^wPO*~u z9NNnS6@gcp7nQq-0#KQX?=}vez zhd7v>KNlaRKzJG|hsSR|f-`W(7Y1bPl=S4e)1}E`+x`Rlxrx&??Hf(|qks!(6$G8Z zZr`cURYLtt45FMsnDKCMmq2MCJe5$vWZ3Q%53~}3M-JYnr8l0UB^7W%1##vgE5aqi ztey{FGp`xp0;$iK)m@>M)}F*Y4!K{r5*Sb}tK&!~SjFS8%AyX(u>gXM8T4M=nRv17 zZ-}K))}B*vAY8*jqKEWC4loqRCXp{Dz>-qdU&{ghHdfNI?y;;>{1%mEUxOuV_=Zvt zXWywu`fExhKuXIlX1?d~`*T4^*k$}?pIG1tOR|Y;vt-!GKy&mWa+7Pb#Fmpb))|ii z>!X2nAe;d;c>&+eoDrz}lZqS01iHIUiT|5;#1((1Mfqa1!OK!_BZbI}Cy}E4QI3}d zx;)*A$XBIcw4mX!j^zUre_)J=UgGf4wQDsWt>hD}FS7WkNk2Cq^&oH4bcV01B2(w589m(!VI>6?{;UL&p8b(00|*f2L)Ac zqAVS9uj!CZLbWg$W;tYz>bT=n zZN}8JqDylPveS8J1!-)e)bqI%@9NV}Ao%B3<0t&#>S0Hyn9qE8Y0dqI`Dth&UT#BY zRm`uDm++PB028)i6kOE2?hv;D5i>>9sWXXPq;fpz6phLQ;n-&YX0Y>8_Hkh#++4s} zj2DE-rUo}~=`+&o`$9%=pNt~On=y|#eD=#%n$K=s%{olDej~D;xSS~VG9qgN$=|t> zZPE5z4OR!H5M(qa_XxLHao=aqp{1etivHPfi}qfr-p^}Co#60VAH!=mAa6=uJ6&hc z;_G<4*zzTob+TUq^+D5Zd7wv_$e(~|c49iT%UE@alK+sBnvYuq#$m56eiC6>n)t9XqTQk|&+FP5+J+bOz{CK_brF6Fo&MbkGL;($l@39PYCikGeAe^id z{cwi(;7k@cygXaO;d_jeB;mY3IQ1#u9PfiOUf|q-qgomc-)%TSB**fy{rIf@qG7v= z1r5@G^sqdcklRqciYSbTuammhf{1B|ZTMmBMmfZw%!(sMZy=}Dzm3~&`m;Q)8A zsb}RXN)(z-)suvOrwu=g@UKh-|Bk-_{}sSxJBB&%&nNu<+VDFP{tkTh;os(Oz`w-6 zZ|lHc4Vz8;DI0zs;ZIBj|8*q(6@7kMsqudcPeY#(gg?uMUr6}pq=J9h-+=$1fq#Vq z{|LfgY{M@m{8jkuqt6y3{uTbG8Th|^4nOGmC4hyIems_|?$8b|>_v^1hg%6s*joQ} zcma=vLwZt>_8#zR2&4WAwcA0XIQt z3I@VUF&nCXp;oWY#j%2Ho$3W-8JJ@-IG38#Y)s#bSTZBjrDyisKzJsKGjjO0^8d*U z9iD>({AybMFtgQLTWDd5wPI9l#2VgXS!URVkQ~c8$v^zptl;q1L-L_LphYv?6{;_= zA}hay3=M|lK<3NT`FciPSc5uL7P9-gtP5NA7ejIc5kNiNSdSi(%?bZsHvD?Rufb;@ z{BMx>SMZN8@asM!ODMnsmG;9D;AV-(;B{uRM1Pd9St5v+{K#xA_N|FL%GXfm<=_FZ z#9IUgmPkij6S4&NN-9{7?7QwNyWX`|Qk;plWTQ4OE3_3P>(m8664s5SW(oKzHi@uF zs^gfvi4WG=uqk%eH1zUmT;ruD&X5-Aeq03KvG_8x3>ycKq;K7FUq3#>eBbDN=tpV` zstDPAbp8*~`ip*i1MpeT2-c(fu`A(kwc*bq{5|;WgWv9N!0&6|AAx7Z{JErWAbc7u zckX`t2##WQKSq($?#BwepdV{c%r&(6YWL$hno0j=KTgJUss^AoZ$DllNY<%gpL+W7 z2PjD?`|$!Sn!Np3L?kc+P9~z5p7!iSBXYLtY4SaQC5_whiA>cd(<){PnoLiaOj|zT zSr8m>Hwz!guY&`XzrxwZbkDOWrS;n#miQf1qQ;@PbdZ@?>r}bard<(b=gsd}{ub&Y zV)sa$rO>LMhck{F#g0TV-JrO`WWSWz=X0`0iCPD?qxl(g3O8}bYUeEI_65`4x{Bx^q4`CN58fP0zeAA)C{Iv03`U?4L71TSJi zkHH5afJ+Wv!-snFVIMvur?{Er<6qbfb@Bd)L=qX=Q$+yD47NqKp7bKY!_L5E6vHXK zh|OC4zMe@8hT>e5x%MO7u~YF(OobiXwHnFeWR*J+%l`55!C~4Sz$4zvghOeG`fS4O zCA>&4*k7>J#@dJDSe8rS>cDScIIwA@(?P%E9WkCg&LB^jZ+^61?>d zTR3^SM%J#pkc)>Cqr?6Y9P?ot6D%HF4aiw;1eujt+;Xez*=oHI62wgUS$uNPo`+J0Y!quB)PuM z-GB;7cQ;@;D%Bl!xo!aNmMl?wn2Hs;bAEWEAV+c3=sA}T$imBZu?oh)TAXufzKtmJ zFyIY1Jgv{U+z-2wKIgJY{kK*({5L#tzK#Mc0LpMJ4PSn6s5yg*cuBI)twp32z!U{)3 zzLuOReC;cB2E7O$i5J?HG2GP*lt{U3-;7Mipi9)@MW26Zgir61iv7)dO48lU+q4AD z^Bgic40*hxtr=1fCu3wN+DoiuIApRYP}zoq=@zW&E&C)GSD&X_xL9{z7r-Vj;vj;q z($g*K6Zz~%a;K!bk?c++!5?<)LOE4;J5xQpc&(H?pqKuWz|A=xTo8H39EygVS_Lu~ zFa7PPOPYgqtJ=9pH|KUX%l7Z4pPgP|49vz^6W%@~io0p5$I)BbO`EhWNLC0ef7|y+ zy1VVYk>Z`0$|R2wB(9Tn?QHxj??Simyva4l>Ui8cHtehPcg;;9=|l40Zk5wW0cZdO zs0(b80vL{scI|eO42H6Xa`H$)-QBz)$mu&x_ZSmBJzF6F4=82kFJ#XyaiolMnr<)5 zHyoK|`PNCgEM%sHHpR-D zd{iy^39a!=eQ!zah!+e;B=^+!G;(4(ab`a?9yz^(ak$jj+`iH{5B;ELYX-tChwr?8 z6FKPw!>s_j1}d-F1NGpRBw5v&aI=Y@M+CI>)tV-?YREVr0ZXyMCJ-Z#E-H&!DlHU( zcASFK6WqC(fB{tAgR|q?A82C#Q<~f8-1NSD_A|`}Np~~N*+^+14{%U@08>3&bBUDH z@}QA3nB#z(!!-rw45l1ZUx-uM=5%)xJufq0z;3mnMmJ{wn`K*mujd5Sg_~8)@k>jF zY+RpoJD7_jCD#&ylnfOxN64DVFB#?tR6iBIlXN!~PDhGYGF&TpjAU?yDA^0ErEW>( z5E;l@RX1ei8nOZ72Ev!>44Tm|!i#MmrYuZvtk@6kVqdYC@o$3eNh%dv`(H4Fl=Y=a zq|Jf}G>JePqvt`_SVan}>aqn5_P;RS=`(GQTp(aG6XOLwnF^eC4MdY>j6$RC_CaTP znc`e_U!+%IFv6XuI{Fb{fHQj9y1F-xbTG>L~ z>o&4DV8vLrcRG!MzzEqb&+}%t+S2@*QE;T@lzbglR!ZjR(XdlMOHaWp(~!n z$HXL=b{ti|2uQ?N8b#%3$yuxZgPc^(s|8XW);+2t^R3hQ@*{%^)mB!;!Q-~!9t;55 z&;aW#)+PsYFIWr@2`ul#rt7RtE(8SP*Md)Lkt>!57-9}q@gGs+&jz#6$YU=;%A`PL z4YA{vSGX2<(4ZEm?8iYBsg$LG-YrOD#A>}0IVK&OUwpSt&{W=q6us_LeOX<$VS=^> zwOi+FLX6jhfFEOPxCW>W%zK*2yAgTp#o1cCa8rr-Bac_$f$*nTX4DD8+>3Jd*C@Xl zwkd0ZI53qHkO0mJRK5WtJp*y-;4i!QCVV0X|2?5*s(`4ANwD^f%qAEF-eFaG{$mF^ z#&i?AaKZbARUpi4R=I@jg~S?$j}`N2!@wNy7IzZN)?4`BKkB)l8lTXt{OHUz_@xfr z03ujR?JrQ;?yOq804e5@Xu`(`0BeDWrS@UAynrPI5rqTcy&H`GCao2L@JTID!7RuN zuk89C0OPw_@*a2$HaD}XKL0$It!5@|Zsxg?Y*iLQ)I2+$=H@-&@Y~&%?Ylew{ zLN^$FTpm?RF=4e1b^ekQ8T?A&mZ9xUa4Ld5`Nl&E=$N!PRP`m@O7dtwl=dt@17u;# z&{%rWqw2qJ*q-HR2ix=OJl!5+LmYB$!}gdDaeT1b^C-aC?db6$>EMafYqLQG(*~RDaW05#>()u=TEeQ?K#=oo+mps(w;5&kbK5Fcn zgLft>UBGvH@J>OB8N83JM~j=A0oh+Fu2nN*DF^Rh<~`WtJr#NF!Fvn~HXOXCpbav3 z<0xl;J;30tCsFLdo5L<|Wbl51`ce+wg~0rPgSRO%h@5v1-YDCP!8?1dGkC*2u-j_9 znTFP*t=1Urh|D&RbddV=n8aAE7M>5nR>LDnQNF^+N}~;|<-b6ch28ugu%HxFZ46ay z2FE7@bfGd4w?<0)9VfZocvsu&P@UyT^$rlE;6H><@uZS{lTl~O46Qw>UdM-ev!U_@ zJ|v$tBljghLYKt9hRqWbQIQ%9D87kkG!oqt(P(HG_C&OmT;np5z4NZd=RQ0W&;3M# z$<|_5PgO5W1|8HM4pdujQ(GI>_AzR+<)5{Wv*%sz z1h;#?s+x+Kxle?@V_Be&z6v76K2=8nPMuo)xQ>0%GkZ<^37OrY|1 z__ym$1!}Rp6dyA1!Hmkt|{j`YtG95Bf7%-cq~%V$knH?RwDHW5nlI?SkA%wzda-**LdXY=6=) z&5i0ppvVD#G@s6Ze+bTS(4X~yf6F!Cf53<2RGu`4{di&W6g7OR3-)IC(Fh`iqj-^VQG+a{K49D+ zYXA)%ZB3zJKxsqxQ`#=2U`P5ERp7H&J2_G&y`{-{2&$kLTSpF9fU$i^~T-VLh(9v?VH5C484PHIF{Kw4sWeZwsRyKL&`=iUzk)8Je!mLIkd#f)Uxgc z#!!4;R$WlLw*WL>h5E2(gID;vf}Ihl%o1C}``PptLD!yS7PW#{cnuKq*k^_TAv5r? zKZO_AF|&gx8p2@WlbFCty99Td$^sF%(=#Fu>ywsX%NAr@7$geeB3}be!yZnk>Qg3W zCa<>VFJ~j-mp3$r-Z~3U33wqh{FKvVz#G@MeZU-E@Y|#TY^Cg^LgFIi7*PV9;a2`S z+zNS`OUMASi>L0i)o7t-hMd5fG*@{pMSbL0l1+Q+4ge(D%*&8BrOo_eok5#2ppF{8 zishZ@m*h8~iI%_Am_026<1Rve_^TDcU(HIl#%31BW*an~(_UucR?Zh#AAmAhW}4Oa zKf}c;iH@}F;a4p1THEmW9>dm|;I|V7-dOcN{rHV<6kdhE`zZrb3dX3m3;1q_ znplP8SY8TvxsAfh6L=#qjx{{K+aWNDksPZy!;hbO&D~xji6(x*;cYhOuR@LXBp<>H zg<%ca9g03APtHd0#b3%{jM$Pd(NGP(gs|c`XJF@OuqDQM2WBYcr(7myCbnTzl5Z_L zZ9X?bTLB@??GNyYAseJ;?;b^ow{;I*@cEA!1)2Nq_=K{SK8ri>uvIVBS zQd#VMj>1q)@S&i@W7?A_z5j4)dksu`y8Ti-wQ27wVu3j)EiQIFnrw!SR4dqC$6kX? z{6ZD!o;jv|wz1a)kijhZ9Mj&@NaV7H+oYbYsmYl(S%+hG7qZeEd(A7Fte@ivr)gk; zx#W5L*WIl30+2#Dg8|`03d6IVCxRL}93Qh1C~<_w>kaQ6Y+33U!z{Uv6iyu0szJxK@>;1@cUe;84l~3>!4u@%-M${o&3+jq0QUxR(DCur3=q&(h zu>XK4pWiYSz2oeSePcVQZ& zEn^w7{@?6JQYFb#6FsFG+#mgu2Cd_K<}q#<)FnM1W4=aL>-~ZoaOPJc<2efkB9!X^ z?QD<+WxZzhJGT<%OP=42mr&$2 zIi^6}Z3c%fS$ZY>&Ul_N11mE*kf$A6PqyVX!+%}(qGp6ud|HPZH$v=+YsE~!GWN9Y zKtPY|2^x!@k)eO6(^0vXUynkHmRfqb=}0Y`U#~`8?yLV^Yh_D?9pcC$QUPZVf&Nyt zmbp_&g$s2CO)nmQk#l?cETEeB>7V;y1wlj70?fS>QZFgoj@s?gql; z%<+TC(H=Q$3q&hsr>qEJd%B+Frads&p0g?!i85VGLvbr11Y@h@a|L(TE7k)9cz-n= zkRquAyuSbpJQD^PfJ9VNqzT5zpK3qo>*rCl;eOB{mIAG#_(+pR4q60@mn!%K&EBqQ za51Xj_1h{PnWfL&+dLhRsI6&G>k+6bm8<>@fKI*O6xO2cX`4R=tP=q>&YPuBD{JBA zr&>uoJ(947#m#)!$WH9O>AHr+c$yj>L=Ew#deKHIWe|8T3%I)p#Yp_CCOl&*80b`R zDl15LD#&658}Qvnqy0$ys|vc93Yy``wOtONL8s2f5nY=z-~9+RS_YhZkkQudhO#s{ z6PwW49Z}R$;4-M`F(K6XQ(WJ;9nhkst+g7Et<2zW9lEk)GO$JpT-`lQyuUO zVOq)Lyjvwp!3oFcReBDRLS4eyxg65rYXL{Q%1`9ZUU`%Yrh2o0sfUp<5WX5&w8G5y z7_|T{VDgY0t52aYzdO}lr%^5%GvM@Xls96IylNR}nluajBY~++;6sRhq;dtSkln>_ zHMYg^3&%D8fh`?k7^v(cC!(ww z!H%Qtg-E2CfL^uS%;tWzeox_OTZ&rQ!MUvc9H*u|OVGev)7tk;rgnT9R#9Iu$8qa5 zJ)XiBd+K>evT0iiBj|Pu}{#GPY&cE1pzC;QN%?f28caeJ)`Jd*J(ech$szb}f*yO2NSjL* zo_3ReSd3Pt8=}03FE$H2#q5z$ScLT|mB!yCL>yvOfa4KIG{C9 zRtEi{9snfoltTP0Wu*~6_*b4q7GOP$PaPGY>;x!B<&&&|r%pj_j;>+sEW{5Zs>E7S zh0pp~k5v%{qZe}(qJCb4hFZgQ7HY6tJsmID%Yx|J90>oqnQST$@5|0AV6=jPFtfED zJV9&gKbPGgYbyE^8g*?VAbTb6XlV%I-#x<-Itn9Hgvn7yaD*CP^jY*pHy`f82Lrx* zDw`5a+#z^~h&%`IIb2$UOB0_!StT{7HmD=xRQwt+mx<=&psKn&^Ww+Q50)z{yI^ z8H{)+?`KnWG*i$hK%~;fDJU^k&V@;9djVQ}nUM_X2JvD6#MzSb8FPGPa%{vGd&sWE z3t@7(Oog#ns;i@6fz#@KH4;Ug3=ioHw(k&zBaHPZ;~T>btPFz2Gar&jsjUp9z}qv1 zsU#4x8Z0fb$Fbki@WRt5%5hA6$#NpajK}yfJZ)Y9^W3`!FxE0(FOA(GmKsrWv7`=SH1x&?fXor~|>zBrVMAK{QOAFM&+JDItp zfVhB=FHDB5XH*f$_#m{Ficur+t1a~xl*0I`Q~g*fV%Yfzl(Ok}FkbQ_a>6GV75^j= z%7R-%p^P1Y+T?8<*G4YyTL3D-&YBi~T*K}efn44MY`k*$OQigTTyD!OXv)`5GOP4T zStnaAXR#5Fpf+1B$BIw&n@(p+VMkO~12yo|*iD+BNQ&U-#WRqox&xTaQ7urpO_4nS zVuzx;REmmb1+WE-Bm|KyY8B(k7=aoHzlsyABC{{RxG>kG*Tn(VQmCd8HMH-yCoFL- zp>J+G)FrNQe$b9B^C3PYtFh6MT>*517<%O8#C1E-6lzIVtS6luU33^Lvz*(`HI+qC zSwmfP?O1`3W2S|#$H}Xui*^}r>7ti!bPRhsEt=PdqHj zea6FrJB8{Ivj$}kGnbxas=ek>GOdpJeJpdy{ALBiYK>f)X4W05dnJG0rl21zCE_?< zfPMB)_#6A&Pm5qf9IV$QWJW>sfo3qgh+jZff(ClgbL~yBDHGUu$PYlJnZ5!zn=J|4 zW%8Q5s~7nZswb(+QyUe0f?~@hT^GvlycM)O1}XksiQY{0*y1`#N%p%Q&rZMFR^Gb= zvy{6M&xs#{+{p7gP%({Jt(HHc8`GOb?Nbq@RA(fFm)@UXL{bZ<>bT=6eLy9--R}abK-=O#+-QJ)mF&h*)$eL<{qQKf^;08mUY%pL7 zllyrx)ebb>Da2KdD_mH;RZ`YJEDmG5te0R4IVdnr;SGKU6Wo3Vy&xc*XkjDFX$e=f zuz|6(?tYDE%EPpc!ER{ZnR3fPl!EX>7>Qcwf52hk@;_KjU-Z$7IC@gV|B8;vGm69I ze_*g*WZ~_c=E#^}tFjM6r(eK#>z;+m`;cO$#SdnqPh?sQn-Ta1a5Zuf=kxJGx!4hM zF{tI@(Lfu95Xi;D<_JR-LM~#>C2~>x>*ZKRpz=i;m2CgqSNPV5f9~nRp)M&1)w4*Q zEOi?xn9ArrC<@#u1z`oWrQkLs(&(OvXW}Gi{IY*x_uDo`dDEv9&coPSz<1k2DcjK+ zUw%hc;@bJ_PApiw*QI^uhfC} zD`eIJzFYT)RBjL{ChE*V2A&+pUPX9QQo@_%z#B|>e2*QCtX$IcbKu3^*6qdqaaz3P z_m`w4FLSTYZ2Srxc*6;g?>7AgI`D2W@Wgp9Zdj||L+qP6N9d{UOfkC;b)G)9CEf!O z7OGW!@J#f>h9A$@+W2&I@Hv_I@ZGv6rLw()&)T=ZD>w$67Ju3xQww-TEyH?_l|*~N zxKs`{|A71QkQL~YDj6@re&Cl7ya;Is$NC!#XFRoVoH`BPL@z6dzL*8ULnjDRffNVdG03_}IHvn+N|4(wJa1rRHGw97gIEPz)S``=j zW!$?}w*5brcai`5ldkV+Dawy#vn-Z-&EkKcKn>wORAsLf zx-px_yYUQ@t-oX=w?z?=A01_4xZV!m88B#xYCp>D$Qb?%(#`@K8oh`!idqlvIeR7Y zJOJ7&ktgv|5J9+qvUx%0O}HKfE~*jQNMLa&GK=gS%O1)*w}!~t`d7d;v&R@f_u6Of zBF<>yQ{%|$c5IG=o067pd#JGu-iQxez5{&uRLlR(;(FRgivpD`M2h!BtuWr?iP4k` z$HGK!tSe{-iRGo}&r^Vb8HXHmS!T>_YhuP+;xX7)^*Y$?WwbF7gz9YCH~n?U9Nrh8 z^O3k>jg27P+wQwj8{0i~ET1$zX>01CsLrvbs>hH`T_}0o>URZ58ie{iflpDt69T7B zogh4*wJ56JI)|v=j(q0*U5)uyYrVqdUp*OhX#eV@HeF3zoD&R!6Yu#`B7sk0fUMno|U)(QdrXuDyf`17Js($ zD@mzZ^#-4^;6yK#8ZCQZcB$%362LSK4{aUyQPb8p0{(@^~^3(uiUMNR#vb9l2fIm8_CZk z#YQpGz-zifhr`8)dx>vo7=6U@2KKL(E zFeK7!Rp{Ae8$_+XBXJXvp>3qdOY${Al*j@In=F`wuotSLci z*BHMEm3cd4f~43TvK}Sex7vro&Z^gOox4?k*Bte4yjb(CSuf|Pg`SfAFxk1* z%So#^J1mFm<+TDMPdjLYdB?AIB1j6uHgmBHrn2_q!?=ON}!q-Qy6(NfSWKjJGNM0^kg%oSK(TI@EKo&_1es6IY~S_bFPQ862}224T2~3{Q8NH=!%gwppicd7jABIWs?| z%?x#=M!{i9bum*8yxVa9eY%Hw<5>_nJv$T`z!RC!QN9a~S=dDVIUP(QGjvZd3Hxp{ za`M@pC85#eVSrPafutTl2M_2tY7O?NLy=>$xeY>I!^%ayLr7#$yvGXwOih!z>%<DMpE!+a?SkzT-l2nmOo?eqxZFmL5iI&ngVcN$hacI;=&FWG1^7d}5NEh(k zHa-nOirHp*Xew&hYpUyOI^(6g(f!e0P0=oiR1XV^x|tbmy-|XSs^gJgI>5cXa{&@v z+dEyb6Krko;QBnANp=n&--&uSC!fzJSWWg=eyc`B`!z;ABeOqY-_Jn?Uqzo2OJ^Tx zCAMfAtEi=^XgN%@c14e}qRby;l0ijZu%d!g6_t1^x}`xy=(}d_Rz1Z^(5f5Vm1VQC zGjwHYlgZHyPty<0@m(K1i}%#IWZ0t|6F%5R zW^}x>DnQ!?qqx`^#S5r z)YinQZOJnnJv^%&f6ZOl{i!N@3W=_!J&j$_#+&v@nQq!7Jk3zOMk?btiZ69nc4(@~ zPWM)J#sMq4!Bln%o)uQy?y*>8+TGkteKW-wH5eMr)zipqkDMscjLhfCCm5Au!uIUj zF3}Z`oH_PPzHyG_p{YQ)2lPdCKY)7&$nAm>&d>h`REj=e#cOY|g+%LvaP58O2EwO6 zID|U)*;YOk(^1P2Q?S)mFI#PS&@3KUp=y^|oKG(4d^3Cp%P@v$@00IWd%oY&1>ZSz z`Q4V*KRoTUTfGQu>^47z7qpr8>!8i@fX0y}4jCbAGGHc?-Qjfnzy<(Jr1*g=STL*M z2kumXu_$?%S;rgtWCg-)P}D`A9hhR(^+3W)pL|qK0a7-MqYG=CP;>#U7L>2`n@OZ` zBk>A4jfZ^$FoaG|$+R7Q2_qQ4;2Zy`p331He=l=K`qW!yYA!monVMTX3(~moI04;D zGj(^F_O*(pK70x^nPnV=D~S%r|6QaFuD}A0R12R)ri;;U@fA8F8=s@DMs69CmJE0*DB7o5%e-K8 zqy#d~QJn{ZJeWb?Fh%1kKD1YlBkkgf2Wqfa0`&o(b!-9k^JG`A&jLWZ*Qev9AadtY z)UZ@q0joxNW}+)flW(l0d=BofLJ}757AFP5Ss=TbNXV9d%~b~F*GqLTW@vl&cj{QI zlx<`8tD+dvrHs8h44;ydV_8@F*S#YE#_&_DrqKWWYJ7L~aSayIf$%MyVda!G-(%Uj zkHc3WIhJ?1A4pp-kO=~02KYz=;k&h)7k(7Uv6>V>KE0E%RZ^h%4nB~M>b55vvivn9 z5?FpTvIxs3PK8iUhMh((1QG)lhCW#$tNe&W7qhS6jO$a8f^kiDfK?lk z??{X|6-I^Lkv)vfLo=Vg!!#49gVVlK2f-$S-h1$>X4W`=N>QVXca@@xO&Xy_g@gg<1x7)D3o=^nygBa;l_tnJ!9B13o*a-|r; zGX;6?5Pn%UY7aPszZ$CR{vV#HhVXD`T@8ouN~D<~{4Puh_7Faejk46dp8?SB%6h!` zhVZe8yJ?89_`x-fZ$!Fh98;fEA5Q{AYaBmp@ZNa4?lXHF_us@mGn-c4ar_ECVH_9t z^$)Q(0LJjOYq-+xRo0H9EPH{=23CH!#R}ErlIfi=i@lD45vxxDxj!IlRahO22B1H` zh;I;OLiSqf)FNc?^=GD9Ck;bj0hdT#D_g#jMwU(`l3TJEcxm}g$y=^={xz;irVnoEgFYmf&)w?#>|6j2?o&IGmtl?!A`F(#`zd*oPg=E z9veVGKYy}*sYQ|zaG=4B_(XI;8lZ_?ltP&R_cyd&vwbtAQrwd?8v`ti)30B3H>{t&% zdHLZpq`=j*nld!1Z|?)8;48Q&5Z(-+6j8a_Ik0(l;uq8ZI$pt;5>58s`Q&9lB$lh^ zC$d|>>JDW-kQAFTZHW%p%^NShD^o!UXE*RPDR#i^j3I(c%I%C8+GeYf?D>kq=%FFz(i_k`%kO*?9HNk5@dU>}xA6ZlFVqk3nE-)KhXb|kfX8$5nHS?5d;P3aFRggWD$^8q36un+( zkFM0)3@g?{+Wjmauu$HuW}%8yXbhJXmO zPEN5lFLn&n41F80G1BXOagmTQ$)iUTfV}!cKAXGtUN5=CAv#$<@xgJA(C0fIOaQxSx@Nt)O&tej1dBSBHpBTpi`E~wXOY)fnQz@?K4Tf@{#=O* zwh?JCB4qBhhbw8pV){h zHBM}$+=CiPcC0{MD*q}d>5*=7hxj(c5hDq+LeV>CV96y42nK7Am&3FpdLn5S8+p_O z$e4{zPaveX0mg9S9bgM`)dxb;4a{+S!-(wVsq+bVvY!0Q# z@bN&7anIs;hIRu{qqo1WAR#dQAjk>&ITX!j&ttEd6v?7qQXx7hk_L3D7s zdKe$5@3t%^?&e5W)i^YbzSnWf_iBWE_RED+fs2uKUx2f0*?qnN`v#w&22R_9L7?AR z$DpXnf?*J%Q~eW`J-g~QtQw4)7T>0spdd0B_a6a_S43|Vz*^(-OgI7^fh2>`P5x3f#oXDM(JYuOphcA#i|E}qFwdLtQr$vTHIPCwQr>A zC7S%$mkl54uKEj1MC9CjSJh6H_CcOwp{7a1PfV@o!ItDw1c_1ll}i-zCsxnWp_m@< z5(tmrAu0+g1anOTL0v)H#36e~80gE^^E5-b{zOCXDtlyAD?wkvGhyi?vg!h4O)0A` z(;0L>UTpf&9vbv-(;_I%h@kaCf;x2&pTM?=o%#v0iD!O$lWiV8dnMHjDUi>gH?NNe zT|&{Ze6aB_n_Z5*d7MbR8`pSJm#$ooPl=Nt4`iP@p!ex9qok|C>vSJ1ecaIHq@e3mjI$ITSa zXIB6_HMcM4q@ii~ouL2*!XaASfj(A68kvIVplXkI7dzcnupShY{LOhw(%sETLyA_h zPc?mUrsVNAhfb{8`QRC{Ta`E;DfO zF2uhpB62Ag;%A6ktH{JXU@Fs|)vAjWsa0>|$w}SP^KT}N5K+1~5aznT#eer;>UOc- z1TX7V{psPpLj-9*9Xd(6n-2d40^Sw+ETU!!Dc2olH(>y1n?fZP30#4z#|3-83#y)s z%+mNmomrpvyxCI%CqUhfGC$~?I$mH$uFpS5imcBi0Mr(|kywRBqpzR_)K9w=^0&E~ zzU<;yMOVLilX*4On=pET1Gyjf-0tHc=kL^as75+LJPWlwz}VKO-w*Q0`nR7RoV{=Y zp{IHXu)J(?4^k{Qu10i?cdtSk)q+USOACe#Pn|{?7Wsoxj$~ze&xN{3$evy}z;oV};v{ z7usL8s_~LP#ab^z@*97_W|IHnia1xEn66jiodcTFQb9CcjYM_kC{WiURE_~`uTVJ{ zDVUg;zo7HJK=?s{gMov^NP048)<=2C+u=PYzAR-BaqRgVuB|bp z?<6=mjDlDs=Nr`A5+9Z@mp`v(%uNRDR7>g_Nq3LAHc0V~xvrAONc^ywz-j{FEsy~f zBk69&vsd5)k(=sR$&Pv0NPL*@ujm*Y{abaXJdm`t&bogkN6?=bGxVP{O9A2cEz5PQ zGZQZ(d=~lLoR1NjtiadAZW(woPIBqIvI2;3s7(A6tB88`p`J(3b9p52z4wy9b@LEe zJ}q8|Ev8qdso8#s z8N}wtrCckaz1oar+t~t@?*lW~+Lq$svb7mLiDjh_7@MxJ*F&+q6zip0*Z1NJ{Q~DD z*Y~s(-^V%M_08lbZ^7=!UDEu8$@X+&P3}tWNWvkJH#4O3gJrA2G+NCDi6Jl!Kn`}RLc0}TRsx!Nw*Z_6eIqUYFa%$($e?ufq^`!* zo0UwF-qhiGQXE(R@N$BJ{Ngk6Z*WvOOc!%n#KVb=0?5uPGKnFhao%q*P++eCW z1y8IqGtSf%2j9MAZX3XL&*(=^!5WT;NT0GL;WQ6=eaeI^TUcBI5Rh~*K zdkY?_O_SX@PPAUTRo#cp5w>b4pV51@IN733`k0OE0ke7!2ow6B(yT7`Uc+e)l4pQp zN|ys>TVd2#qb>p(Zh5d(oz5oVAc;P@IY}0!JV||>R{zRngo_G?`;jFt=Cf4lA9PqC zYSh2(croKPdN1gJ;l4$!{|LiOE)v;|#+dP-?Zv-p7TFIL8NGQ8*$pfrb{qIS2X$1- zI?vV|N7q@))X)(mPo1_S{SW;cirkr@t`?%Xr9m&I7-`UmH~xS75>&0a1kX_9I0Ty^ z`@p}HGbxrLMJf%I=~dzk%}Htt@_J{BZ;^s)ltPidS=iWt_X#J8sy+A(fk+cfXF2g( zf*aAm^J0wPIks7BGtadlPa%HTAtPXk7AqZ2!pV5bkB*$nS*)0AK#0p~6coFasHdSo zuUgtPn98d2)a`5)%&#+;60xuUQmK7=lpoM?m&8n9er6^xW*sNuxbqdX6k z%v7Fvv>W|q$1$Kfp967#kxhCxv<31LFyT4rbQ$9Y`jGWHPWK9 zB;8Ho2LMRxcpD6fXEMcOrkx^{@u(AK(xPA_m?Z`~^3RwLVXWhhAx1_fwcK=by?Iuk zlD7H;&$HS3h`x5UYrgK4clbmbu<4qrS9(dU{$3d>>FzeX2SA<<2}SP6P(L!&(;=&* z!UJ|l2C_8LA$43&(@YV*6bh@=A$MM?8?y;dED$oGt-XN(~hUF_p5Eo%tW(a zErunwwUK!GS^%qU0?Xg_Olg6;g9am~dtQb=tCSVln;&`K+`0h#m&n?f_?!E^_p7^+ z6%N8?Qg+VZVcmkMXuswsG)BbUZ$QrP+Wxmn!#F%>=d9qvWL0eN5(DK9-*ks8Q*as{J zn9t%En49r|Y%&s8%46x2sTX+Mq-mn)&u9B)UXE()Wm8YmmxCx6nLz_jesq>R80)+S zD|2iJG))G$K4)anEr{1i>u=@H+Oe=Kq|O0oFNsc&E~`_a9sn)zUL|1Xy!q0D3LZ>r z%4gw2y@`N+D6mgHr+&J%A)qw`fI*Umr_QSn)RYRO=5qaDptai0Y-~6h4XswMHnt#O zMHBS|V8#zOVF9iYaJA~q?zT_naC~Q6lG6AoI#WSpNS^A5jKbTP`z%j+btw|jIhfBv$)Y>D>3x zvDNBOAE5mJz>Ymdo>d-RbhQ_ zR*mXk0wNp@qQx&Voz}zPa2qsB-;08PG0cdGbw2!LU6l@`Cr;PIYhs#8C7LuTL)>i`N3;PZAKxwsFp8h4-0n6%vO zUdKs&KDh}m6?ieImlJLl;g)JIb9FP|deOd|HANnufm}F7%oR4BAhOwkOHiE8>w$!U z*ntowI$gwIdMF`!X0-jpIZ|23`I-9!VYz2gE~)=eYN^cQCw;=T<^kIqrVnQB1$>WP zh-~!cI2S2q9K13ZtZ&8f9m*O&!o?SnRr9mqp7uB=e0F%%a#{xjnU#?5{ z$e`{4uN{}-q3t`GdN@2;f`aP1L9Q`971-EgdJbtHgugL*&8u*UFJ4)@pegR2gCB~SG9@&rs%aCe7tqHbcDsfHs?GG#`g3^@V^4SXB{PI7a^ zFhuYNx6yywEUXAwwI-g}@)I``jA3Cf0g4Sbl?8|u^K-~if$&u5 zIwsWB+?xT?+Qq#WplmL=11~r@!wX%5(Mmoz2;=|_3?2xt%47ORCHl+mR0ZI|>?vpR z!5n!=H0Nf}GMt;)j+Ur=)aB)c3#1Ko>ZUF>Y4o|7&u5d@+~;OMwFm0C8FBI)2yQty zW2D8dn@9)*69!?_TtKqt+gAnb<5cA#b*PiD3GFFu3V{os>H;vxIhYA$zkxcZdcnXO zN_Zu1c-IL$S0n^bfhC$5U{eTeE#^RDZ>5x|Q~d$YCUGX=>FBkHFM}75m@(x*Vm`bi zhJs#;b4k1sp8V_3w;m~;b4j10ZEEw44e9$e5F!dq`2_1>_fymNu6G*Jm!E{byzg4m zH#u0PZZJQO-ptPT7_B*vS?5XKE(YPUkr1D3X0WLMC*35I4oUb3 zQbN(oaNjhyGQ=&JaWH7m>WsY_a6%ybF+>>hG|k7PTv`wv4k1Uk8GOu2>;QPn&h9x^ za&j*Fs8;=tPpt4^V}!@IvE0x*>Ri)S_=TEtB{xfo?Qj1MN*XhukqzGqEWgE~FA#+G zM~e%?LD~kSY3FMkj$%1TkUZ?Hakj#f&c!@eqPEPlXQ@EtEiyrwBP9&Gpj)aJ*Bxb! z3xwZCCgO}W#thi}0hzAsZtrAzcS^W5RVWy{4;9=mDRv`21B&x<*he*{kM?!*yx|QvByi zFme|K!kgG=&ffO9lHX9&wolmP?{Job1qW!#(SfX3$@)2A-?Y|CY}N>uVif8tZGh z_nHjAD4Ea{Hp~SG%Ru?7!w7u@MR!}vCB<&*64c_IMRrQPer~@J0#)N{_+Y#^a zbHjxVjC~Gk4a+{K6};)5Qqbw#{wu#(MMc|d?0iY-8<-k?7QmR&_p3q=NXJlkhiq#b zL~g{3oG+0%y)Hlc0_O4X#yTh=4ROfB%$4ut!19UfgUUQf(I zd+iMY%I{Gp?x5EjJ+aHbPGn21Jvny&&bgI2sELcGHfjKVHF|C(Ald3vAL%UgW)Oim z>~kyj`YKc<`;V00h_^H}6HBXHvq$Y&Smo$=OM9DbfM+9lixo2X8NZh|CXuli`U1CVVcVIyA9ld^P* zR?4HQc{VkJj){Z84vziM(%-*0OSdIo+5(-dYc}EufL}0*_0l{L=6tB$y9UJagh_fC zMZ6;8Nu-1#R+yv&#iI7N^K0;3uzuAV{4lo$KL`*+`AD@@o$uD*yWs`=t~vlOROFzh z4)x)+pN)jRkdB7fagvUMPdF7$v{Dqo}5mQV|o ze*h$wmeowq>&Ltbd;PeT>qoxF&O$b>AJ^II#{$T=rfLxDG>b@L(M)wP9dd6+;H(#s zmRjFFTb;}N*79)=vw#l^`Hb*<8W@a>1ujFdL9=GeQiX6{Zm>cCsGqI|sAD(kV<$5W zs1|<#>c@4Q*k^&2Fku!`g^9T6sGcB9Yh`~8VA;beUjRS8ROmE&1s+siJCH@TqY$4} z|6+8KHTaZPF5Blh{)KF=Yay%GZ>;~0bSz}+QP3JFi!ZhHuG>6xwWAa|WcbnH3oWUXpd2Mfh5Wy@? zHLtyk8p%KbK7G8ljQOpF=|d*#hBJs%97jbK&e1*Q4{RE7cdssYvPFF^h9HAldBaw*Qm$_&hC`!J0( zS5Fe4#dFvGAMUO^Fp47UClDYaI#EFaUQq*rs0*vEiJ(jffsQ5`MFa&DMG(aUHNznw z(M*7G9Ay=iT}AO+@5Pm68I=$Pf_Q8b9j zSJ%7h)vH$kWaC^h5@5{JQ4Fg$d1%IbKr9L%xKB{?UfR2b_tIjAF6X4#e;mWf3EGOLF0@t-H_7T`dRl*Ds=vHi5X?jsJFQc1_ zEcWRBf_(PqZbky5J0D|((UpfD-8Qj7YQ1ic@9AnetOx@)D`6hZb!R7z?;C)~W_^FO zYkWsMQpfl%zy}%M=z5R4Jr)9r?oV`Re)2l_{`hyZUs7B0bXzV%E=*_aL-fGB0x!+B z_-CyXCBFAAtY<$t3w=Kvqfog;ua(|HJu)GL`nfgF{ zJ$r||u{HcpQSx~ll})KUN)z(_k|9~cuWLQKvXg4VX>3Cs>)Bfom7;6`?^l4>Q|sAG zm1xL%b_GbfzV&RG^xoOYXXK6D$yzi~-Kv`Tjgr^LN(S9Y$AK@e_3VDgyYuVW*Um(p zuJvq`tsvjibhpm@7v5k!n}wkO-N^%{$(>uz_B%=q|7(1DtY?RDdR!RrcX?wE&IS}r zUeC5-V>v~dqpdTyNd@(;XHSy0?9_U8Mn~2BRsy{Mj-83|5_V!eJ63==5#bSeWB2t3 z)aDih*^(g{+dbB^dm-!2uV+`G%6O?=TF=g&?OxB8xj;5}J)4f{G*2kT2*`T&WKHi! za7_Yf>S1N27z~}_Ani#7Ed_6 z@j9B~0q3A3II|TTAe(~2v~@pLus2>u%l1!h&#EI5$EQl*)U>kTFs{ph+3DagFaG18k%a!7Fw5(M!oad6@3>7%#pjHKk>1YQ%UsvFDG{pnXCVUdatMe)Shq36&+a|Eh)hR)b*o+Ay#`GG7nH1fhYSUE(6 z-(-IIPc}V&n$bOfCgusnafo0`;6AZK1TVo^UEh>yzLmg_t&zsBG+)K_w3>wT*K4X@ zKaJGdAD=ZAA#L487CaTNqqEy4&)W9GIQzZPW>7Pn^= zg^wr-U!IO==UEtGnBF9IZF4lXa?lqHdH#j8kEIVsI|~sPo9{mBqvxNA$M7LO|410& zE=KMeU$8G41Vcg7ngeZnJpGf5+!|l73mZ%SBzUrXQ99DRgAm{OP*r&@fuPD~4#hLF zfT4b|!iUAlJoq03UonuSyH_x>XXzzI_kt~fN7?hhZ1^jcnJp%<*UV2K%N~Y^nQGY) zx;X3EMEJ`> zqm*x{cy2a>x~7i~;UL0|g)i@C4vUH|Mh<%v`?En76)D{i*V+CE%d%{2iy1;_hX-7- z)!hs$Jy1|uc1>%IA2$8Gj6y;`*mwo~gh@XgQL&qTT1)#jn?2Az&=1E~Y$}_~C+_B0 zluHoR?&Tz`((8qS?v)Y0%RwXlTVcYRMEclwA%90ZqB7jbaCx+B?_}Ee_~2h_r=W>*IQ~RlKy-bpZ8yZ*CQ+YxUJ~p7&1M0hR(8^3pALZb$o>qd zXz~gnl;A8Zf$*z|ui`aDGPBJmu4aZ(+5y26vA1Y$%}4n$nj^k|@;0z%1Q^@~io(~! zEua_XUp&c|2HM0xdGM#z`^nh2yc}uSPsZL;XmjZZ^8tb-#s&lhCN|CHC*FME*IsDidssV>%wN)l+es4@A6UZ-#9(HajSu$F+`-(M5A;Me!Uy&h z|3pRqcxThUFL((i*}RR=EFN&SuI`EU0OaBUnRgPjiwATP9`K+H%e}$_nvNIj(L7)Y zROy;>>R&E8J~a-hW`RY=Mws)6xyMN;ITo5z9J#cK`Ar@g*Bd;M)Ae6A3In+ho+?(? zX7ep(u&8+kKGKgEN)g~vA5h8>#F-@k)6CBs*! zSg0@f2!IrljovNP5L}3~Z_2;%A8Eux{vK))enBi=2kJxk3|lPXQb=F$2Yl9I5$WiW zC`YAn9hIvT52fhyOvI>Ea`7I2V#`BlF~|5>WI~f;pKNu|Ke|Fbth;hUyeqL&@EZQF zBLCh5tsyROnHiZRFf?&Yo&x#zAJSz!zEv{c-U}_N?5ZdFb!o&>GaFBvZ-3F#G1E`r zi#^k`kVxj+J<)@m=G!e%$icT)0aeVaP_cWO2TS`PU)rLhF24QE-|;5w;@f9K2ig)y z=G#@|+x->a=Ip{PTgR9@uy!p4i;Y6yYO!*Wag;j;3}ZL3E#*gNHB3eJbJ5q$4;?w!t!m{RvD( zS;izXe-^%EvFk}SIQ31@YMnO{J`7nR`WP<6hCVj7i8mYRQW!xoJd zeXKt-SbR7W8SL@ho4GX~{vXV7g^|9kiX&IUo&#mU!H@63HwQm{o1;Z6aAB6;Ar{ z-Gz$qvoaIMWz6$Xfo)GOVkg4`u$wy;yK`S~MPY7Lxy|XVLC)P}@W|H%?k(37lBN2+ z`A_6vJZT5Ms(jfKocX5AK)$bm5O(_>cEOqV7^dkh=l8b*&hjHL0u+Bq5{sc=tG{2iZXYe;WtNHx!k97eI_P_^Qd_0|&@MDA7756^p?t~wbFUarTf zn{IGu|M)l+GlMlw8OUIdQ&Z;F3AMYIF^EQUdtj%?d&&#Mr@So4ff^qR# zo_3225muN5GfR(?A$m-P=wulp>LYW^rdK-q+F`P-k4%EjDkJ@@2188*_>3}>uW*+6 z7_w{!<8uZZyqD$^`{@Q>wqJaFj%5aGe74|&JwBfxVU5piP$CocwF!9V7@xTqE^}Ru zV|*SY0N~HIjKuL7iDf5HNR7``_V~aYunAmZ%tVY5RE%r6&WDN-xCMDF^`h%ksuy1% zn^G^BjxrD+)r%E)MzcI@NmJ1Tz23t(TH||`ZbpnNdyC(4o_rMt;*E^>J`gr>jJz65 zDz=SuYwHVO+6bbx=ppCzN2~?n zwY1~Bf&nSK7oKQVoP-Nh3g(h09wwSdTDF;oUWsWQ9Mk5HgYgn(W*#bNI?gnQV2@am zKXFe$-o~$Yn(k9GG!V}i%yy_ywda4X_WZVL=U|M0MU|L~rwJ-Qr3L4mAbLh{5i@l*@%gt$5@K)Gw zc@J?0f}pi9%3p#O4zEse534!An$Pe-g}K<@eHeCDXh*X1!Da0XjIDVlTA_SQ{kkcq zNS8O8!}ldpzMzDb%+9K5M9Oj{w91vxn#>8Jip2XsQUiB5mbOE2nY}M~12QNziD|9p zmX3;+?UTH`ZGtLCOgCRRF|kdLvn?32xAtKRpsd7FaX7*1U*rV`e%%*uWDK{oP=3&+ zf&Kt$RStHwusV*YUm_E*m5UfEG-Ze{*~r)ciq87U27r z76N(rH+E$%P}SDGFoETYzY@Lu2CkJfh~p)(6Sk;%wUz_7TBNgyajk*bjPNbn z)GO!@`;~3jE@A{txp(E?_y9^1)@tHI&3%^shb3I!A&KpOq^qO-BLUZL z{~%UIu9##}Yad%DgO||$SMk!>{@YEozX0&v>$u~k6PwLJ>Fk7a9k=Wz_CtiYUdNT@ z${Ow-B6w*r{x=ESW=&Z4%bgSU)tgutjCSCkTR&JE2VL`&tcNWyGcI$2>4*`Fbp{yN z$H*IjGy`M%!OnyA$n`@x954lKGB-bhY!hh+=#O3qy!ztLo0weyNv0MwliPwLq~gzSKMuJhk^z-Qeyzb*_qOr-lK;#mMx;NyD2ovD z#}$8`hwXxQf}J}8&{v@$%3oi3KeHINSFuwRI}~alyVFk~Vff*#@mOL=!^4>WxZ=q#QnptPo zvaQzX4@W%uAKO`dt2hU2jzDGgF5`t1qsC$SY}RLW!`p{S;{iD{!NlZ zOkBJxgy;NpneEYVWBoOSHY{~9n~A|&$h6*n@Kvmq;Uw|^B|0C2e$qr)nem;%>9*`S zHr(SLI?beM!R#`;lq!RZ@SU8%S8<6{E=TdD=Bl_e=~~vzbo3+?#2TgIb*Xu-91v&a zPhkiYL7il(%Kr&fTXVm4<`5(}?;{K0xj&Ga+c+@@Gd?|NWON}EXT0VarO0UL$W_qp zc=m-CJ@C8~z6=ZukG+IFA2rT49Ua+J;oUuaf}!Ay2%UZ zE(`fvy8r|Zv1iB6CJ%ZS5@sA}K=^&M>cr&w?@o2~SEg3_djXbmGPN;M9{bDGXx)Oc zIN}C~xJ*Y+K(~pwjF(GBDn2zp+;2N!Lgi%pk6K=Qj9P8PeHe+~jJTJ^(y=R~Ml$KeqlR?#?1sy=tsa_%?T?}ZXwh5{dP~`4T*Lrm=X4jje>5qX68}o?NRLQ zP|XmVqYL)bE<nXGgz`DOkRr3D&^iyZ_}A^CBlbXMBVyeHgH5!1g-I8M z=BgV}Ag^bmCUfq$Gz(nGFp#kCz`2Nx8i;r>xR~NAw$0ajvpKmV8rFpkE0e9@`> zZ-pIm9BdyBn~*vdGYSKuPjFREG?p^i_{yZV1N94{V}YR=_m(`6x?1{3VE^4JOP#BS=j|uGSc!n<~Q57Tjr!C zwmE4Zsk{KX+GepQ?Q^ig<)Tmwueca>To>*K1g;Cx@r+FuhARAJsOB$KMwe{&5rDd4D>WT(5=xjd!XM1d;*3h52solI5LdTE!k!0If63o zrEgR5Q$5M>RgA+-##ZZlJuQ8M9xCbPGuzZGbObV0njI*g8jJ>tCdq$wKTX zTyCR<80~XZ!CE7$rx43h85GyVo{FWH_&xNJ+O0O8+JpWi0J#0*|A9etYu{7xra1gm z_Bf0|VI(L|itjAB*WfEu${`sE^|vKoXR0%rmfoOnX3dFVQGnbfG(jdcWAYmO|md_$|o)ibUDYxiKs zSmXQ_KowNuVdi0Q{$hVV#FMnyNe5Q{8JR5SkSy$ph-Qw4St~=Fe#J>}kI?EI3-c6d zYx3%FxV(3E|2fp_G{CMiKW2-p)uDrG-v@2$5NlTnvixXPOQVw`U>jfn*cDKv@o=e>6J$Xc~3Edlt$jzN^|F7R^)gXV#Iw zC5X(l z6SSg~xGs7v)f6Is(oLY zl1GPrr$+TIJ}oiOjy225=5{@TEjaidm|dH0VRq0ZkCuL`!1ffdJ0p*t1{&K9nSKx& zA|bin)TgO$5P->oaZJ1+6MzJ^JUUf3WFDVj5>CNbw>%o-x})i40*v3$^pGH(rvRG8 zEpsh^uwY0MKvnJ0A5q^+v;cZW+LbJT9)-fC1<>h2aPmoNKrU9dy>vg&I!=cj+ep{`TDd?cTf z8El%2gpzx(11`8^8=zdwfRAs6fo*YpZq`i*z(}-35Ul_5j+Qj_~kr%`8Q`@urUiObo zw%!=6^02r4%lZAJd#3ocm_TY`7H}sN_>5N1Xol{M~?$Bas`{A zS5&gTe!C4UCI?&Vd4SQ93-@y%QA{pb2tR$~6*U%q5Eo*fO|co+M9KgYhTgq!-9byJ zwRMRM|kGBcz!3 zz6aCrytEEOk?`%!_`qr?vq+XbN6_e@?op{&1W`)=L`;W`Y!!D1yI1%bdm0<@W*2G3 zqM8;pKbgy=#hQylj#i-(b#YDwzW~=3Aa~6Q14lj6YL?Yt!DD5fp)9^gFEskRJxs`H!Du15G4F;P1Xb`~6oB1w0D+xFCL8NR7wu;4X9 z+iSDmdCxlE8JV16{^eY3%7%xf(+LIM|K-&g;(nn5z?xsf!L4#oOzqmt{gNF-{7yWz zU-&w6IdfPWrMKgY%>*i#Eqq)N!!=)qX@%*vX-$T#Uv#|Yet0WdH@6yn!E<0hGA9F` z+YEiBRJ+c+Ge#s>Ui;`kn+~D{Rn8+aZJ%pQ!|Q0-kYrYQBwE1sbKFiki{o~k8n-3z9K^VB<%>IRo0!kT zL#^@)%^4@L-59oaOb*)^oPt_s{(~8;Q5%d5_NbkSL~(eMl3{U)pSECV(0ve{ zDbnXavdMJu8-kyU+*Z~Kx!?_;<_-I$&;-pKRNx-Qj?#>E<{8qAh4kgrL6Tp*mp-xFN;!k{MbuWn+#4A-;D?YiF;sEGYu z^9B2@_SPR@2CLtfAcNiS0c@7WmhK?qLh;$YRJzU6AfoSTyg3Np9e8svFx%`4$nFlG zDD`815%mLaY(KcQrraN$;JiJ6BC=$Z6MW z-v6S;9jd3fXkS?mE0^vmsMfYIkLMU@mu?J}5r#{52eg>Du;6nnch%O2;+KM7W6vaR zk5c2jSPpYw$MMQ0<^`yv@+UpUhqG^}c|2esf~4TqDa>GvaSB^u#RdHqxr({;rC5fj z1tKBd7vf8DQ5q@03Dw~^l7rcVeFWr_>#a>Y>}$iH z0yCtjwG3%}UIYG#cpY8eH2)b)$_V$vcplFI%b8qTJ0C(XCH4$`SmXIN zyYo$7W96IT&evAvrwdu9lW*cGFa*vvqjXnmC43X-bI}mi`SzzA2Yn9mZst(4wAnl# zIqX>~=5Qg9Tkf~MU^nRf!Z)3Mf(PTJ<8<(6;G(8MaF+AZ-nznJs1P2Y9A@pN^wtF& z1v$|Or_X7=;A|MK#QoDcM;7<_yFAEIpNwfyqt0{`i&iRv!I5|!P4TeP*M4H_v4Y1v zF`jku$=mlvtJ`Vu(x0uxFg*REHy4Q=WcM|$5`gD@Z)6UuzP+i8>aDNKXfSxKYoF>?7)vD;FhNN%USqQgNiuP z`FutuSO+iX4rY_{aqJ=gF`Uz*aHeCh`1J=KM8+y}KODx2dvhLeJ)GV`(`BB2EUK@+ zkHZtK@+95gD|GdXKX&wYDsx!wWR*Ga`*Qg;Ha5Ha8`eRMn&vz zKR)CAT|CIy-vc2-M_pQA87b?aH7 zbTqfGCWIp0+=l_c*0U~U4vP|wMh<&?4ne|_oT*$5BD#7b$ zN~h#eTE5QBFU~xj)!BS{J)E%>pKcBxdIz8Wm*L9yN->RMN`9*Rt8oIsk^c*r+Uusr zy;@*&qasu{o3EouM3-zlZGQblb9?+Zn@`}2J^r(pP3W<-LdM?Zw-3MWE5Lsp^mroJ zw>gvGEc_g#D|~J(N8TC8;qdd=YAcY#D#~dFa(ILy5_hvw4}!K5xD!}C$DDzKE^*@I z{bjN7s9MqIN%i-i%~@^rpUq(Z@r?H$-eERk?Yl|-Lc;H9(wVAkeL zg0uUtD|~JZ`)~83?19pG&5!0$>ap|WM@>p`D<{>mGIA-=7lc2(bh2{@hQWs@21~Dv z2RI$OJWuDq84kpEfOLvo0i(IB4|sZ(_kSqN=l5&)y-0s|czw^7Gdi`<4i&C5ZF2+@ zucKAxCgb`i9}(B#FVNT4Yy{3VHk>lTfqRW`mh%b6KOh;-JxOqe3Y-m4-Bo*-w$BW` zhS$;A9&q|;IFZS7%zxqZjam<|-?2jU`(CTx{C<+_`+596(fNHT&Y{H1cLsIF2J7#L zyHcn&OSFC)KkKwbG`pJ-kwCSZX*=G{b$A`kYVXni4`m#|q{>X6HRCd$Z(YQ8qcVFw z|AO;=@%j8%+KumU-JWAU=W6r!Z1W22={x49t3*IC>~$j3_B?mvIx(eda{GS%fD~a* za)tnT(e5PEb}*ht*vT>vAoJWnw#W>hX9Ho{#*|(Jvfcy8HEtj)1jtWzm?Ea_;oiV7 zMgDHd-8se$WWE4lP$M;GOh=)F3(g)(AhSJyeDOY+2?l-B2~I@G=!-!ggk634c9ZMd zrv>=d6W_EQ!yK0CU>Y6KDx&HQ0Iay4ies_~25`d_$HeS{a&B4IP6{JFrBztp7VvCB z;WBh9#jL?jkGuT)C`TnRRi0ngR1)9Nh3R@p{XXCT1E$6P15bS{7Q0$1_*%14s*sbz zu`tO3=jSTvPOq@kyibbC+9}f z9p?t$#&lHP_$4h>I5)W0dwK^6%W``Wo{g7|bAuhQLtN*%!GZ58?8?G3_MCJUOXLYv zx}D>X#OO_wKHBYA@+*YmdwL^x8p_!casm=q&g%Fp#aKE~g!w9-1ajbgmE}8jBNtrl zu_9B1RfTl)ubQx$;&n93<6?|kS8uoF8a-JBBefnFG|QthWiIq9pIhdH;*7fo`U z%y9-xTCuzF*|Hmk^J#uSP!NnQ7P(we`OUTPNK+Twj?((->u3Rq;k$Q8;>y4^pSfIz zC>}*F_m<5Jyum%nxRELg_WvdXp8>N2Jzn@5_r3fT1JC^ezkyZtXlxe193whe)7^_E=%MVwMe>GG z_i{IvHZ%W&f*$*mAM&+pe{z}BQ1AX^b7ZMwfASU#l-{4*is_E~zr3y5{~?~-qOs0R zjG~qguixp&j5sCuZ+XLD%zg!1V1F=_=tptn5z@YgHw*{huhMMi01TBk_5eJKn%$gl z9oyvLC-4feTJIoCgucf;zs1t*WDgj~Xnt2a2LY2N-v0Jd02XLR|!#B`buk9UbQ=Y zE!Ooi7ZU79+l{a?{_!tPy88(yreeRyOsKMc+N%%1>Ny4?)AX9q!W5pdJVv#UzqMd4 zZ5JInI9Vv)y;9>eu=ezAm?ie7@+M7^Y`@?$a&dd31PR!u&BK}VAm+SX=ky_`8<)2W zWSqGu1Zl8fApi_C$Dk-d?n{tj>NZ#XgtD-Urc^$op}mBUZX*A;Km!SLKX9Zv*ij+} zJF@6xIg$>Q2qRS@2RjOL-_&P1=!l6gIr`S?gRv*$r0=o$Y)bxHY|>Km1wH{DaNGob zwp8xK?=pE~ zgQF?tldghzhI{W;T&| z>RjzQ+S*IZr;*2vO!r8sdXee9Hx*{g=F_TR7%LDu-=Nx2fC>hiMM)K$yyFVS>I!<| z$y<$v!Y%hvuu}f!EuLZR^ddd`@_SS)URvWdnyB{S{!`sPQ0qE#5whW_{EKfx&VulZ z*<~0v^Kq$dU3?hKyQN^gWAOGHY7Fk>6JsECT&U}iVR&5XcvyBr&4Q#lj<@STtEep| z`y7teb>!d~yIc9IB=TjfZ*0EIwGNi$#IAPHDi6L~`#KxzVEV^lff^eOb=u}%mi9H{ zc&GOD0}O<*cAts8M#bxC?fTyFBB-1{Apo)33o_6BP6oU38=!*O4$Zgq+*U|nvuQr! z2UVft3_Ou;{!e8$&qVuTFMnc#@o6wkp*ou@@zDme1PK=y>{(r-q3lH{6XQ^peG4oK z_nnLCD%*$>4qeVHM=qIiD33PS`vk0gS?&F@ON`{#oMLRE;ttz*_>Q+;Qz-BcJY%g` zA2Ma47IOe;_wZRVME|C(J6VSO}p5s7+PfyjK>E!8t?3L)Y!<{ zpAlZRe}h&FwJZA+=wDi~&O885eU4hM^KQfvwa|Tzx|;+FQ0J%%sOQJeQGa`!bLktH zjS1z#PoJOGAn%KVteGqNg>`=V99Quvu#UyLq4;#i5~2)C1`AjDJNg$3SBLgZ=7jxT zRfHu2+8o`kw9dIL!xwu%Uqm8lKr>@sVLGIJ@$visubkugG8Q=I(_bf!=RK^K{9;++ zcy{Z(GvoPC7w35PpYA!HXT(7!jAxpw_+7{+x-=)GlItGnoZ{$o&9+Qeiat;W7Pzzva3m zeB^K02hqQ)bRG#n1RXogZ!Cq5jjt(%O($lX=2-NrD17Yvx4NJ@I3b(77pep;N-HtK z%^t^VBhn4 zjI@4?wtkFLKhzS=`aO+5@Mqr4Nr>p{x3Qx>kU$2Obhs*oHj+zG<2@bHi1aD^( zdode$OExjrb~;073tz=LZoS^Pn7E#NZX6>)%&?p|ZlZN-1zsrYRvFUK!;$1BY820C z$_2?HYR)1VQ3srqa>AL08WkL-?dYr5;B~ZYuVgqQ0mrfrx!YAG?V4}5i)p)E53pUc z+a<%xbi(6giuVn1pz=$!m~Sedwa{e(I{_xV>Sg^2jx`7!G68b;OJD%-iJL3o>k!fR zx*T6H8=W8oP~QZ=rSl^Fm_?T{m-B4=0xpN+@gZFGpK8~?)T;ky){FZ4)m8ubuKHg` zr(N}DvHni1Kg*mv3-zB;PyLlKtN%-^`X}i6SG`nM|G5#P`(Fyq?C5(})}6z;yP6Lz zhlqX&O1jeHWRx*R$fAaESPumzR*4l{()h&lb+_^z2=$5fZ<)XN_k*nO*W$amhOLG- zC+>G%qzELuPv~_`Iu?g_(aVQbEV0gfPWrv52A5kes=2_6#D!-mBJLxDlSsrV0HKNa zSgTGU*YG}Vbh;!q0?icJVZNkm&PB2KdL!I7-8iKdvpTl7Z{8U|s~d8H%Sw-Z9(b0L zH=nF+)rNx5OXXjt=5=1yJG9I`W$7aA~K=#$b=K>@9 zWK}nBVT8_2UzB&Q7JcCszIjFoKp*D<-8-}hpgX@7dS3%J2-r`+{+v`J+`-6oqkKcHvDDv*JupHgS=A{p z9~=M;xF6?WcKSpMteG5Ni7 zul5Hz!qYUvSlTxWtwVKvrJ2<&(8RuIVvJiaYJYM<6S*uEWtXIy1(-X6G`e4CT-zM~ z{bK^O*+t-+P>2;}x2m#}(bV=RUDW+@Ru%fz^$`=^G;(Iu9DVQ z%EYek{3eZ-!3*=#56oJ`CLeRG6zH4u})v`2&8QsId?bVNMFGbTtQMFjxbPz zEw3UjJUOH?2~Vyho(zXeg#%BT?if!->^z=4jR`g!_)$|aVmeN-rE>@~X!Z&mj$i5g zg*n(;I5F`9`*wDJ5MMK$4ZZ~DYhtq$;t+qV{#yRvBp9K?XHhiof+E zJ{e2%HGj#^s%{E&GD37qg8czH&Kt4 zK`Nc8>ZW@eaPAhK(+x#;n&+^z5xx+}`%!V{?+VL*nLMU%?uGt9mmQ;%Ee|mM;5!>= z#4lfzYQFITq!qvxb-x;X2mk$JCSeV1wn0Q9BitWr72!K@#6qa+^TBuUAAH9MoiBWc zSrp&FejU2%#HrAaWSz@HKP7MS7no<-wBS$!0QRq$cYP1<6aXm7=TFEUB=8nbSk!9nH#m^zB8?Sud`(vkkXR5Ku z_u=!C__oORr{TZg;M;qSd~ekFuzHmfADC)v_|SizH$KdQ>qKM1hglTU_33+1k>QQG zt!bbSwY{Q9AFeLC#QAXNSD{G1Whk9bBmtCYYh59Q!(*WkEREfPP&DLc;XYVjoSS7p zp%ad@v`<$)tDC1|*^$0TL>&$5eUy3-xgbY$UGhPEL#7XW^K#4%^zjN8Fe#sX^Twr; zxeXc;Yl%;B7K)b1dWQAUo`YvsKBc}rWqsq{;KX;P8XLY3f6g1(s1;!h);KYAX{Hz71rTCRz=~VjaT5!5lzM76s`m1|AuLzdw|3$VwLUnXTmE((L z7r?@vqXoo|t#GU-a!2|D-C%S*@tee67FsPWElKcIi!Ip9qHPx$fBAA%oS;fk;);s;0T zcgBxN&+G_48o7N0jE5!?Wggl373E52upF-Inc}+MHj0cCUi8}yXT8KI(xLuUEIpm5 zAGqxy`@kTTU^f$cNPn!b9CGCV6yE)IvjwuOi`&a+4=KMPt@W6r3%LsW_&@MX9)q>j zk63`UF(3Rdwi&C0v-Ado$GYzfByi~7T95r;u6tJ2W0O$kn@SvcNim1OWh)j|yoT9v z-A=75s$t-cKu>>%DXOWAghM;j5t*eG5Z2Hpa{r z@VDR+8-q{v?xq%dbexDATv9E&6ozl}b z{&JVuS0VcZc zJ(|=m!VudyANWuG_#XHhFwkjEwd82{j0~e<*|-7X`TeemP0-rdn}W3>4;v!v-PUD> zt&WRGqmoh;e`Peqb2ebR&oV-zI~kS8$iKft5w*3G9#~(U7#PNrz zJrI9B``3=~=WzH#>~{QliVMi!4SzTrjU9jJTo=b5ruIPmdE}8D*;TSZ8!0^aBcd_mYWf7YlP3o zE@&@ne;rz&^0&CWE`N*D)P86$v6>j6URl*mWIyz@`1U&VRarN}*`ilQ)Az}*dO)v6 zDxIn7Ch;|6(QeYW`-r~Xxn6xcHVE3JrPsRGjqlv&z$b^l#UTh=Wb>c~`CE+Hd5yS1 z{ubdr*tdH*rxM39VDQT+|DvZ^f-O9`&YRc>X;()4c2jL_Dabn(wF z3cX~6u?oyfHFCEGzJ_X#Z>1-6Tjue7DZWSGoDoZ{M5GVY`crHTe2J3aFrS#|&&Z(ZW;@%9*@SJ56La+=j1ek;AC+e+OY=XccObXjuYIbD`a+hs{G z9WG0$_SOQdp}u+F#MXSG+n)f}xy?{-`z?P2vFT;Pi$HHRAKkz;u=pJe(|!l*;djtc z{02S#X3QRnZC^6ity6wvcv2lUr3PJe}PZ-&7Y7yl~9gLCd7 zq4g~4eyR8!Tnc|DS{i0;;On;9?SN(*aXZ*g+zt>WRJk1>hvjwfHju6%6o?~+ahHP^ zKrxyx6ooF;{!Tq(6Hpx@En@^TIc7YyNoU8x@RjLs(t@eD2=TxViaqC|Hx)M47o;x> z4%3^6wS)MZTQSRlPcYt`4gy7Ixo)i3w^_} zf%LtPvp&nwd^@c(dS zJpmuaz3s#YrWzYQ+90Z&Sb`Wg4V16Vz|R{dU)fRu{}yp< zlzd$_eNU6G`^u8klCMlPHu@>Rn0nDqM4|^Z9{>M8hkTvllCMlPHhehoR&RWm^iJdA zr+*IldYKC!m}+eJ(BT$ue7JH|%2#+64DiF`Bg@xqI3-KJGvAb1vY6b~wDe3k zlOoRg8m7Yo5FF-OUUu!D#B-l&Yyard{TDJFJq&qxesn(=G@>czB%jk99iou4fn*7g z*HB6w9%VY3rGd=FGg{^Wqziy>KfZihYTz^nwDl9&r0q5|rlX99ByoWSTL0uGt(m6n zQ8=xJC9~hz$rQAwbh3(M!{0i7Zs`@#6c0#u2qct0-Z$^S;7VWcLDY%o3;}Gv4{R(O zmqGJf#yx`MHzOB9{J@O|@6zSnyo{QqaeIV@7np06Q;U(HtDL+;x!d5+pz03Z&^}aO8m$$c3~;e zl5gz;5jc;uC#>((R9N~5Q;m(^{CBE1zuAtcI*m!6FXr}4eg5f*_Oe7<88#3yab%}C zOkg8@Q#S$2iy|W|kF3wlV(?v9vT!3ppKU5jdvKfbO$fQM0jH0C6+^lCzb8S}>O@+S z;jPXiNU)S$nVDDqSqoqAT~rI37)@qHp)VpOwPwZZ-m3f;mZ|I=+f;UP*rCev;E@VJ zkYKHQi1Zt`*4gyV-l9(P1awrN*KBwfTq85(b6P-g^7(zVJ@yq6iof-@`en{R2%Xq4 z5G?tr9E>^_31!Y3RTATU;^q}Wr*}U5rIf#06PLf+RCL+x@76Sy4~+?MUH)#j-E5z4 zdXp~0u}vr#=N7x)AMJNKzdUV=(;mcBW8)VU<=*__jaM5Nzi9CJoF+vD+pQ5oa-z*J+yhk^;-_z;m0IE}~tc_qTW z*NYEEcryHUYMYMT*TBh+*d)k7y`JT{)*DpZ9Gqjd&ihlp4fjn`>Mh(u4wD1?kCr7W zxT&#=p<>~_O6U3ge}k*)^ZQD_J@uwNQorrL&WWE)H8%WwWSlpCezmZ1@vA?Fe!Gpw z8f||FrWzYQ+&RV@AJ!~rT=?+k&~LZ6{9~AEZ1_-7>WvSKuhW?HnLmeq+Xb;+cj`88XG$rc>%2(){`dCT7byXM{i4Wq zh_Lb_f~?Tvn^%QMlrK%n!lv!${n~J4X>u z0aW4!;=hhpx(1O5?9d>-3f|u06*rJs^zo&08{)n13Lg{W9W?g(S;q@xW1R6yc|PVa zW-Lx!&0j>F0#+n37 zD8G|2AG687$>PwT-!%q5d0xHPgK$oO@SP39>PJTLnv8&K?YxBw{ z8~cqpgjaTLznYXj)?lEB@=g1j3xMOX5(T$6;ZEd>o_K+S42w~RP0futp5SWNdV{IP zCO_JY^p+n({@u9b$C^KdJ)Kue#@8E6H8y-`Ho_YpiX}cy?oc! z;ygsIMiBpv=`^w!;X}RS9ZH}CE8d}XCya02j|NW4U4~dSG%ES#A%5a!M4TRo7dAh_ znSGohfQ?`aT#?mH5=IEu4d9-)8@JWsX4A397%;LRa(}3Gws|Gi>+Xa1fkWxW8}}bT zJVA8{4({VI(rZ?lN1x}kp~dlg7a~` z1BuTryBFe(er|qtKi}K;W$;wO4(whHx_`xO_nHgikm0a*sry$ZW-9|%HLe&5WYJc` zU$oUQJ}K>Bymj2dKgQt@0~L&o%HVT1zVhNwz^VHP5fw*Ap9eBCqd4>}8dL#dp{aRF_WW+JvZ*lo#_7+*S3#HFN~a!l!e?PzqN!ZE1u~Pe-=VlC89xu*7k)s6kvbXSV!wIU!7b zdmDJ5#cy%wGBvOal?~Nb371U4Dd}$Nlr(=w+o0xeA1ysJS~W2Fy!Dl*YyWFp`sn91 zsaP!GMmO_L*qsgD?G~$1GGI@}O?otr%xIG9MXAJ`;2#znGi>m}J`i6qOyHpxyY!)Hac-Gyp-86!dl3Dw#; zLAB@OeSCdL`kkCezY9S_qc#0@bx^z#Y-=pi1w=c?I{>~ zFL_&m)7?9HA1UwE`hDdsM^V%7lAMOnZy_!luLAMr$t4&?z5)@rABil1oPFm*k++%h zWL!{6szGN_L+#V4Ft-mD2#~dcsHI0y*gj~{BTES7=BL+0R6JPFA$&{W-{X>NPotdz zpk|?&S|DhSn+P5BYsI_8B|z$ez1^u_I^*D~`*)pjaBB{OeXu?|V&eU~>pbwCi(l$2 zec@k49?Pd%`Q8N4Kt>kieMZDFiH1A-w@I!w#ht$|WH{WOv@9M`zh$up*pI})EsDp% zE$VF{yd4O)vmNFZFzC*^);4(Prg zVd;7}ex>slm`7|r%1$T0hpuVsYtWz5Iqu8^+Cbdg4D+!QNgR_>igPz3eD00N9hVoy z;hx30+kL@Ncv~15Fuk~97B~{JCf*7aXp7t%QZV27o+mS11_F^!RHmFj8wK7Jsr?%M^10+;Qm9rPL&4H*p)*b)M!FfWY zsUlJ_PkR!5K3Wfb9;NA%Peq>_`gqYN@7VqglIb_o=Tn?OSpd4}^Sh~k9{NoGYeVU? zFIJ1S&x5#9;IZ5Q`n*rn@kIJ89aRr)>Xo9%x0}4^l2M=I{6pw-6_|wIyaqNxy@aba z-$sb2SWjdH^*KrHsctS(3q)d6sLk(B5i&d3B?~1!jP^g@6XfA%_0ZdDIunC0^Qq|V z+I%m1BhCJi^wt9t;YDvj_;ffFz&%wSn)e7P-U`>vNfEXv(x$wQ&HyagmU zXp1JvX04X6-U9Jh=+C&H6qcC+WtkDN;tNg$gt~|hc{R};Ap&tcsm4PfUWE6QhfPXb z;eXT8bAf3avBB6-KZ%88^Rl#3!JnnuO%KjySXj?{YwE zR>L;YUc>dC*$0G*723~Op~YE&=)JbRJoGcRf}kw-OpN%YvD@PU2hUA?BaG`~;Smt- ziz`!1oX~Fry-^(?xiqJg_cv(0b%46Bp|8FtrEgYs3%Mr+d;Q^3iJX5zhfbIVUqy%t zX!+s{=e{_vEL_?*BZzGQU&T?fZtt7URCNoOMZ1fxdTxA`*6^DfP`C)~FAi<8PJXEC zHW8t(FV^yXv(O|~EzL%gjZj})ArLb#ArimKKKB7t4)@>Yk_@{$j(uFkqb;8!UV#xl zKwsO?3T5T?!Ts>xKX&h;kh(M&IrO2A%bdEZ_npB;xT*8X1}dA<9=-pKM$}ZudI9&O zoI<~eG1=&a3>mtB!EX`cJuB2t2TEB+Fho!3TalJ+wq6T_dk7!QZ6^sX@v=d{+mrOG zuj=9VQO)o9)axH`R?@e7{qxKp%?iA0pyW*;ws)}obO*xQ;!lA)#j}A7R*(o)iX{ITKyJ$ z-&&vULHgNAX~Oqi`(c*7;tNf$d@6cf309j-uUlcG|0DIYdyn^~*H5qibI|KA*mQ@j zqCxsuapd2cUabu@(a>Pe6B~%Ph86}JP9|4h@Gc1V29azBA=y%pkC&1*SV-1SdTl=T zo!aarSwF)?DGUuynJ;EfW!U2Btn5@qQf4~Z76i_)#pCfhT6J!+8KYxYX|x5TOn@9` z17SMaS_9#xL)1SY8OXmHs62B3) zAT1JOtn1_GkoED=RR(0^c!l~l1RXV6!E!J+Bjm;dE>^S>-8qPv&>r3?QXNd9Ltj0IC1 z3}f`o7K!nWatD*_I*m;7M7BtnB-1vNJQS~^DP5EKTWS{J;?XW3TZBnoV*_E@=CtP%$a)VTW8FYj2oRqQgz4!1x+Po5Y5m=jyYp8!kof}S zY2;R8!gO?B4dgBYne74OtIke#y_rTFOSL3HP(C2-iC^&01|`DpxGhX+>BM z2V$2_`8M*%u2-BzCh+6p%Pe@%W60T^%zFBJ*2e>rKMq@Bef$a9XF|ylH(DP*O8&Ul zWb5NXd^B&ykbsk~gSPx9T5m4rUMTE~d@BCEKO|N%|Nf)bn;&)Z=HJ-}_wZ-n-#ywl zoPQTac4fW!>R-JW`2Wv(^BLNiEC#aQMvJaI)|-plCGdti*PAV!Fpphn!Ibsp+75g2 zdh;$1e=bYk+6zH}Nw0h=dc7FpE16yg{K4zZV=x0=_My@%{v7mr%YhB2*Iim~9;8-X zNjm~_D9IaQB5Lq@6PNkmcm*!=nTG#Ze>U|6sV?AGTHpnzb|sp`|5(4$uBb^UFEC$l zHeN@w_D@zv9y*+wgliXJeVYUt?+rChj8Ad-kJ?k=noj-BRsu68I=D#pH!X_)yK6ys zhci>3GAq*+YC-5!8)6SxAJ23_NOeNE#J#TK@if=KjSj zISF9xUoh3U_Al0Ck!>XHUvxw`oyM_$!69qN{>3>^N7eqt$%hFl>HUk{bpJb6>R4vu z{&%=1$-bKN9{HWS|9xY6`Q)^wuJ~|E!PMRNx1`0&p_oA*cEz_|o}CaM?zoQ5vsW&9 zY0UAYYFzO_m}+e2W0o93rLIS|(fvZ)$BzFxp4&dd`M&YQgZOjAx2|;I15=F+AO3rg zH$H5?xN+gbj^kS=+~=F<4S-#6-v5;fJ)yws{x6Xia{m|3^fQaP{|m>WHu&TBfAs|K z+P(LG4Hfkkt^)-b(R46l14ngQ;G!;%`@g{du@iup1?a`D-~WY>@%5uzdV)2j7ZO{)8pKojkglgbgr zOg3}h$4q&L;EulS%8{IEAuH7I1{bO4h z+S4T--_#f6jhj1mcftBdO+i^s3Ve!URahk`f0qk$su5s>jd8{|HNt(;iz3(NRB~F; zaNoQfvuk%EQ337{{6=2;=8a1=55h}1{HONW=??>MV=g|1;4!_w5&A6d^YTMKI8AkO z&{x4L-Kva=T3@g?CdKeASemy$xDi(;TYB>HKqEAK{!3e%77g2qI2gs9x93GB)q*qD znl~LR%G((wAWw(0)vEQO)rDb2o^O&ozb1L+kv@V8GjBF5Hft+PufGpoF6f>&Fnos*qfI?8_66z@#DYf?JEewT)K z>+!B>X}1@D@dwlG%JOdFitqBlMHzc5#y z&ygQKAEW=uCC2fJWdw#9k>T$R${U{XJ{bDTjXUvo(Vh`feQhz#APUYvaT_gS;+1kmiu=6GfZ``Lh zslRjm)IUh5zYMbh`6~2pgixIHzkeP255gzxoIZR*LufxO+v)2@zcq`W8zGDSdt|%m z|AzGE(fnE?_uVl^TO( zW3uErqP7sq?)6%;*sAu)>$SrmiF7>gS1VySq`XXz{o`*A`DBz&?%K>Z^-7Qcu7XCO z9rCk+P+`wJ9rpT%6L`>V;RvUpQ(UdmHcA^PBX_o^|iNGmG z0R@NY=)q_mT^_C=oY@B^!#O?)&S-(Nw+)ABefq-}{0{J}5c&&WOnqUryqlL&Q*GlX?|){wxpp}f{qS39tW{3lq1>%S z;ikY4R2(Rm0)^lRFGxkVs{(oC24D>Ga$ZVIN$3>2oUfuUu--2Fcbt6lRlMmgD=$&@ zkT`vJs{;G&&A95icORqDz-95CF^z`BVnQr9*st#A&MP0^x{YtjOjJ-98JA7`ZwfP)09Nm^5u-j?PXIy`5;hSerb|3dVFd#+ij~l2zeyR1xm8&)wVIwDNziL1A zM?dw)7Djj=^v4qDj~`U5{GIN@ZSK1NlqshO$wPa0L4QmVA^9RgcHk$?lUkyux#dTo zmACv@&~Inu$5p?R{0LPWp?6KjKic!-BMR->_k}Ul*zjR^OK*I5T2A*i9{bw%9mVHn zWJE2)>6K!H&x8p726tK1X1}olA{;NWjPNx)DY-)A9OZ|H{N{SXQ+~hDLd#1VPKm(j zXTxFImfzGPJ>~axNpMCBoS(tWRC}1V<@cv}?J2*zB*B?3a2~SZFs#c**cj znkV*a4$76DnJmA1c*^gGRCz4Npi?cf*ZW3fbOs1n6s@vnz|tLQKgEqRUE)s9dDNZG zcnY$^_NV^NI{%%CTUQ)Q!rq8gS*5LANykvsZTInYU3ESsLp~+LVMY2LmLfSuqt1T^ zU|G0sXW|Q`V|itrqgjW!k6UEq_Lk{+Wj(TK$;sFR#h^5=I6N`CEBCpXER6J}sVdDk zWdut`Cghl>>;t-tjNQh2>r*o@e4)>=o-;xRXPa07)Yj~cvgs`AjFv#1ai;|gH?h?f zEOs=?UOY3t1NoA!<0G#8@nvFCGIeZRfI{;u$s8VYj65$K&cpYu<$7>^^FvH+~x0b@D@i3(GY zO|P7a>rk_o!@sg&fDdkk{{@d`kGTZD;d>Dx0Qz23#XTQ>9gJDC{imS&sq;E*0XxCB zBKX~Qw{ImJCu?Ix_^0R|kl|Os7zuIcb6}COp?~s}1w9Jdjc4lOY{I4stV}apndUhm zb*{EDU5!jQA0r&$HV8MD|D-LiIwi`h%s)_GWjf^5K$tQhuUzMU$R8=LenHSv@&i6? ze!0AvW(j|zyt3@$2LjCQ5I^}8KRd9G({V=lZi4)|v-THH`Lm{vi!E%!g#8}!=Rv^T zvHYP+1S1;dW&wY%+ z@>QHdLcq{5`R*HQoq%>Krz7}_$!S^Oj@VCzor8$G7+t1i8)7$K-6Ko3W-C{$&HQwnpd0$aP)*0d13 z#9AT@-FQGMUw>^x`sMhsnukK8T{flxfu&^*ZWj4X7GjnqovhHtsp~jGPhu|ARP97P}YMX30-nR7@2L;-3 zC)MB;{{&L!xW(vS4Ebfp=ThJI`HEs!a;UhIM`HM5&GFA2w@&5uJz_z73((B2IGF$z z@CYO$CPU%p|1;3?je9WKq8|33^2q%|(yc0@XqI`VdtA@zO7rd&)-@Pk9{ZA|Bt7DW`Z`{hL+B-4suG$oENfF^TtQJkrBO7Y&h*zkhsI zj-rn5_}S+adOMD%yd!z{cY=hvuR`P-w(mK+DG^pXSoh}r*a>5p9M|iogXzr-o4{3 z?;5{-sJ?hzU+MF7e5!@P%Rg#i=ZatXN5|{BkQPp2iGQkcs5&gFbl##lwr$RbJRe}BVILvQo5wvVe{qMJ6O1!SSHVLJA#Osp% zr0@W2B5f@UZ86HX!HSiRWq@zWgH*uFw@I9_ZE3!W4Wf__$TGs$a(Br;k=`N4BCFcX zVLF;2jLH{05U-;{|C-FKh9D@r^7jkdkg^2QDil?anATC{Rb2aMl?S8)1QJ`A8aNF% z&RFeQKY{IH{0aq)X?vIHKD>^W9iQB;B^!0SlJihh}Q{3 ztmH;xyC1#^aK!Qd4U^(XXKiq&XW!yZryyv$IO)Jc2Yxz0B}@+Y&wNv6;Xl$%OV7lA zOwJmnE6{-FmOqFCqRhu+wr$^q&iS~)b3Q)#QngF_%lLv%pw4>zZ`7_f z{f*$Kq5W^Pmr4WtZ(acSc)1<=-vll|=0x8clDQRU$?}__2T-709J2NZiglB`;0N$? zxfBWHpi@kHdF@XTKbkS;i9gFLkQq)NnrYv0-X*)bjY0Sd{beTEa8}B4S^LWjc;9~i zyngR;g1LJODsVZ$wBg>Ks$v>S#4Tj;^|7rl?7scZ-4O5Ex!?IdQNi{=xAr?H;UzT6 z|6pFY-#Mu(m&r`&?arpYDVMS!w>!_kz+k)cXKr`yk0@HQ<+fS2JFmlTKuxRZD4fp1 z&ea2VOMipG*^a?02ImIvcTUX4h9|sh)rMzw%v;a60+ERvdd4zLZvBR}(*91PT0=KH zuMso@Ue*;SoBN#zapvCd^g--Fx?{WZSHs%r9JSds?Dt~WW4EKAdF>Y>BU|8i96ja! z5T1c3+ymmVe~DFQ;{Jwp-n^BL@586kXTO1f;?9;k9^sR}ZKZ1C+OEc9fAMo~JWD&y zg=c%JJ}dFqGv5=PwgK_j@7DXB65q@U$^KEjA=#eZxC!yId4?;oGq1pL6%EJS&(;_tc3CSwg*`J`Hc4+qRuuzTF zg7y;PMNfQ}^Nyf~RDv0r9X>R*vE%X2daL!@ z^^kA7Z~tdE$Tz3`_aYDbmc>7A()@!@#XtUI3jYWkYF|-sJHGiUPNT4c6l2OM#nOM< z7Lm%p;~-_d)Q?LSf`? zQd{Dc5H|lQ&@nURY2BAH3Sz~J|9pr>xcCoCX=@tz&un~FyGP0V$Ic0B+F&$D_Q|-u zApa4@rS^$d&~B#r4}V7w0#M;U>jx$CpOtH!{HHbiJB0seecMR7N0<1Fw;uQC;uKLL z+gh?Rfo-)zyJNp#P|cR>gl$d6;Jf@MZ2h;<@`vU1@P|ncPWQ&;!HRGah z`z{w=Kv=O0`UQ*~Q^*y>o9YMkD>d*^VYs4<2}Sc;KkfCVDF~TkaT@;ChA(J3RfCgj8>wpZYwH}8 z8S|alU>OptSzWvnaDMDG)%th_xv;ChDIrJA_^l6Qq2{3;HE()f`soBd3LfUF=C8rF z%!z0ll&JlL8=;@nSN4?sxc_;qcX;lA~*fERgUeh@|*8BeFGDe zuum=facvNv$f1rjWIyh5CEX;0w2bn07U&IENLT#IF8Mxy57i80I+cc8Wkuv~YqPCmG%GWi zlxMBhc4F#jeL+CBe~EchCiq1&n_pP>zM0RzO2(qRNzTUS7?ihKGwofWJ7}Gb!QaF5 zf!FHM2d3&NNeVXyB%$?>9^z z=)T@tAD9y-ShaiZ)(6V)xh{R*&gs_op%0t@9=F5zcIzeZ??%=y@$Hz_E@QsnJ9r(P z?cp}IXl0U0kb<#usRRv-ZJeyuqgbwC$r16{zef4MZh+e+*X z)}*U_yU?rRpLklTk-HWCi52`-INDdkjn}Qcg&KQpN*m2R$#ZtGAiifhaPgl%%N_BIHsXpn85YL7Y z&hpMthpR&03U5Lz2s96-kZ_s=n-PiDt;$>uCheOysS{&G41=Ns_Eie|ImDeEWWraG z0-TKR3gDD;87nNCq`aPwmQXA6@CE`dohj%cWs^Fkl>U#h>OV$gQYVVQ^Kh#-MW8&f zmM&k?)#UQMC_Eevq8kIPYoSw+n z?c1sGy_(Wgk8e|GLc1`&EnVZwRKv#?jK^nUGnyw0E{(G=B(6!^aHg=CaJE zaesml?qcMw3G5&14|FoZSEd-bHNGG(yfPvMh<5W;+<`;El>2uCCQ(#i@(2CaCUJqI zhrB41o$U+qSdS|9Fx?b0?Cg2fY1u6csjJr99M^Y^$mBHh-DiN@Ezy7x)5|Ah96aU- z*(QD9?O$rc*Qwq6O^28lgBis35emRMsW@U-=jz@x|Fw#EJONo>RcHP?Vs9@-8zSNn zV3i3vnOlW0K$oDj+42pizt)~)AO68(y=9*-Boo`ZMKLixdEW3g2o&rCPs(EA2>6MC zzUC1zWNd(tYrgZqDv!SE;AgNt6TL;ph@2gd^JYs}@&*n{i3Q_X!? zfXgM#PwU&)ERk$M@_3;3BoHpfI_qmv?Gn5~DxE1XKCuP+g7={Shq~fU{Lq%)L}1#<^l zgmzNc%=QvCVe!MCl!mpXc?B%a(scSWpgXOkvrm5j({^iil)uo?*bCs@v;(7ei2AkG z{0@d;Dfb{gpj>MyS812yFP8fN{nF)Hv)qd)7h58ob(w?G7I6O2_85W=6)uY6MaUcM=}A|DUr4Tq4+LqtY(9yl>xqAD2oG$PDZ#&q*(E8Zv&gDvQdE}U zW1{3JEMGj({Pb%KZTOh%qTJ7L{!F{PLNB5|hxLjtcrJ!ANuML!HJA~x`XvYu^I6PL z9QO`}E;j(JW05Dkq{f|UJ&N{?K;uQ%998}*~}nH-s-&=z|=#PfR9-sknI17G`bRu5QF(5=>N z0z@bdUy#==(qJt~@Y`BI^f;Fdl11MU8+O zbyN^mgR*WSC=(#iqZ5rQC@ZM(#%o2K0aPNv%n0K+%DTE9>%p$;eXa)*R}>Ti>U!aQ z0itL%QN#-nk$k`3tL~njnGPg~pJ@I_Pj^>U*YWQ6>eZlm7-l#*JGK}iH>dnMd^IL` z!CzRJrbeyr){igjG`0(s;`T2P#V!DFFG41)fO;0I+%ydz*XFhzz_A#EhxZx`)nDPc zu_j3bX}9T+OK(8m)R<=>m$pqmeh9=D;$1cM_``Pswn#nxV!dUadWh9tsQ!)I zG1eRMv<{tw9HiGX@)*`LOfvSbS#4g=MU9#Dyb$p7|Gb`4u>oyUu4fHEa%0!Ca3k0A ze}`<`dS2VYdQN!6Sc&I?F3_Cp+9Lt z^f(sAh!=r^1CMG@xtLGHJZdLk03Yp&*Od7#c#cyOrQk!3w1q0g3Znf|PY#CkOJqNw zfB3{`G>y|<^=G@{2g;5n+03zps_~X+s^g)lj;E%&vxQySuAfostMB6p0E!QlD7BnrGEEZ-q*(XN8|_Cv-d z?C54zH#3|bihn@IVr#Ti5;?@NA2GSPgO5*9K!JB+F|i8!@u(Z213B`)nd}@?4}gYH zl!rwMmSfw3)ETP43N*p$xA`HZ$DS*C08_Ux_bT*&`pyb^S%EoBAcbXK=Fl3*T#c0r{S7%bA%h463US1bC2Yz!4Q}x<3pZq{Mb4 zVs0+Dm$1}1Xnl*hRnJWq;xHx4BIT72HvfD~T?$1r$jis1Rcx%#O>b-YfLBt4{!e-6 zgRcsmo@vvJp}90;FOUfWKQs$XM0k3uOGK{yX<-O15ot~Sn(wfDAR=*M1?`t!Ix_R| zJUVh7{Ty3J0tYu7;Sn^k0Xj0+8w=DrIx-Tidg(_~;*6<`bHS0sE`7<+j|Z_RMq(|- zK#=AgQRqe~tLcZI;->EVNaN9P(vRVqe#E3w9p}TLAE)3^Tj>WG@43(T5D>gD;#Xn4 ziH^7UQIIL_dXTh{I;|z_)i?JyCNrNgDN09lPetHxvY=zRbb>x6^UzAb&$zy}ptFbq zQjzNIn645i&Uq^qGVm-KM*KSFjK4T%q#4c}GVYj$2;`;3CoqrbPYL>Aj60Zp0LB!k z`R~~DtgGFy);8Z|!~3!!{$j&Of-DX5L#A!vz%C~=Tp(<=2a)QE|Jtn~GFG~&ML&zJ ziM+^PZ0!NOpUVE=sGH^!$L+}eaEFH~Lw_tg9~?i=3eM-o%jZG@BQm9SH!i?)FMZ?M zO})bwnyjH%ef80Qgu*pu9l36wN8{tIH&Y#9Jc;J{=N~1W=i479LM%>VBi?sB6QMu6 z??!?=hMD|%2iGP}ltBbZLF~c0OG@y3a8UxvxRKxiM7Rs^4vx~gOCXk{G7iu>I6y<< ztfUw#-ben>4p39wzmOze9H6^cM`!r6>jym)&+_bM8}x(5Kp7oXSNlQl!(cY-2c3$Y z(>Q-=O^4XAOg9d>vx&*(w15Y@|rMxy41gz^(%4?6h@^?6gzVq>K`AJkqD5en~0)ozB(yUGY*j(EG|Cvzs9I!3n5 zY~VbOo*8&_`I647wl@~TPrf~GC7-)|iDs$|@THBAZ?6>?(frcOpSt4|s*u z(kk79j{@!LCj@KS8F3!E3Hb|jo{DWhd<)#hNE~E;)K9a8C4IcQ={+*UKFHekDa^!$ zD6ZwngR9EFHJAnzeI5+Gb|sUG!cj2jS#q&OKvjP!x-h8D1SC;}wB_gO?q+#)akLNX z-Q~yquJQN_Fkc)n2|o2&WkM9yvmhTd607Vn zm#UZ6pr}@h8`ZQg*EL)3yYK#kcjyw#-tdFrscrh!D-b0pP7f9HEG06%NOGHCdi*ll z*VTM@BAEa?lG-NdclMZ0g6%nb%t?X`T&pM!cA8Qcj9yfcI=U!~MClk%BpC??K;+cb zU$2D$5;yLVZwTpF6;2%;2&XEF^-Hjxl0M&J% zs3!0&5c`m}*dkY#Ui=L{f{)2HITX0~)%~0U_>!d{4yy~PONGtzk(eHkHn+q?@*1c! z-PL7?Hy|DrH`PObAiuqfB(3kABBdj|O~bc7FY*_W&tJ)s&w1B&`Fxw#Im%5gpT7yx z_zTMC)0?v7^FMCA(enA{u#su`e89gQ`8;R8*sqeF)nw5#-ffoj?3Ua8>Df|*j%+sc zjI(Fcvs!G3`g!PColVc=D)ej*q4inx?7@2-5|>ZU{v@HudGzd@e`eFO{P@1ITz(BP zY~#*j*#!9;D2w#5Psm*iRWU~%nVRKqorWj`@&I0G`uP&H8!~b2c-~wF2?fkU`&;3j z8}ArOlN19Sb#&5CQ%BnruiFiRAz7O@f5Xkw90bVTzx@g9S{?-0aQ+4(J{xL9+Zp;~ zVd$7X|NIS@NtfkbX`eB|tEz_^k8=&_c%9k_po)W5h0W^h^fsFB$4pfgdhlAJBu&ug?M0nl5vS=QaMeYr~jqCExq>8y5;-z^E`KLyV{_9^Cl zc?IVKyh{3^b3lYr*up(nZ{g_^0~ZC}_DQiH_Si{Ve(N!={suH-Y@%)%UBk z{W?qE&ypV={#q|OuViBn-Ku$74Q{;dSjY|%(A<2REm8~ytP3xT7I`I$tG$xN8=FY7 z5JNX;;QI1I5kH+cj%@j&AD}}cc(!~IN7f#Xd@-9;e7*UhjQBru5WICxSZ=}r+_YJ~ z*y|RLd@&sp@5mP=vPdy8d^OpM;mX z@{^x@p}u{V(=f9Rjfd0M$pxV=J6eYd?XcrN)*vBrM$X7=V`RtOJk)t%FPwnKA=Wzf z0ecSc*ofbv2NRp-41~3vO}gASrR9xnIMnpTAdy}EEjpD?sxg}%6?N@C$C(y%3oeN zBh@Ylu zw8_5Vw;%bbs~v>RmOq#;$RmGjct0{u0NW_}LkDEEUH-Toq~5h}9DIF7{>ZU!y#JXi zf6$a7ocdDyaO98N;O|TR>&PF&Ab-4V#E(Yd-p@B}@3CKi?@}tU^?R5tW~13K+?$X; zTJVyC7mACnALMo~<1I2%or9u`BflHi_HBNQ*As6_`5`1c-`!H^G(Edcd;g@hrbpCv zX+gPzvs8rN3O~FFD3;-eyxT1K;R#nd=#|Y6?|3~6y*3Yi$XT@c;UAW_ogbD!0?R%5 z&(+`m%(g)q@kf)aLU6no-N6o(BjYpZqu#kW^9;K?>jYk<2 zd|1b$%o0hg5%G%L8R)vkX7UqYKfHH)L9rVu z>Mqs$86~`P547QicU}a3C;Jr;s0ed|ZO=&^EAh=n;#16*?WX5$9!`ygREUroPe)IGA*W|XVhtov^sa>CDtZOuG7`6mgiF!KMct>b!;eH-x$iwM5O#{?1N-#RV@c2a4lT^mJyHQNhWZOvmg6J zgkZSq@ENc1iQni>vkgo@AQKW^q$k_H2 zAMw~4jfKd}|KL*CsM^N{L)%6JFcL{zd1io2*0Ay}kv=@{5suVOEyCl>kgcaUHhVfH zKl{9a-Jz~=ic5KI>=2Mt1}sDHFq6lW;I|!fK2XP;qf9m6!||(?vLhv&1%#Rs1h5!wyGZhqvS`@2 zc2-jfbJZ4YO_Q8d6+#wU);oJZl=H_F)$a`v}GP`J$g8hl63J|Ee$@7mKj)!i}w zj9w5T$0U{v;^2;_q7sJE1Hj}8t>Z+*X@o%&N_i}LX{7wwSXb*PRLCHh(6v_)l)@QE zAI^YW=P(?JO;`jtb-Bvj40=HGa@8nJ*@%7y)gjIqr9C^j9BEOyt7`z<=piv2m;(Hd z{Y~DppZ(C!I*1!a!UFikI~?* zmt2U8y)9!9_aQ7--RlueiTr?=3Ar!keZ5SEyxfRDa&FcZa~ZWv_E7<2iWONEc^ukv=GTjkOO~~fr4wfAXc}JfMsThjRdyCYN+Ep z4Hc*^u^Z$a8|;D4p+WG#yasPWx=R~U1!@4j7B+35xZV^3<|zP&$bJqEsKs$Te;zp~ z0S@zxLE$aIti)n!FSYf>!bWSLojdXHzn1gWc-AlYXIA`*b3W2Lwts zkg!T|TD#{PF%LQLrdX~HT{!~CE`&sa*Bl3RbQGxyoYQ%^&T+QU!=&G0DdYJBMq<2& zxO#J)*YG*xTi&HFSN#Y1XWhM1*M0|UR(}>qk8xthNajXjtkNBNYX=m^rdl}2s9D`H zR*S zu&vO=x8T?Q`1bi3zWDZs3x5OnmZWCX0)Ja&(?VV~zCAMD58n<)8^0ufn=r;7-{v&@ zCh$#taB7>*^RW4w6T{hx^S#ai8HGa>XYW)(pKvl_8SyK@#9HEUINvM7*+~2?a0g7p^b7r z0~JhPfw>F#gdaiSK@F`UC_xdLDb_klyO*Ghz;hi3iSvOd$LG((|WbH^;6NP2@X;cTG`@cePyKJn$S=j@)9CSarYe{6#Ia_|0+F6*HOA{2%KQ}$t3UuC&9wdGSdQeXu4(TE~T=eS342C_1RI{#R zG0tVry9z?PpZ>yZu^Y1({%-}p&$RKISB>9e&fOgGyB`+855MCN@cFMFzi&S7=f>~-K({vo{6_Lv z7r(DZXn;mEAN=lu8Oh@GE#UW_NZ;$WxWy8u#cce3fM!%jVVNdD_Mjn_;P-Z?{)X}U zR2#o})%bnQsLc_-N1j4F_BsFi9zOr|1+5?4WKXk}mq;_ZKrf zg%;y5EL}+O`{)tBVf>zN@8{=LP1Pw*BBz2$sX@cROo+F@}2_3Gbu zATBc3f0vcN;XuY{!D-Gb_d|X;Qt#Ot&6~?0zR=Q|eLm~4X!HNepXaw9^8RDFkooxj zE%xtv@O{JkA)~|E9vt}(m}Ts^(w6cuFb*!~d{$3GM*bA6sd;E9;+AH@&Y$o#S&t7(%M0$A%g*N2(%wSC<= z2jD`f-{y0DP6se!gb4oQQRj{qvz6!iaLySS2fI5*=nc2|Vz3j@_c$$zMuM3aJX5)N z0z8GMa~ijOn!nZkm?cDS|EZyFSpF0q^(Vx)C+*{bPWiK5Jv=~+XLE>|j+aB^!0e$1 zQTjkJ4%HXC2CTn}QPG+E;zm5G=cCM;7GMqGvXqYSx7tg0WS52lpN=#l$}+Q-!x3n2 z>Acm>C-!~;k4myXQ6gaTJy%-5hWF|z42fW~1dki)e86S|KBYRM6i97f#7t&fUfQ3L6;F@!Ho!HYGLtnMi9?Bb2p{GhK#G)1avt+2 z?Vmta+jQOt4=@H&#bFC)@{)<(^G2$$8k)RLl=$<>lx|yGP z@{hN;d*Fv+afDDZQ~{`7gXZ#LrN>PmZX^Frde|tl{I%Fl)~+Zm<1|xSn&mGTand0Z z@#1FU`RqZiFYgRUBSYiMAX9sZWr>c1hxk++-4~sU-Q+l48ENfgpGmlJ;LpHg;n2yF zOq8>lRY79u1U5H4u8boE?H?1@rG`fz{{}W3W&1A!zhHjNfG5A^cwwG%ya(+fAGVF} z?E$3GlflkH1PI%8kbKd6-ZxFrj7(t4X4Nb2#&3`hq#GZN2E))pzxCTt1QO7 zQhNgsiqva20|%3zG4$orch@yH84@=GV#3C~#AJ(~Moiq8;(^@6g7Z_>w~0joo3!66 zJFd8}${{4#amA5qvj~Z#vtI8;mTWn#wMp@q6hh!}eR5g=g5M~fv64^ROBu^^N$z0MB`Uhe7(C~q>F_(9+=q0E7$LUYE7iO^X6H|6r9WKc>7+P2sio@H}+gV zZusdhpNIYNqR(Hm@M6RIiyl|o8SDn~xqyCYePt^-i1{Tt%mK>011RGy_d7jE=w#&j z9U5@`_B*KsFv5fUm4ZoON7LJ}?W}Pq?a1-xNX<6O@wZUP$d}^}Ay-=O`JB|t#se3C zW{4bKsQMfLocX=**erp*8xq5cp`hu0HF}7!r_+f-j=bc}V#6x%}uu%&|UykiRHa z-G|q%{Va~-<%A_&rz@3^Z54fiqDDM~*+&3(o#ti5e3)ZGI~65pLVMce=%d_R!Xv9Y zsM;flFS@F2MZ?ivyP&uT=DUEMl&UG5Gsn{WzHDT~7IT3De4QtFNzZ-|_9Ktkx7-b| z|N0B@edZ15B{GW21zfYMH784gbNDCDlLjwqGygmR5b1;etvlbE6UT`!$!D8O4|34{ zaha06lb$J=!o6xum-+-`-z%IiI`nIUAOjH-=9A6np=H z!vE)LniJri=Ks~0VS=wfC5aUvyV{Q)TywVYf1HauOpe9f&SENP2meP%&9>t|2wXn? zqeti`dep)`c*K>Xmm)W>-OKKJZx8`d2iW%#c!^`3@hiYzq!IrGeX`?Wv26(XRiCiw zGdF#sUa8RM8*nC*uE$@j#}m=*dZny)CBA3Dmw;)?lGCF|(ykqPG-s;0$S?qHcUe}f zEZg}t$?F@$UoW{M%J#4D;O_!(^vw@{*B;`Jzk`tM;J1yx3(oi%@b?x_?4N|c6L#A; z{4IQJxIxT!+hvfVES3BE2d~_X9O52AABlmO0KFlwH zwz>*P|4qcxTVo%7$ED}l`o|{+`_qM9muAt08&SP2`bTT+!xhr4L6rLa&uyZ;Xf;@s ztM8HCz5*@-`P5eLT(PzLq3&Z5SmSqbiMh?>FZd6q@MZWK7-*4t5Tg^uKbqqL_yO=iQ-JBQ8oNsJ{C$>%cI6wf7D#m!o zqj^VO+k|^*>rAK0ySjv*T>TAV?yLs9SAXs!xVnzK*0cZA&36W;YPP>-qt8Rz1oq`?6OW=UC%8;x z%ap+U2b$Ujcn6s0Yf9i#P*f0cB7U$(oJUaR*gM?C*L0QM?xIWEMJrwT?k`L zK&=2eN(M?hqZQLn(O>QyLah!ErouCxHMSyYWTCnjZg_f~b)q$?Z|#O!Ve!LbkxI-Y zR%EZeD3EjxitRwf4iFmmWKKYeuRgKa$|I@u$s;u@Adj5okw^F-ex1!9E%WxUkyu_V3J`wB04{}N2M=1X-j!!&K@!b5;x@X8@8P;*llLR%w;WawSC z95Ql$LPx%R;omVnckK)RBpUn-e(EsV-JqYk0EM#TkRhPbK61#bTq-S|Q0|D1M zEke;P?4l^dqPQ4w`5ud2?-nga(L$$aL7fyWz;_c)s}uO+888`stvL(=oP0LC$7*z_ zBwW54wIQdELYXQC!JQ=SzRgmzzYK(?02FmyRz@wUiohcc~_z`mt zWWN-DLOFg=e(2pS>5I+O;E>s4K0?_B8q)_?lObM@ZqGF%KACQ&k5g19Xq@pd1OYXT83-qItMfOOegf>NsOw%>WSN_&mc!_!IL0l1y)zNM}pRZCn<_qTgyFUx`HS9&-wvv zPkn~3o@61hI8S|sRi9)d*8B3FO+U$x$WAVGWe@M^0XSc?{_}uYKQYiDoLn<*&q(@6 zoeejVd|AB)o&am<#mM{oGUh2@mG;IYVnWsAQvAS^Nb+q9daWnmVrs>)%w{<37&Fz$ zm~K|bpO5Y@qpO&~l+&*-8I*jkep$O7FDBnLrZ0GXiJ3CXO15hZVcP0LSh7?nGc_Ct zP>rR1FR>t6LbOevgUK9K7VSF%X@5_s7+G;b#feyuIy8vcHjC<)0GUH}{@?17#saLF z37i^{DO*r?81UxnaB?k57QOQYi9k8wZC)tAyT*d8!>N8jiA^LNwwX+`b|iIvSygg* zxX1Ev{kn-`2M#Jfe}nNv!?CCWf9Xpgmws)cdi~sX>hbO*ZT*5~-;)rRi2o9oxKjOi zKA(3E_MQd7$VhZS?MUCV%`w~Ke`wq`k>uHBjRUG7g+R8NemJN9FB_Ig!xTH}2b8tL zWMhV{IRdmA-p%Am5|_x%Sf0GNKq`n@Y9?0Sde&2(^4c)m!#G(>`1@7B!w?u_Gw{H> z%?%#z*vB6pzBq65f`m4%b8>0}5^Cq366Q;`!tU+cA> z{BBRmRa7Uk?I**|;&WG>Xifb57)UM~=2d2@5~4zeSKTeVr)B#|6|`O^$u8y$Lg!De zaO?yxh@IeY*a;eAUqNEVt7sn_tQOGn8bv!$oul>pdJE#@F=axQjOpL2N;veJdXp|C zv)h4E!7n*SFHriz*Gnm?;CP0r)M-JSBl4{gmyGs^*{|&VydAc$^$*7FOM&e$uy8sa zWU^d+ln4)X%RNV=JHLg|@ycY>h-ioXLG1)~VMm^0_(=CYTHOwb0u9JhrlT&7UCRvb zs9ZD%m5oGu5r+l_cn46cyJ&QQ5y!?vt?(dG7i7PS{Pr=~-(@8I%Mp}9<2bE^eMucX z9{JtJBS0Vd-Sh=KqsvE`lgMbLk+*FwI;F>Q6Bc!Dy+G7?m- zoebqCW4dCyU>XDbMP;%aZ!`LyPF3z{Zw(k1x+F7%{Zl9`O>-eGMGJKom0;d)5z)4y zhHJ~GvaFdcaLeVj*lC>vv2b` z^q6;-9%qgDIdmWkKa9lpfD7Afu4GOe{s+s;APIVmF71wJ<~)7Hc`$d_=`>4 zh?nYzuIQ-5wR;A(GMP02$S8yf2w{XnaeNGwyG&Ww80$aluO5SI+%si|p$0_oE8r=~ zM8k`oVe5NFzWnvk9v=CN8m1_HBhauTe_c&#Z|i*reW~Rym*2Ya_0V&(`K`IJ`&Tx> zel^pxf29O!GP*z9(F-e1dM>knB_;>NIsBG)SR&U|u?F+;)A;ST;rg``$8H3_&DyVa zOBXIP`EB-owWTNXd7Jp{f}hB5Ti&n6$rBp-rK+94^WipPzuL9IYH$eembGQ11sK~1n!XE)OT8le z2&Z+67(`BBWO<X(+EQgWQEpZ#V_S!a3_7fMjYr)t2G%myG!TgoMg|w^p5x;$fX( zp_)0Y(>d5`k>iLJfjWX&$Om;Y38Q|VsFcNa< zix5M!R_F0iZs=pE#Q~hp% zlUQ5X>M&~s616Wjrc-HhFW}T(DxLh8-NZ|^Z#K z-1O}?JNxU~yN=wv^zD}rShHSx4&x0Y>4^baeS0q$c1$?=t(p7*RvtL52NxH>l$Pb` zKq}rya&^--8Tr_wKh3lCu+`CizIqtmLl2{Gy6kDnCsf3qf{U)He@4df>SHJ`?$~e= zia~fDyw4yv1^glUSVd!DFc1b(L9QARh?M_e#22DKW$!PjG?q0LX?ojL-ps)pGksq% zNVl1IA1cciqN&FgInG!%TeKa<%OA!3p{5qo^*i%be3a1@dqC3DmF~@|6m%-_hZ-T3 zYHLs=6MRuOa~c}aOzhrWgv@ph#^Jd+9Za0`6I7DiMHe#?Jm(g#6NkyeS*$Dl8;dU( ziPd<^+W>Dl3tQJoC(#NHJkouHKFFb_<%QHGo075d2hXJa2(6o`>)v6<(rLLs(VJjB z4^o*~UmQR#)wy+As`Ce`llXw7!4use6s-~`D^}t(r_)Ff?IXyIcr(VQ=M2YCVuIZk z*zK+C#nT$)pYU0bNn4|ws|_hQ1AUQ2724JBNGCl`pzX8`#=GZI^ncDC{g9Y}Y0m8B z&A_5VWd`m>fk-+bm-1(gcsF+1n7&Q0>386lIF}NRtH(s+aC;Yr);~A41nP?a?8r${ zGCTjEet;c-S+gU@OBwO2oe#yIkNrJ+ej2tyr!tddA;?P05A`$W<4sp%^6`KI2M*Oz zPrW+^ZJzSP&2DkfBA^u{S{|UP*L7whdViK4O%Ft)C*g?>uRHl{#@J zcD@e+6h1>lL!sIYu*+(CnW=upZ^am(l)-Iyk^a>#wv)+SChd<$Sty~ny9;w-N0D%46k%`;qfwLq`Q#` z=S1iUm(#E%U{Borob>eY3~@~MTiwqyG|CSmC9uQRGZ5TR zpnEGoYeleRZg2mxgJ<$H9iAtH&~X>i=hx9^HJP)VFCXaCKg(Oco2R~ZQ$7nokovs!^qc`jSVx3gPSh=pR?m1l`KOiW z0h;7Bn08ez8;XDl}mi+6S?`zmZy-EsaNB(u=b}|_9B5NQ$3Gr`=Z^fsIn)UY-jYbBIY19ANq~2> zDc&GuLx^m{8c-w6wJy}p8L#&J1LHjVz|rt&tcx`kRa|)uah~FSI2jMaX^HccP#m1U zN`2Qpe--WK9XeVVR9|k-Sz-*MWE`u8&{B=VvL6HOW!>BTYzkN5)8HGFUP>T9Y-1ie zbWafb$?pO_Ts|@QcT|gTxM(Cj_}lQL)w)PCir6Qb@0%Z&BWIdBaXAASU^1`_*{&K9 zY{_s?b2cI@4?{v8MuXxR(07H}ANOr+5%tjX`o*256e658MKDK4A;_*uA1i%Eej((B z;VHjG9At4rfJ+7q17V`8P`N$6*g4qawbvIT;HyYAZOu7EGABe8nSBSEW46Qp(73H} z#&el5y)ZasV6`3o`v8a%!2wa(SdYB~9K@^-aNwO-P=K32Hf%o9CX|bWkgasB4gFD$ z7|p9%j89`Y6N1Bu++()2&0LlCcXXKXV>kfKNPKI99q$NsFo|h8Ur|3H*vl9j#n@EM zHfRr%(Mx+Iiq!6)7Zwku;@bgu+s3&T5HQonev7y?g232=xogCVpw+Pes~$oJz2JBo?(M~%1v!O_ zZOURlBa1-AlDN-1d$EUOv9F`>L;K{F_(3{AzeO$`PMh6Z z?V|n>pvVH0P#V4#wO`GLE7RK62BRPFo`W>G@V6qPsr4;Zn9Kc<{icj>;&{U_Z0@ag z3}DbKpni5)saN0Psn+V;_7b!Ck%$MNOFsK4$LI3zQ5);u*aYX>kMj68)@uL8cwhfU zrR>lB1Avww!#jYC%YYkE)%I`n%qOMCc|#nBkdzK#tX^I;K?T|G-s@+-LomzmC*_<2 zKerthfqXan9Qfab`P}tuY=z3}=etIHdvKe!^IpP*mIwXMfybm3bJ74y%)__isq|}9 z+IjdOUShX_5r05{YhYO$#gVp}wgy8!Ph8av5$kdlJvWh|}F;U(&nu!1&j3@O&uopoWHgQ=R4(TSmik@6*o z)8*VJUvJt@$48{PhRZ)N;(hQGGGZN!V(9#L(v6R?xG-xB5!!%ju{QZ&KN+ZGI5ik& zD-K4=Dj+&m3$#=!bq=SFgLy|6MqgpvIWB;LqwRtRVOgbMB8&uW*#(CLtaAmdAkPc) zO>zElxO#W13y8MZFW?ur3rvdRW#5W9CEVloVi%4PlO0Zj{hH;^8S%G-fSg8$#koO5 z%QRLYY!s~(i9HA7UWnr$iAd@C@thQ~2Wo>;I5{u&0fIQ~l|zgB;X717iups;7Rtg+ z9E~!ns1w%>@jkJ8vZ@Sns_=(8+^zxww_JUQg~z4^ajJkIo`!uq+Nm;JU3MHf1X?o^ z_=TSnYvjX4N23)Zag2ZhAeFbGN1+7WEBi@dskb|RB0=V8_SXgobX-Hkr{Vf}}$?AwP$wS=G5c{^YnDync^o8Oz2xd<@DH%7iKEQqvZon#t-8QzZqbxtf^JlG;QCFhp-%DD zD_~a45f)Bl`qE4o z9zsvy_5Vav<2c#1@UKXEoNJ#qlSsb!4eaw}w9hYlE5|qO;Hdj9 zIu3@{;Q(7rJm)~LsDfejqX;N~4i}+}(*A8N3LUsWKBD>1(m}i?y$aXYb{`tMAmeUT1JG$lUKajlrVx-uW#aY4-ZVtmh2UsA*f|fKYW3De z{9Y^w%45z4%AC`>hz^wUinuf^MZmfTAOw3gCQjYCG2e=HH|y68#TGiY4Y~a2iZ*w+ z63JP*S6~Z=5r3JC0sRlBV#Vod2m$QZa)fGyQ^Vj3s4UTX6dzNWDiKWznD@4=NtLL7 zuKNMiJet(j)TG9SWL<2r`f(r|7QIwfV+L1ae=azGaW(#q*Rlk?o7E{0Q7oo7q$W0K z$|coJ{}nl=wv_AJd5pcjIENQ9ychZwqcJpE%qyYqBJ>L#tsT#sZP2RjOMEuwEt5v6 zE85|n7Mi-@ww|gNELV(2u)qy?qlWEGX}-3gs{BjH@r#5;)Zqo>`2JPpKO$a0c%S4? z0Uaiuv>0zEf{NM;I6<+p05)o1&YDWlzmBB$Bwco3$HZU?7l{TQS7mP`}ad) zl+8BOLYp%xSF0#Ib3kh&euT)`uyWw{nUuTuaDTzhT5YT?q4{I_QQTbg`;4xL&2Vp- zDbW;rybQBj@+;X8w;pX#wy|y?pPvP|armg$PJ7)qr0rRDTG_Y%;UQdmS6{pr)i~YU3^zt0;|y z5cP`GSC|W#3VPbuPO(sH%B-;v+u<*?!&fwN;%Ew8{!q4ysVn7Y!<>ImqK{$bwy@{j zrlWk12<3(9{cjN%_LS2t%14bII$3LkgTns97qW!*i=i^Fw(Jc$$~k-IV@+1!ip5*i zV}(fJ`=bf?fAnt1}OrBMm)=&%j8%Kv79!3N;BuDDqC>xl}j(h zN#UiJj_8gyBB@i+)WA@r$71)qj%ZLH*kNLyX4CGB%Z5C1BdV_bf{El&7ep z^bvqF5{GDh;?+^WPcG3=LtN?prIu8ArEv2Ks4OI>nNt80ygvz0mCp|pIL1%l2b(6p zYy1m`A!O&@{~wa~co+it$%Yt$1!QVFL%3RC1=Hl8UkTIaI$cbAnt4^{e66(s*q??0 z0N06E!W+8`-GmJKQQ>&-SkQB%9c)N-0{T;|Zh&ZnWkCb55n&lkFA~bnI4|o>WIK6S{sU>H7W-J@dhTGZ+6idcWZ&*#F?&Z}@@6fB*A( zZo+1s%zi`Ofwj8+fjfV)%(sd5KUfZ$=j?wd%|dgDU0iSa5+nZeo!7(3gJ>b=^%N5F zo&67B?Q&obj}f3%tM>wtbeeX_z>_|==QIjjI#tu4;H%gL0bHQ_ow)EJ$+~t85ZCVK z$6#HMtB`|Tz?*1aD3*fiUWg;8O1-Z*HVtBi4j*_{)|(0~Y6o~HqEu}$*!?)LNK`Qr z$Sn-aKuh^ZEu;sz3QE+w*vrR_3i1W+R@m7(m^{{&GxUB1+O_QSdF-*Q$Nn(XiF$_| zSgdXYg``*nacv}II>fv|N@5Y$Cc&gvMDlBV6jw=FkeOe~r_TU`9sC8&DAIO_W;8Nx zv}bZox|9V=sO1)`Q{QD%qQT>t z^&^U@hn5P3g2TWa-!L<|G()4-9wV0D)b3_7Hp3%|R?gp85ycyVv;)?lDqRZ+<&v`K zU`i;vLS9{;d=i`Q5l@&7&P<>F&Iq01qvE6!p5uO#${B>dt_V0pRF{z$NP!p-%Ljm1 zH*3eAHikk;iVfKjy|AhWd|t@fQArqn}Ft4xF&y^jo$Q{=T4~ zU4eOMGoq}G$zw3FZnPKs{F>0(${CTA83<3ZSk{O$|4-PMIa>r-GkN+9vwlVYNV4kg z*{eI4r_P^2mj|-)m_1&AW`aB{mD7yL)M3&WLn2veCWk!?L}*q^!Am2lVbdb1s=Fbc zJ)C9O_AzSbVpe*95lOyc)-PUR_Ly^cy6{bW7Bu(M|u46bZXecTn(;@bsnk7 z$sY+dIW}9~fj%2apHYSkKjKLep_WmQ$ZO>xDByIxXQ`_{V>fHz5C2r{g%t;Vi0)rk zTUHR=fi<( zMub{xxcu{2QPVZTk2HT>8jaK4JJq|tP?3Wy76Od+a>80vXYc{=3b?Kjil6KTxY`q) zWtAPouL2ItDsnj7G4NZ%x-F%)0qnEXWIxt~y;&|k+Jyh9lx_5oJ?7xX9NaVvS09PR zUl_QB?Bb|N`vkc&7)IQwhy8HPJhh1R?sx0)7wcW&)T^)UwS{px?RtpKSJOZJp*e-X zN!dBxQH>Muk{pxFjOO@9=Ce7mlk*pwE5%z4r}edcwitT|+d5m?>f^N46KzR4G+Q31 zU)|A|ybSf4gL4bkVo|mI3m_t(q(*>;0cQHpasiTFpxy&Jv*ro5V7yqLkQzs&PUqa~ zg}r~)zA~yhl-BP%W!|qvAdl54=l$f&`zv8Kvp$p7GxeXyydQZy-s`W+d$*sDg3_a( zz1)5thYofu|ZQJol0iJd3&EQ{aie2u}m> z)`6#BN8|FhZ1~(s+Jl#U5w?+ZQg36Vm}+XC+)L}M3ETWVTEexMS7m%GYlPT@Pu1-L zSF96PfD^rsWC7NSt-OFMFsX(uIEi;s)i*>VrQyi_(zZOJz%u*vh84s({ z_XjyZkd+yH88HS4Re7%^s`4}@CY!2|1h!07^p*$^mgsRTgni3!qkBouz<_l&=g@_} zy4qec*Ml%0Mq(X0h4KO3VZOCXj&U5AbUhw&ZSSU>39Nyw0I{o)X|awssnIwyd0hd* zCXD!r?CoJVGx-_bH|&A;-`r`$hv0ETs5(EC;>7m=?*d=WnyGWZWq?NrzO?aunfRVN zNP_1x;D7UeH6&j>+Wji;8}_rmdI-N-b5#CU)w}qFJ-+(d(tvUKJ}62!eHtH6;f!B_ zt1Z<;!6t#L4}hL^wS8pn9>A87*kH~Zf4TF<_q(GT4bfYzc_J$E;;c zFJz6Yup%-zo)?=3p)ZH8A`;NE*asfoc^e(J+x_5cv`Z(V^WYq$S+tNoCl^kiTPW*W%JnTo z>uLbp_!y-1GS|k%H;3NOc@bP|H84wcdB;oRGrE{-FNPw!iS~nR0(&upIM-fm=MT^E zKYHxNSAheN{O}45NZkf@M#}>PzIEzAAOwh%j&Fq70aBmd`EfFcx@%aPw=rrPYwJW- zuJO1()wVs?ueNmqWu)H+3fnR&BUIQTfCcSH%(fd}yBp)%pzkjO!PaJM>x&T!& z@ax!N?elgZAvb5-GvqnzJ5M>FzQCeq7+S`8_z2eAW@|@ebF3q5VHstO_@@{SVJ3mI zG%@{oq{BJ^&xH;OF#;XDvd)&5?*$rSay$aF#8o*0^CfsKaaFdwJk+UoimvAon5CX0 zFdvht2f2TtT8qrT(!)b^JsmkDlCjitBxCMOwZ8}Ug7bh-Pspt;?}Dd74yN=1Ik*gR zFa=whcLM50YGVLXn1vcuWFKY%!ei?ctW%~?&|7F{>`~K&4$Ufbo43%vj&@oq&MNeR zx6pY@O@X)*O zZFUaKrG1503OOZq0L@^OP!&XczruuWwKfHE=jfXU(x_B?jiQu8FoLETS=HQ{| z$^8JXg1^w~Sg%CHF407!o}-EM&D4W@g806j?RtCS1(w@&=4B}yx4xwT0vg9U)th3c zXen{#Ys1HCzzw;fo+`(Cf?vKWhnfs)E{L?8cTXa{lXbt46VP>sKK}y`s?rZ>ZKF9$ z+xVabLCs8Jw@U<2nnR#@48s75)Y_QgL!WK610*_nluX`OK$;(UJ`vBgoQlzA6pz>? z5SXa0N>^(6eIEQQccX%yZ@@(rv#B#;HJp~XKxeio<|Aa5*>2=XwT-j}(@#u62$oJFdivMTJ@9w9jHB}4?!To9hWGQ)dro5_!{S5I$fG^CIbsq+5rgdNOb&1 zMN)-9>puV%)d7P*tp0e!>Sv^{%zkm$SD8a6wOf|S2Rp@qf6@KK9p;G=Ixe4c*>soj zMP~BHFvMNhHbyR`6`+jR2EgVWRLpQ{w@CWDVnJ-?*Ut(G8Dz6OUP;uRdX2-Y9nRm? zZvbSHpTf^cTW18jKmuwl9DU)`!AQ4mB#s40Fq0I6i>go`_6K4&f{S>E;G(M3K6XSA zbKl#61rqpkj1+H1aoz@ai*Cxc6&vHe$0RywaWJyeSRsBDyPujFlFtk*=EKYpAE$_a z3Fh|s7=v@f$CVsIDj_v62$CKn{zRb=q4u#o%=FBMsqEdsEFs$BxF1p?Wmc?iW;H&B zPt#9_F3K#PfZwReH=OkxRot93cR1dtf39L;O>Lgu(dvOZ(05&X(k^T-9S@dbX1uDn z7?j>^fyArx0DT$qPF?&(j2fM4!AzZ)h0beB^?{_Vl)W#)7k$v&IvLNWnv*6LtwQg| z4K|(30P5~nIEV0~GGoFbld%4W^C9luP80x~aTx$-)~hlt$k*^hXS{93Tln|H|M4ms zunpkv-wY~o7T;+*QThRi7vT;nLIG3wsuuRA%(e4JsTT4_;k}zb3bO)|_Pv?_XL-|M znf3JMk3#tj^g%Q);hj$oDKm8o`&b3SP!=g~itW&JG&-;488e0aQBBbhvIi?{6ca{` zFq>y}*xE-9Xo5ee{Hujvpw5&~!>$Y9(9 zqkJu>jMlj^YKkt5#7-O@v`xI&kSZv1{G zX%?r7-74h|b}L}*gVK6^fG}GclX+${^qA4mV_fP%3UL+quZ>-}braI;%=NaBP7v-C zVhSyfiTgoH9i%Hou%bZZ^?V3K^2*d^Eix~z zfF5LB=e)RicelnzKwC-S1LO*+gEB9QKR{EbIyGLPWk8dHllDW6!<`o=XI^yNA1`oP z2KjwRtw#C~yT%E(qbbl5{o?A(i$Sz+H6y-CYV4DF@k1q=g1y_GZ^yoLT0_QO_6M{l zjfy`}6Rc~QSx5IW`2}7NMGMZnj>kKh*ZzEndG*?H?0N0{2`cT5_v-k$S@tXB+Ycwd zlOsNo%=3m+&wtF~QE>bLB#-n74-f0JQas^~6+AE{%)?sHN;vhGGHi6i$sdaGjuqe` z*cRKaDtSg(RN@^=Xb(&s%Xr7|yulg~lY>ht8apE3F`PU$z~BuA&-Sqc9`6vanv-#S zfWOKPL@*@vIvEoA9oh=;4(%Y|sjqB}9gXL<+Ljlyxt62SyRTx0p&oL?FZzNM6nT;HkI6>j2jc-YabM2w+P;~?Lf>`Tdt`bw0N#}o$13xX< zLxI2Aak=dW;Fx<*yx=d27dRNPSr5fj zTWD(>&aMk_O*4fKA`5a_+UYQ-r4KMKnLNyWE?jXH95f@e zg2&&EgT`zq>5}iT`{UCT&|O`U(;7t(OqT6&KE7eyhksfQL2<}fVl-v(7~ben^+XZ% zcQgn}i*zbk26lNw2)Cx0* zEHwnY>mBf}{g|kL$5w?wJ);ps!htLV9QQlYj%R2bvmOXP(_A5(90GpUN%+}uIG8J| z7S|n25xQJBxfVGLif$JkMtdXf0=#3A2R9^ceujy)exsH|uVo)(H9)x72J(7T3t(c@ zS?5@NF_YNPFYg?yKWvc|568_Q>p#Z|@w$K}FG=z4dB(|V47`++uL`ryvTDHc3%;~; zj#X+frkVRt*MX~z8(oz?-`Pd8T)hHfDDY5~8XE{Bk`q$)e%bL>4qRlmym{avxdM!l z`%vHNAREqwPriWP)^O<-;19_F5dZZYx#&8EXMJ!rz?$a`I{G{K=u?oc0lmv{K|JJ9 zA?)rb|0=qLKDVy^d&u8AfomWjYc=w7GzVWQ_z|Lwqkp6)7O5d3{X#QqRNJ7D5i*V6 z==!OnO3l;-bm>1ll`j3BR0GAt#`}h@n031JJL7Rf=&*cTO~K|*xiizwimTbqbEJ3D z4(}Uww%fTMj~nVL^4l4h*G`f2r>ol^-ZvE6?G&;<1wQTk(2(1oQfcQ=w?DjZ=xn!h zGy5|wl;596^V+GFc8+k{;k`R9n#dYv_0MnToV<2MOFJK<1A2aV-_XVG&;M|32>GFGt=S4ZVGl>H}N7fW-*wV}M9T ze@*N6-yZ9}f6njyp!?nTRQvPl4?5g^U+?#R4uWdz@1N@T{tZ}&?Dqrx-am#N*7p0o zyzhI@@(^3VsYCCf!{`u3v9fKR{`V^Z<1NXP1MQ=`dDZgdp5Sp59pYK?B)9APa$rrj>dGe&>U!Xh*Q)C^4Njsln<*O72 z7l~mW!XtEqYs`X`;O@z9cl}b+CT0Q57AhuiQpZeG$c>;3XIG2 zD`f5G@RKTOsdbIjT9WL5LCL2nb&V;G{k!Q3b=2b`MhyjmIsE01z=x2jI z)3Q9T8lM(`A?4%KUcaz@cJpKY`1A?#Bm4&NNv*x(XV%YB)Gd7UGlrJiXtjy-v-Z)N zu|uJ!!K?Wk8pp4~*mK!x(P9w=xSvw9ao#uVrP+9_pa@f}+nLYpXm~!i`T(cUi72Fc zpoQ`~+aeNZz}JxL4~O|& zSoGg9V0a({^mHLi4}RQo6Df_jr4#R?hk!G}IRH~*>QC6gGZdMzVSbJt1Mge(VEWR% z88>b&6e=K21LoV%Le|`6wzY0xpy@xN@528!FH|hgnTN1C(DXQ;*RR=f++EGVH|snh~DZ`cK$r-9&aqL6Qy4|8YV>-8Ub+nXirbpgfHiZJgRcDLK>fX5A? zPWkP1X|cV<(%vI(|9I~z*8gDtYC7h(_rg6b^{?PMj`wi4J>I*91Lh-bDA^*vy^C9H zuSD8g;u;Wm->{uM-WO>=2zAJBZ@(7X3rTwyyY2D5VMn{YQ`z3)_WA9-cXvzUt&#S& zciZE=YjF7i?Kaf-w0A{|?bS(p_oAX+U*0#A*!}w(+gn_a-@ijzY;PLsM+a+3iN726 zkhY=+HPraD^YvXAC*lR8Oi=onx)3?v=GglTfQg4 zKPIIWSlMa?U@8 zGZtR8`p-+UoUsTPf?Lm+ZqgmQUrPZ3X39i-Kx3#Hr9?AGt^Mp%m8->vs ziX`KYMb3u}_+!Ijs`B0E>=?3hys-}pO%B0F3Msq08%4|C zVVrJ&ZM)&*kK*MRWu^|!0+Qk2qK6ekhr+j3S`ghPoZ4NO>R*9fPCm-a)A#X|EOWRg z{49=C2w2!r&cedO;lPLHe}ju|#aW0(VlW{9?sne6+irg;5k`G{T*vO;EhYO&$$z1@bJ=Thq$#XDpCd4r?3De|`=_uEa4{ZmZ!z~z&BRv$>gVyc8Z_Xv>=ny zH=H`JMDqFG2-6WWpDSl=vlyIG+T+#dLt;E>tIC-;Et#$-sFRCqKa_j0A}mKgc_N@IHb%_7b^pxIIPZ zY&1tX_7q&v?eRXVSe1Uf4(p*pFLNOu;BNswrmyO~fC=nF82fq13$WaX zcVYK*9y&M4j+>u64_UQsv=h}R&_E|ix#aGKmDY%lq%e#1oaVQlDbX9Ec4BIE!JQ1H zJ)#=gW)U+)Qrd5sFJxtw5fnf|8Fr_HF?_MlNJI1u&oDV1_ly@jFhdV&g&uJ2kQ~>Q zAIub{VP0%?@8+gXGA~FfmVy`exORN}mFQ?8WbBYr$JLRD1p{gTmy!QnLiK>h=m0Y9 zo5>G>CuI47rkyh!NaM>|BYqHohxo#5MxGsIwaDuJK43;{D#+|!^aDD`4DYLb94WP!iWMuN&BfGdFyRRSsaa`BWA@k2}kmLe=%(T=}Y2LRA&r z=9QHDD$CjlK*38qG+3&FOVL{d^8%(y2~eGJZ$V_`Lp2%S&?IBI>Uja=(kt*n_sco| zFQlHG3P1NBDZ$x{)=XYf!rYp7LxKjhNTz#QOK6M;sU$0Y#@H1*1SF)! z@)5`YN=1XZn8w5t@Iu=WE(di~58e!Tp%h~z22f5v2LCd!Ncd)cg-H6yG6XQ1$sb`? z_$HEknPRgs{TasKWC=!)p4B-3L99`99|}F(9b0Hiv!$el+0rcdE?Toed0^3Oo6_+L z@j0L-{)=nF?XfRsGVj^vgG=tcmv85+BR=jk8Ziio0d>eq2D-CvP)5fAK!vI@GnXCD z=|ce#V$P5yb=dQ6h`AB(iz=19S8Dp_#+f5=xXdc$m9Q~rC0d7Xlzyp8eVN$Sz(Ph zfuGCH7yip$gEwl(JkPSf0kq+=Z!h%3UH6$bHnn!$cK{x2#JWFqrL6moH)5tGU#jS< zTx#upPktll!pZT`T~*a>T%nmWFe(&L3o%t(eCTi4$k-PWa1JtR`xR=r_?W-`w{B?t zv3xD9KN1JX`h)(hXZ__18(4pgQIOud{!Z%>8RZ#6hflS*%WEW^CLpNp`Xh{4<|H+s z)6(865q-vTx1gE}Gc0Y!W(th91nc zXReiHH$DW0knH%7?i-sdZxiHa@aFS?u;D?|bKY+{TL?TZ@>zg8Sq>`B#Aiu0H1b$E8kS*6h1n}l(xc@o;vrjzo zw;%Ai8;|@E;cf#7KPO>y1k8dB*j?Zz@I)jtuMhRG7V`S?C~0@T$>=%Xydn`|KwWi{ zmR|uveS#V4539-z=!Yi%?_o70sW0Ss3EL30SPjIUew4HM{u$_nP#bP7gN=fZeGp7l zK?%ee5@i0!v?~{8+T9nmkZE^Y=7;Yu!uyWWPTTYBZUbVKK{E+&#-35QT>{v@2|?gC zKSAJ%j0{G5Rgs8$u2ULyO>Ry8D?~UmWw+M!i2CRnv1n!I&++jmZ?^ck!F=0Z{3Ift z1UoSib1{~W_g?~h1TnMDU)U`2ZFk1v_~GTqceC))0+?+GFMsxY+g`L(KY-Fxr7UY9 z-?j%cLs$+0NU$LtQDr(Qx9?ac_!v&xf%`bWGcf{V#j3f~U{{-`@~Yzcvoq)0OWPR& zkyG2#JP0%d8?_VA7|2gJ(EOE~CCOh`3F^oTKlDEmQXSA=p&HO%E<}IkngjY9pkogH zKPU}t1pb3s{Z#ya7^<4bckJRnc35ZO|5bwjchYC$TC{&n_O2XlF@%K9jcF ziuLEa4MOhDtSb`{x2YL@sKjIwU# zEIby7O+i}5c`zs(Nj*@_IuN1xFr2Q`v5uFY#FwxlZHom2=fDw`i_`*mQwCXE=qQ$4v36_69kIP=mA_(El+>x%Py)*qbMVp$nxF z-(`zDC&^4*S7(psJQ>fL4n|_04B!aH4D8>^_#>yCRBSvKs`6z$#P@)#wjFz5iAjBg ze|4N^qJ^0p*xj6gf$?vm97H*=)LI~wwEe~ge^ww!U||41cyB!*h1fy~UvkwX`8X}i z*fQ^|FWA>FTQ4N>o1DXT`f!fd)Z3r@Y-eXK$4K{g_w z_GeUgK<$5T3Cj*A=NgF$-7LOTwo^q4MMXI)m${dJE7V3 zw(Pfwpne-eTepqogQ^~z==_s7p^)3NbIw0O-Xf3K)zbL_ETU5a7;##U+HMZfq%#E6 znCN@%9RR7AlV^i=?WaFN`f$!aDGbW-Cp@8mb}H&R0Un1whz;SGX-zM>1%`4 zxO#ns%g6xVkrWTEiZzR0!WVf}dnC2=T*ozJCWs6tr@;kJH7h?0as>HMd@-Kj4a?*1 zVvr!Goc8+*vpN-zVQ^t}B1vw*z@)j;@J79fYzej(5ovW15AV{Sls^BY8y?x`pFEAv zp(leHIiN*yvXS2ZlN}f$r*`rjyc^S8+ssL10qoxOSyR?TWbQSh78HvL<|Y^((k@B(V=JOn`1iS)RfRzImdIyd2Oa=$78HNg`PQa zb+rX@WRNW%5?eTXLeEyI6E5KPgEIo*^szX~>5bTqwk&DWuO&wO2EmAU5CQH&z66vZ zZm%FHBX5`Xs%CHXvr|W`00HAk@8Q0K5l)dw9YGb7wQ&S3XDFT;(j-uVpu7r*Z$@zcX@b~^k;|D5RB8^E*ds{lGf_{N5-WDf2P z;PeOom(0I$F#0+3k9XVT{Hp=-l{}F>|87P`f=G`)WRFo}Q|MJW8M4lS9Us5NdP@pfs%HR>`5pC#lpbq~`$*24^PMxac(oEQgoj0s=gXDM)$+__e4p`uxce;QMBd$2*pMs^oX(*3K`#18%nP z?iNsAoyM`uk>7_S+7jt*5dt%3pd`g^nzEXD7?=xpEAZN*tI^eYwi`bfJ21&1l!US3^Hv? z3?By8W$b(ugFoLXiopuJ2gQItR19{_9E;bKy~xxH4o1P|=>;ocRq@vgV9CkV3w9Z2 z=>?bIgT^l+!V_Wsph~EE7jJ}wk}1U>N1Cp6P! zji15diG9h)8EC=xv3G8>@h2P9eBX5c^V@Zb^K)9z|9lCg6Rx4LtoW0A0Co#xCp)Fk z7WtoVy2N4x*?B78n4852HpTyZ?`9c7uUB-GFD?w|v#pd_{^u!JS~k)D+=SuC3b4R2a_JUvXdx@eECNIKC1z=M+8His9C#>)h z35}xPiOakR)o_{14_)S8gA2fAj_pGt->Nve4^W7_PKZ+72$Svt_GXjLt6x-4-fe}^ zXT{NVcwYTlh$TMpGpC;I_Lo0m{BgW6FUcL96+h#(Z|;@rDmPu-ocH23jCJFca(74c zSW^UXBiRwy$KvGQ9N|LjnJIaRXjX2mw~X}MZ_#z8Gl$!Jp37~nlK#J@Mn!V|LuFGr z_3LK49LDQl3s!jukn4XAji8W;S?J{Y{{vM+rj~!>Qc_60c#In{2jGvDH*Amb5pr|_ z%wc^k_t?{q;xXkqyKXr!o&1S5w|gc`lPS*4R5;LL-(dcemOjUCW>+jgrrnw6EugdX zM{4m8xK^6pN!1s6a}{#q+)cx9AU^JP<_g~+bq~ktqnx_m8Sh=jMrEJ1uokXx$WE%103J(vR0f1oNUK>t-QqW?iv@)A>~Ro`ZmlX%TCJp zUek{~i$mi0vCA}UOttb0g;NjQqmbfC=l>%|qRz>`uXBH@5jhg`&f35FqU=vQ75mdv zK7VA^FPD>Ixj*#*_`yB*$D;dqmthu{?|OO z^jKkBYM-)eKOQ=i@BAR67~I$4S&RvJ3!fnl+S{ibU&2;09)xymw3_`j`XH%kCg8|z z_IU=sFkLG@egv2_L$z1p?DLNb%U(!)CFdE)Vc9~eKMV6!H7(8219?P3bfTI`P`F9|yMxhS#9+20pQ z7S+n5#cNOw5Vr8)jyy2F!;-+|xfQ*|L&kN0j~BIg-<-GHA+zvO6&Z`vo7LF6hHXqu zdg4jF;h94EO96_8m?wD}!;Tkmzl>s3lEk53X^nY;%H{J-`Qd){-PORXFxj)r22zD# z16Ki{us!_chByE#1|V3<>sD3|e6Q^t(Gw7-j)0cWMr<7e>FZ&7c2dLCCQVhuAo$C_l^3~|@J;~4wy zDgc@;Ay0w;`6Lh2@u|yjKatu*iB9c}PGJpxzU?6_UNN8n1~m8n7i3<7|8q>P|5M*w z|L0bS=g?ipJM5;;wI1V2JE6{Z5DaG7e`hKCubmqEUC0NW)?p-(H4=Su^J*FLQGJU8 z9_Rq=;Cu%phM{nv@Qd64$c|zkKl|E@xk3B)06@MCAO;?eC-_8zDm}44%<(EEwT@FB4TYOy`RKh0Mn2gyVk%ZZW_C?uOVl&@Ff3yilB zy&^A09~XdH?8kUoUc)h0e2v9E+(y0Ll%gTz=E-;_oRS{_7Oq%Y*C+F?EHG%-&Y_B> zT8t4DdTMYJ1RkK~DYm#>J>vAz{$Y4l!JCMrNno4qz2yVchmw2%fBI{&$JlY;`+7g7 zz+J_boRSqU@_W+cY-Cxit9!|7s<;o-}O9+p9~!mwdn+wPU~EZ)YVWbK7V$Fhfh z?5WCfU84F<0GZyvv~lNIqW-nuWkP${dZ@k`7$e_?k|N71#z>fJlxBzhG9H^4Z-`SX4{!ZkX{QXA> zibtCfuXkmA6*2N*Z_YgE=Md_{>EKr5=j88)&UlF1c2 zT+t~UKk!W(fnKR5@J6-8yAqTWwg-$W6Y+> zFWBU=8RF3^0(N0Ed(wlvpZP9BuK#Z2#T<7{gBT!|x~F zh}tVA91$oiks%HZEk(xpAv*F7l!I|=D!u_>{{e)>{nVwUH5DIfF*QA^N~0bp9_%T; zL4RRziz4G|aKS7mo_s=!HDIcegF?d_flRaNlqoqcY6Q-U8ah#V@cPTtr2J;db?%72 zvr%rzb@aPQ#Gm@?O)weQ9=i|W9h1*yDBsGwVEn9#_cQ%(>a|rmHAZ=sjaI>ia(JY1 z_(+*!bn>+?Z$QA=O7XN?A)f*>`W$J-(@yoBUsEyZ!0-A)Gl`r7(?O7f!8^y=Jd;)# zTAME(i@`Ll&4>St16v(bk(^?^d4bO{^s*FTu*Jq4BmlF=0JgP_Z95=;+mIpxchBB` zfthZ>?6n7z|<8L3A!V4@2qc*2K;Bw@m;~bxquR$==(|!w?zi7Ghx7 z!=YMY*lSwW>Kx;gE5^{YCUlw4-$r^Z!bA4{S{l%`pQ<6iwY`t$HVzSo1tStUQ`ypB z6T+}zME3f#h#E+gp~a`7&@$}`a~;Id!|<5QHA8bd&!aCkZlN@1h0mVY3+8SfK_^vL zp$cG9w;oAZn}PNm-+X3n6nu-R>D~_;l&l zkXPWGdO`FKkyo;1vacp1?<@`E~7=-mZNx#O@luRyVKh4jv*__b8B!3D4di@t}()W?r#_7zU<4Ir55Umg$40H&XMEO$wWQzGY$E z%X)G;H`SW?=Y!WF|Mwv(|2MDG2cYh=zeILRN4NLp5&!fgPQc58!kCQ+M4Ze<@YtMV zj`{&t(j9WD!4PPOk<1bJW1JHffo2^zkt5J3ec^`@@7Lb`AadgT`ocD|Kj;AtqDwFRWIUKCu$Ap$M+BGt5t)XrwG|jnW85pCE9zKC$DL8At6kcuVw&mxfsrJ6oUV zcRkDPiM?&<6Z5ema0uM`#7P{YeEP(WDuEY5!hH0JcwT*C=5JjC`4K|>9DQN}svuPf z#E$ieJE{Q)ZW%|VFm5Xs;lTFbVFyPG0$$#R@XdG!$p-@`v=(~~C85+z#iz0kEes`I zu3Mf*NH7joWa>!Zkqh$+-|<#kERZy^dF5}>){Yh3c{yclqtvZC*Utxv24l^(H4vi; z-HbJfaDHoMid5mP>!9D+Gi0AtP}Funm5Cu!IWev{+6P0sWFDs+pz`Mlewct_Gw`$h zaG@6$euiukench9iyx=sC!zIb$LF{GS@70h@HSuY_OTmpYu*Rm4gva2Ax~WB zeq!p4z)=yNu>9BmE&9p;)62(SrLU~SIMMgW108*(Pab_`!V!7(mA?Z3Ch~u$zH+qT)>nAv zmT0yaedXKZt?8PruT;;-ny&v@eTCQ)=f;;tYQXoXuLMF|>i!e?47xXRE}8mD&$lh( zTf6$oWpqJV@5FI>NqhRr`-kP#R}MP%zfxaWfgmtPU*VmPzH%{ED@$KF9I|Ko`pR$w zYugxi=_>^8p55DmzEV1f6WF^BPngc~ZB$>;f@%od`pRt_qI~+w6W2Q0h0Fh;n6IU; zn9SGZ|2P`2*#r3q;-VdWrJoC;OJ8A173KdhQ`4CKk8%J~`ihx!#b`U&M;hOX`pT3l z!G}v8|6cT!h+Cy=dC;S;+=Om=^_917bs_dr94+S7S4=i;JbjQ4hPIl%GImHVezvZ@ zavNITj=pj%G-#W&PI%QvUwOoh+2;_2@?WX1e8n{zYCM0HzH&I$nQc#B`Q|8$mk*z; z!d_(;pZr1VD`O7)9`%(rssW7d`uF=+qAq=f*N(o@I?SuD+;BK&rsZGBr>{JAKwf>N z@Q5F{zM_)NF6y7X|3KwmQ%k0mf6ZJnIWeLq!0)nn%e33 zJ->l&bKG869DkTh z;dfyQHRH^FNcO>YcIi7k@R~i< zHazUscRq%kV?pd#-}&xf0Ls>PzTV46nr}znF(Wu0;iSbjOh$0D>z_#;E%PX{cgucMy9_6VoDIg+)mh%33I;9}Z^YxGio%w@o!*R%Se^ zB%UfM@7{{Ev^Kh*eFN{VV<3mZo4Gg`3-|QJ+ug#N+Jtx{MzmPF2HSo%prjF<$-Z@clV6E&b|GOychozjh{YB?6f@e(jF{;Oh^{nXlt=K2{HOr!L+4_|kkN>lG-TVJ|=N6&v!K+&k zGH)wbo3X$9YIlC?Ri)N+t(W}P^=5wSqb6ic*G~4F48RqejdpFw?x1vn#TYKOjFlA7H7F&j*%BVbE z5SfN6c}R<0jt{H@})rQGlE?`h4a|UXX-D@h=YO$j!cR<<+)FfKM=$mz3 z;@4X25b2iWd2*%bLrd!3RNH&1&72L@C6c=Vd-&h^F@=VqI4OB3b_Px;4QjEq_@dz9 z9y#{~edoi?)djuuM0HWy4anE;!q1f^e)wCHy1Ljn0n8uiJD#XjI5J)UHkeim0x#N) zFK}RVW8O$^;8Up4VmumCA!NBM`U=B9|K7}pgC@u?+B*$LkkllfU@ERqYKHt&v>@dO z-r`Br*l&&_$U{66{Y^cw(47Yh`1u^e5lY=M4j6=BWrys4R2egA;?>IWxX{3&6T%!VH~O6LiSU<(t=k)DV6*bI5@vF zNZ}CMt8`<+l}r|bHfZrv(KZ|oUMo1mDy-93hmYgNeOZQKc(U%H&nMs3qQNj!4TEW)XS$N0jRl^BUjp%U$ z`4aFFDGT%e%+dkj#HyOaQ*FiA&smeas32Ui3M7qpLaDPLPOmc4B2}$W!-qKXDMj)r z61jYe7fkEYOu|hLLFo7pkQK&Di#-fD>b;T>a9?ac&mQ#(3FjF!1V?w_>BwkvNGD;u zm=?wJG_WE0?jio-739}>2I+?0m(Hv)7Gq&VMJ+2P;4mt|Zszx_<))xhD1z7h9<2`= zHB@&Y9)qBojXC95gS+CB99*PW09rENK%2lGh=4p~Jin7Ns|-OP`N?=tgmeM)5Oa@N zfDXJ6t$76BGrrwZ*61!s0Hf&chh#rF6)RHiepG8e$hW4yg1<_hp1z--Jk4G0Td+{u zv8bE7A0&(c@RO%+I-lh~czN2me@Bs}i*ed%F*b_T?U9)Vx^t8`>-@j*D0QM4ZT>BX z#J!Hml79=?G2p~7us8+<5l4})3=_H?%R(!vm1TkX4v{cg=9Oo|S!OKCxqqBVuVS=v zOgf*+u@*}Z01XUH)Nz#&cQ2;ewzSzxujdd#($Dk-4BOP8o-74kYy)UDrYog|Oc;OE zJOt!IEq<=NXh9!7#RdJ{CoM}T4p<~RF`F>RZREQH;ghNfJn_bPXzn#GNWZl6{Y&oY zk9HH5aJ?8Vvhy)*U;-hTXmc^m$d{NPw%-;W=}YFYln=Lfg< z`o8(WLE!U#{Gb?O%2wqE+tt6avGl1W-$J&qXWyQ5Gg}N`BF$dH01n8S$1B|Pco4G5 zsfTDYaUflOl?&1<$ReR0g7wk$&}uiNKdz-@Kz@U~oUVswD%frS||xomBPGF2WTO;0g}&24Ac^eI&B9jnEUwNA@vf)$B~JMaUmU6V`9YE0fhl zA!HT8zF3@=S)n5t$wm~T9_IliM;6JJ>*Q(RajBVy$*NY)qYSh~>S`teK=$^G^?pYlK_hiTa} z$YP4@ppwN@+>U`Rc9KYA#F-?9vkEdy*y^Cr&V|>zh`7h8twi~Ud`9$It3`U^@&NKj z3WNtyYsJG;`m8ngC)VC{5^zn4hID>fYWRG;~j^2JwCmiHM zfH{H*Gv9^amT7{ftmctjzWoA}-{UR6>p7Iq_Ljf?8+bA%d&`eNlI{!^BE3nk!KX|pcVI`7A1bL_nBws^JVZDtZuEC9wIn71@JNJ3Tuc-a)pJf|LxE@u{x=fQImpDb$y z*B!>53}a6Qg_D<**CbZglzk9t`0koX)m0Uj1nbJ$-?%@-#rNgBz)xwPXn3m7_`OCh zK1d(La25OwPP#apSZ91Nip9OnY?M;(8w$1;^x-*Fe<;4p1Qc4grW?f zOstw%okcB3tZIzy!z_!)lnT4nnq6rMJD~u%UZ-Fw?k?9gT#%Ut)mo5u-(H5*od(re zPoh(bV0sx=yzVucisqu%xGUmaWpj`1+y232l=aFQG|V&x@o>hVQ80+I%E5ZYn{~Ui zCCv2@b|1Z>O^ea=g8Yw2Sh=e5F@P<=8HcTGAoE9qfCyCCeTIpV6Fzz41sYP5aa#rICwkQa_&urJa1VR^~;+4NuM$suj!3#3z>7_WC;62kYSN$aM97;61?Xkm(Z^5V81pXRt zV0A&4uZEO}{^Kh$H1}3UuU4IZ2oKfm%>M97Xy{tDGc@h$;*Ag?v>Cm~WfE(QbAd{l z#yMKu-xezy5UIt_0O0^!iJ)gbfN1d^c!eN&N06xQ56NeMJjr-DCBI)yOyyE)sG)g) zF{+%&=XMNNe1iNqU%By%{Ij8o=d~CmY4iLpp#&tm5Ny=F#RGT=H-}i6SXFVs-7pLF zWH-q^4XdAyle=^zp+mJ6TM9puVCWWK;++P2zG>WTz-j?+fF#_5Ar+%oRXV`<5fX@! z!ZIt-KEY$d)q$S%W%g@fyvFeeAZhRuhzlw(o`Lx}^O`&kzY8(Fo}g1#!#(qzar>KC zwjPt(D4vFDq~>A?>68zQ#d=pG2G$hprfdav05`J@Af)aX2sPhol0OMozyz+vJ_VGT z)E&yQzs{OQuVGHSZncu=8v*$EE#YsN5hKR0!K=eqg7A^mfd44lWAsxKtcO$p#x0@L z5TMzaj=wbF@RxAlIzc;)DiauP32cgPECr>K6S>_0PB(iv(IdJf^n>=_*{#942cDY)`AMKPWaFn+xOg#9T*j!<&QWQ4wS*N;1BC!#P2R%@Y9k=9RsWRg}WdHLjU zYUqa0wDs!Qb*gEnD0!<0?U1FO=UX6)R*sxfNkJt(LNNUCP zMOaA7t7i=xPP|t}Wg>#a5IG6nM@oH&Od!+Deh<}yLlBpc`{3Qb$cpPGsl zNEQH^8@ROXN7x^af`!O8Ep)4c-kLya&wx_i*Hc&IBQ-dIkn`A_?mVaa&tPd}vBg4p z(lw4mfYgY5AC(})N)Y05%we_&;Ai9|#0*)NiQ;18S)faXPr4&g`6g2dsZCFf+MrL{ zAk;Ra6yFCgS2$w6APYyGr4F=c$YcVdz`p||p zotdvmAKFYT1{+BoLMW9Wk<1E|SjkjDc{`LEU#;U<>`RskhS*$NrAL7Fx4LB+l znlHpR1u_W&>o96F>+ubH99}iy6lX?)vW?$$aqG9XzLxA^YGsFtR#rKWRIqGiRbnBJ z8hJMHs(I8%j%Ef6&=^xQdkvadfcgAV;|uk~xbn!Lu~5xm6{|d}@@LSkq5ue;Bfox@ zrH3Ux4dJu}Xk#Bh!qpSYsgSA5X5-<{h~;BTMG-p)G}mbhxtuYeG_g?GYSF~1L=(d~ zPVJ?G{HZL5lrvIO5ZCf4*s$nfy8x+#sSi3^6tS}Hxdpr9bEr^WjSQX1XvtW^kH!-3Ym^xeHT5``Vpk8(no47|>I==fK^8L3krQ_5K4 zGpO!5dY7e-l|vtUw!0AXRj~4z5|}$Q<*L%j5}4vHd#sc>%Y2FpFmh6Cbcd&3471OX zfnmw7Er{&I-^m4$o>IXb?UhjzlotCZ-lU}#ysxUX+@<`Tsgyr=j&xOD>c{{2>HJ%lD5>1 zdXYLES7ktp?SNy;&?qO(E}ym2?8X`0AQ3^3gE1n~{44lL@3AYHb5K4T7*!O7eqH;9 z`aFMYu#guSS9ddsiKJ!}_W%P#Ik?-G@)5>Y^*7R^At4D(XfXqfO+L!}Jd~koiLh~N z6kz#HyhYgKjOn!$>?f3ttEu=xi~SAHS3`-!Y0OcMDdRP2Dptc4Ab_T>he{mMstCO9 zUGNoxoei*Bd;@TgyCU9U4BMU(dg8Yy^Pzd>x8;}LeyEfmFm9C3-!C_4L0#|6arhGC z0rR_u;jShXS89YBuaH*VgzqCaD)Pj;@YZU6g1^Q|T?J+H`4J-Rb5B$O$Cy4oIks%J(rN z4#BfBAp7AWlv2$CT5@RESX4&hy=4|!U6Y#0pD>SyVBEDiEGGYAzSAYS=YO=Yhwo7{ zCCYQim=~ z&Sx=RoNo>5yK6JM;Re38G2*k~NCOv-pVdP+XP2=2CPj+ zxV?F9>sOFEsjCzMPZw!3c^;ZYm&UJQJq{)7Au$eRU=gaB6~AFMgoTfw^L_UOSP%Fy z+~DSsXPfHFf^0R+6c&rLSQoP5BOKRx;9uh+uw>@(8gxBN)Z{C;r;6(-A!8SbJr*|>?*@y6g2YcH$E-$=Vf%i{P zjp{G&)4ff2cc3`k=mW1LFT9|@n{315eHuEnjKevE7yYrfeT&z*`kPW7>44Ft?Q5uq zoJLyw)Aewkyo^6s-_{tjzQgly!FIy^nl%q*tOptCiMNfzu-7@mOwSJgscd+xl;&hj zn^BDR@^ic4bCt=5q!@4M4XcZdmoc}@V>Ew}xd37{Wu_m4dV*NYC&+QTv;ssQg5VWF9Eq=peGc#QF}~k~gRbTMzGf3v zSnn6v@AHc9FNgg_+4mkRZN+2V>VIrAigDkdgW6nGK`9f2RA8*!1ITHV*Q)rvHAeBb zm@oJ~Kf~|Oc^bC9tK|ut0a`zfT!7ClhVdv9g0iOgH{zHMK?gB2mheS2V_RcRE?r)y zHPlHi-Buq8`OD}0a$S(26#=7v8@@Xh-*t-izZy$MEnI9)(czEdshX^!!;ZyM$7B^9 zatxk2FstaNpMu!>WED+%3QrZH$i~@`Uz<21u~?G1@qfDuSxAa>ONkALw#oIf$T-xX z?#QK*dS}J}MO$%U0b?grS_Gc~_A>v%A7d=K?vSVB@7ree$A>_1rv9idn~fgZoc{Ro zXJq|e{c+DhT)DP!{n2}V@>V*}!h2rK)Xwgoai3?goD9@+UX035FhRuJp{A_QJ8&rm zzKM=bc}BL~Z(btNTgQ;oHs98#2F%&XI1#=+LT5K7LFJtu1I7y#)mGE~Kd z@H*XBtsO_CgNJ&hiwjq~8K~@^5Y-}vm$)8Jl2xVHxDyMCgy@_4rg`p+apg+ImU-ID zQD|GH1b>W0fC}4APk?e7i}lX2?|iZK&vQBtmOt)qYqj^cMM^P2FE5Yi49eJB^p+9D z4Xr%H!;Ht^vBO;ui;)tF80~agfKw2}k zam!}v7RS%;fN@Y0G&_&;>DYGfnxKrW{K1~5Fz)TIF_|~zJcZHN29tf5!rOValv5}v zGQNW(Pf`(gCXT{9`EOw$L_`N`M`PJh<^sw)_X2tsUNslcgS`=|;)k>%RGnBU&+=Kx zLr(T@-$FkOSO(w0I^o`TTE}sdbu)Y4>Ei>lrlpK!yT>&t`+|Gj+_bztR=iX=k$>MQ zktXZq8e?QQXWuDfZ1vQLa&yZmw%~=hvc6A$Ahw<^(i6*MADV3s9s;F__F%r}vIkd2 zk1wcu4PP;rim$X7W8B2zRFilvocP+= zN6WY+#8-U=#tz+NHte*O^YJytSA8eFL44IUaHI}3efC4m@TzsjL=mcoA%c4t9IA-J z)M76KioDb(lsp;1RqEl&=I#itIvMB44XZUDEHxk0;*<**sFMBg&?3ve?O^f|6O;Uv zL*oCiO0daInQs|~18LUgRF0Z1U&3>>#_}L7+`wmiTsI0O4oGfw<%jue3|HVDp97o` zV(S_=MA`NVu*TE7Q+t;oq%*j?7CQq(zyOZZ@Qab*;1XZl=t|)HWz^v8SIO5OU%~2B zTzN5~qug2P+Vjf%?~VwSyYKZNF`Wb@ z&hcSLXk1UU_)@TQ7#D||YfAK5XHDU?6)22@d5-l8gg}+ zLXbfqgQRiheGN7?B-&~cA8@;6Ky9&|f?5Cw$bL%Wj1@{g90vLDV8D@c#2ovqz18+Y zp&~OH>kIHln6`4Z+FtW3*H+t|K?b>7ZFdn$0{VQm+OEX6P0TMRdQu&4wf)0RuC2Cr z;w8^k+aGP&KHHyh#{4_?*?xN+M$?c9w8p37l=>onmHyBLLF-=qVLQOs0!@F5 z^@o4GV+ktR`a>UV>Hja#AB;nmiSDpT`)_Mfm)QD)<;#8>6Da@Q+b1AhyB%HP_=8E| zTJWiS`U8$e?4174y?!}-f3xBHb9TpVSE;5M6o6)9-WY378}lciJ(jLfoT592MkeLn z;C*@zEJ1V&9fsm`aFBO>sCY{{WdSj;pdfx1Zz&+WPczt>K%T>II^eU&eEwz@kR<|S zoehNd_STrU38dgSZ%h7`4Wvg#==HRZM;9?iUsNg2u$r zgBS!Jl{pE2uzyBb+07@Xo^GLbnXD;Ul~H>O@?39a?|ERD)X6fx^;S-TiCtA*g-W9y zO#~~vooXIU5LXqH@aXKWYgI_(dAS*%!se%x--nN6i-s*{GBwqbQ z6|autJ5e7wa^TZ#MP^(IcIXx8sZ&*bL#B{YzPLiQxnCKp5LeVTkamxGSLTN7N6brZ;M^hvptA2Q^yN2b>-6 zhGBuWqctkfH*!q=GEj9Xmke$N2=eay_f78k8NSNsj9@|JE&{oOkr6?>=m`N>(37h> zBvgjs>vBr##Uk`ipuYcd+Ya;x$^QFqBj+PV0kM)B5t6}U=Aqy)Ueee7ZzMh>X(NU> zRKWl^m;#2wYmHqLY|h`<1^TuDnASbm|H2jD5=V8nQ-mU_1R?P?AUEWj0U+jF>So%c z>U+wX;?{X(+}PzJ;-~l|;HRzxS4F&{Z|hb-a{R9dKOkNux>=hG1#W}U7a_@PF`_v) znB|iTjY5>7$%wze`-I4^ou22tw+*hf|l1aUQ4`y?E?YpVN1=&mVp zEMihEy34Ld#56qR;uX^7ZZJk-u*EUdcBCnXy6BJa&|Q8p4-Il(?SOE_0%Y64e3C>t z6y>0(Lbp3#MQaqb?F_mWd2SHKL5qC_N(!Ye;^q_#`)ZEfJ6RMto*zV4`AZrMw$kr9 z6}tz%GhRZ2iM-gefD)ZLpdj*R0%+7zQ;8lAF&^22jAUeaI8|LPktmXHA@MRY9l7-A zHCk*eNmT9YaS>x{K4Sca!h9|^b29frzTKw$WP>Tv4u z{v1YObub!WZNfemTg|R6o(-Iakot+gMh4s;jBfrtz!x5JhceD@LYcCG90AMGxU=veft!Qrkh8iOQFP5+`m93=}o?MKIRA3R`AGbu*eBykt+d0Q1Msa2XPa$FVhsuH=o7#&93VKRPzVKVXYIxc|^R`9g~ z*|)aZ_!r1HGaq$2c%*SWP>&gl<=`!2CC)lTNJD0fEZ2w%q&_s(j-Rm;s*93FN zJIa0_jqG}3h@y&-1+k@Cj4{W+KoDJ2>z@@4_dXuS1MyYTXeniH)kYO(^yhZrQYc|? zH7N;-Lpw*p5QfONJNZS75LODLb_yq6CMoDOiH}JKSg!WK{=>+4Eb7>5_&QlqY$-?n z1CBgR8KxNwOCh-oorB}RC#|t3P>lUo?0`16Pibsv-Tkr@@l|=_5pGs7lT1OgZ%frA z-k01?KjFHYHiME1hjt$hQu1Mzh7)TL_OhMv76v7g!Y8cBY#j2M zj3h`S@tVYqSRC)JucV^7AhTM=#wMtPT0l@gBS9rrv3KYq6In6N4uk~5;c8u2f9c^=0c5le&G-Xa%nsC|ZS;9zWZC?##@=W?-zO&< zE|#R&$9$IgwsytGhZ~PG9TVxEdPU&>gq}whn0p8mF&h=HO3wscR;_e3!+%94=bNahQ1}!>k7QSv;fU3hCv{ey(2LhuwOaT>#ox`yzyp#A@WOGhPNs$QLrR zr33irX?RJB1l#;_o%7}QFbZ{j`DI?YzI-a4k(hD4VRDf+X>X3pV)R*uV2W{BZH)i3 z^(7kJY`naLfF<=F=&Bn~pv|3JWSk6tRpytV0$bkSR`*lDx~$tutw0H&QRZFml zcg+RcGyFt?9V$`YX%h(FHn+Bi%ncPoWJARP?YnE}8Kaz&v!CLrB_z3HJ^LwsBs-=% z6AyE7$G)1)*-wG_h@c|l%};1K0|8j;GyVA^aS!!zDt=t{Gw=QiEb`g=EBa%9#rT(H zHs{%2k#{de6G&1PDz~`uSZNSrsn)N%EO$BcbuhSZHs3IJSL`L;4l`yja=8f7m!XUl z-`}MT4aC|23tPFhQ>XH5YhRB$4sZP>W*p%!Ot1z&1<|f}`kN%Yd+0}mpvODNn5I5u zHa3!^+&+Ww*m%B`6HAW$5ISm%OTYdWG-BmGSoTQ55e6P@PDnvAh`Ws1a9YV z;{u5f$g+o-Zkzy4N&^H;LJ%zBQr2Skw;w0XtsLf)7oxL7ocOrZ zFEa;UrzfP~6-q-9s);YiN5a^HU1HpO09PaKkDiF^>4M!A<3_ac*LZZPH2JYoN_GT) zq6Pl10{*d58i?czB{KTYs8KEA9lsF6V~)Yu-G`y(clc|Ju)fn@P`=t&`I4#e^+W*) zniW9FgMcU9yB8NEBYD9~Mhr0;fLDyNuSiGt%MD}hcgui&(dnqPTj&XK_hV5OPF*xR zmzdtN43fFT^eIL!hnOyDmzZECR5Vv>s*4SNRK&9YNaqdfx6@``i$=i~x!BoAKTP06P1@oe;P43&4aO{r7vxQ(29q%pV)7fa$4ckm4WsT$ z`p55=o0^Jmu}|VSylL7KYAT?&WB)iHRl|t1%9WrPv){~5?AbEzOv7}L7%nQPw*BL?VZ>TwXX>M-bX-5zjfqv0C*<2$Y-xm z@hZbGm9ly+wos@d)DY4AJN>$!QgoD5d%{#C+#E!|LAf9&lzk7pw=+VmL~%N>uh*3vOjC4|@L18-bjc()3??QD3wx7)WG%qrdLgTE3tJj=3foc4(F1Jj;< z8pF4b!XMbv)wCqZuDu)Xz)8XpgpMb$@O2iF*;(?rwKEd?1IC#oehPeqoW1MOQ=#(T zVn!>w5wFN2#)Ayi{7{b(bn6A?`zNE4?-!9{V_p=`vESzv-~ZUPzkrYN{YLBk7tH+y zCD!{-+3)j;@3*0|*7x}s->=2{nWa)e{#mHSzT@|qNi}{gr%kfj^58dN3xIOTC_?6a zI)JB1D1?^|?C&L%>la}jSq=;16GWM3CZMTK(RU}I1wYLydiE8lJ43UIRv_{Hv1ddE#2tT*Si+F`&tds$SeU_IDOss7btohMMi(1#ab`6RsG0Oj;6dt1zz@> ztIKBNXk?_d)uU}zXM!AsAI$OBbx zsHN(8_6zV?XTN}ox?`NNcfWxBWd8jEja-Dxy=GX|t^ES6T;cbWg(Y%CI&gq@Q90&` zE!!_};)9CsXYUud2~dCN`vsV}HDA2XLy)vN-uzYZK09L-qOhI4U*L7fTAem_aYm_~ zJzE^_^Ty-W1kH~3DaAg0*985c?iVnQ{oD5$@AEt){VW~ZR9vQFLQ!$S)*sJ)flkN! zbcyT$8L?~Rbjpl%&pJUr!vo4}4PQgEvG5x!GNlYUxh-}nnXLK$aspiH@l56nKIn=L z`n4l}7311s3y{Bj*us8~xa2SOl|~3#O7i0#E#vQa0#m#hQlQJek~}3iut~4@B(fb$ zcR|dbuZp#qlQ0XAiE}-o$TyZgxBfe-eBZrL9l#ZF^%^Qteu+c;KCs-LO% zlcNXd$;-IuJ%~1IvF&Z;h4;3y_Bmzd=viL&Ha1P+5cXeu=LI5EeW%;>Z#T+k#3040 zcKyRn{bNYDqS~3kE?^V>hpzfp?D}Wz`o841#Fc3U6Ke7DQ5b1E&eiBe;9zwWbUD49VCxBNFM!4aqclHO>U*aL-?); z9z(EU67eeuBxvndY6LNpk=bnrS;ZQ_;y7=x6p7a+0U%prA^QdQ*o4}5+A!CUZ6EbC zS@O$S{DW34Y{dBp`wL_P>&J8b*SjMTkm6eJevL15us?33ke!52A)Dcs$T?E>LgK3q zj@L#qY_zbMK;T_w!{fcZfQ}`+CZBlP-Sfh$6?naDc)Yjs{eK42cDl*uoXuzc zp0B@Afp;fu;?iHo}YlZ;s5gWHz4OjY@n_n z^ul|4eBVWJI_TqFxGyif0)cmf2@hvP5T2O};F@&wKyP1vMp&jF#o;ThptHzN*rpxl z^V$r|kL;I@_V>crJ-a;+YJyy_7XA|E*H%bpmL1F-I+C|}_%9}xrmCU5!n&!YSuZ}~Eularb4E&uBzJUV?V2rzqQpt(Cl zzM;kUK$y$gBT#~48E}Td)Nu0QM$ifmF~e2@K8EZV+zQr3n{hKMQdgH7hde|zZ_+oE zq1TG+6jv|xE0rf>dw}k#o~rn1s;FB0Zh3oZv9Y>7Kl7;xGo0=E|#e^xxngZ@01hyQI@w0{My>Mz$x!6;z7B42qiubC7#!(eQW^PE;5XXlOOR$C!K>4Ni5WpQ99N+ zUXk;Jiei6+M1-rZTD%2ov7T&baxAtqAb zfFo85ni2epIz+{?0(Swq>o1Q1O(+>4?>4do{|Ki^uGIBn^BTdroRzUtC3uSXl=*2P zKqU-x@VPshmW|IMlpsECxbecNxM+AZO2AtDdL**bTco{Mn}Lqv!nR9nyb4$%68a@- zxtjEL5KA}aG!)NHH{FdTC5+1_#vmGM{t?R%YtwQ!Z8A|5+T)b{9X$?7yp_Y;B2-bH zJ_+9sa7a)zq?~Uy4+-*GSJzO)TN30(E6KNDm!QOKl9 z>T6A!ljEl1Nq&`1%T y<&0X0F$33dAu4Bh1wSW#i=YW>WL+FA6WdZx>iaXaNu!s zHAk*`A|Kb{eA| zu~N|*iBsz14;8c3RizV2c6=zxrdO4s?KlpHf5u??upWPqb2C;tO9857-ME70SZNdm zct+LmmxEH1SRYP&A{smR-`hspId~>%_6ixkH9dK)*|nYY#EC^V8W6>UmhrYx;JRiN zK8Q0M;-|97Nfln?T4nmNc-kTZZ+YVifn00+c^p`zHwk(7`L3hE>R_FHDwtu81L&*i z+6TP!{N&fEfTvz>*ibl6&B^zm z1>hFU;8)#ob(}ENeWS;{UfjI^Y;YHFT!#smY_I@@nEo6k@YPEZx8m^C#Wr8PN$_vl zWSeH$eELDWHlO#F$Q*A(35S-1p{K4@zgR3Po{8*h@k>3~OK%y>iGtpPB=J-62{!Fu zzX3K=PSjIjQW)RSVgasQd7sY|q8j__6t$Xjn(fhIvtTRXxbB?QzSyNGPS-x{9nS;r z@{FfimZDrp)UxysG2`Z~Z>weF*`7w9e)aaiDUg2M2d1RPi}x1o$8JP%y48nQJd60f?D2|9dzOOq z6&&8%$3#Ag;&iP~zZy(9$B_oHUz^Q1?%N$OyCZuzbg5=`tQob6-qKBTy|_MFU`6pM zm_&TWqA%)QYa;Sa+xn57cU{b6ptNMYMJ=hF=hL~*Q%h>+`9$vX)RNkH{-?Rm>+L^Z zmiv53`_F%c@Tsi+8d8u?Zpb{H`~1B2pZ_hYp>Ke}EPvk3U_Ru!lFeXT>&xbeO_?LV z;Bpt_3eX6$Fxjb_|AB=$bSC@{C5r#Kn-@z1Qf3I+sQe$<4NV8`0XYuB7nFEdM)B~T z-*bw@P-snwtdl=~21O|y^&!)Vcn|H3;x)6qjW^r;`dPGKKJRUQohIIJ#*dylX(A*& zEj9`0vqQvzuS*z<&*^_$eLe644txVv;`zL{40Q2VP?FXD<(OXW z;pbtQes261IPfnaeBN6I#rRpd@asE(KiUJo6&&4M?$=RZ;=Q$!#^0l~yB4&Z+& z)7#ztCI|jh!soqZu#Jz;h5xY3|NQiGiwAzA1HT*L^WIva;-6ANbhm$W2k?*f!gugL zLEsbr`(XN!9h{Nd{xOhH+Z*3 z@9p_DE*Ji-9l)RLfgg0>7ZN`2?fJC^l13K(%R7Ky;(;G<;LifI?D@r*i!AsnI+(xn zJoC4}fv*uh@9p{ZEo6!;_>((;KgI*U)uB(G4wyZ^V!7~3I)K04Gk-as%=x<~;q%^} zU)$%xpVz_sz10Js^T~w&Cs2L%{Gy#c3qNBzfM4!{?=oP(6cXDLRXkcf9i`-c6d=2n z%PW2(M*bK|`9;NGasW(0ta#hw)L$F_>LdRFLOSSEu@@^^@AJN~9V?ihxhW zGFCL*>jm`)D{6fz{>X{~pNd(mXr$nfV^_LFzHt{SawLjTtO)!G72gnd>pzDjD)0qF zjpI;Z7_1G_PL=c8-trn1#2l1&M}=*)fN|5$Zh^pr0Y=Ty7!p`HZU(+Y{$akKPT5bl zM;~>!{j{rPKOM*gPBs@DC{w+mQO4gk%$bzgiz|DRTTxvvFN&VuOPhHmPAmu2Q0s?b ztmGDG6K=VW_ERw)DEsN{oJY1b)-)W<-@oZoHZS)PKzASi343|#At}FJ|AiI)f zpBheN_GQ5j(bdiV+k%)1FK}F-E>;eHGmfw{qH4p~Pi6-cR)WeDZ#W zcH@2E+O_P)bJ*bOV0(7sCeGs&?8Yz`TSit|SUWHs!xBsDv2h;xOnY`%)N$&`pvm}% zc`-(V6311G6$(P~n`g^~(Rj?WU0Lj7o>lw+y{Wa7Pf8<)k??nPOM;PpzKg_p*DE^< zZMWD0l}rB~d*1$NeYQR;c|oXdkDKpSx62&2h&6pOPca789RDo)=!M+#qzr~DfxP*= zr`{Lo+I{ahFGhS=DodP^KU3l z2Yp8R0yjMOisZ82;27&1`;BmD();Ac+{06WjEgzLlldo95sQDxf@}?3x~b7CMy*J) zd!G4B=^63d#g>tW_m*}V`y52!E2}0281Q5B1xoesf8Yg$Bi>t5ery8a_=&bdJaAeC z&e!O!g2Q`D+mF46VqZ!4>tC^R?)Fei(qfm}aNJr`>`cP(6P*9yffEooZE(Y=_VC`a zp2S{4v9Fvx-UBBnaL%*g@ZQowV`0Ma6U+DWz^N5DukT>BhxeAY99x89Un&0eL@s_B z1_~X3r3mo_(KsfVxZ%x^FB}%gJb71@Mi@fk# z;rcM~-<$AxZ@HY}g}LxsFvRWHQ}01F>`iX`G&%64{k*qaKi>9V&^~5J+d{MS14eWuFQ!sop`e=Bq0&jo;X@Ntji;71+!HzMXCd;U&CNf!P8rhWMJ zUih^R{1JrDdwc#?=EDC;`|$gE;RhY~NAv)E-rMtcACzRZ{}su4op=5|EY*3Y??W&~ zWKZ8a#XR96&kGcN=Y>B^$kz>@)74yFULt(n+tc^ST=+dYfd8S8mm5B(s|o)m!sop` zeW&Nbzgy8?-uBP*z%Ov%zXatld-;8m>Y|%{4(kB^fgbp+&hXwu_`J8L@AO>wA1eCD z+x`|IFE@Ug9Qe|H-rLjH)Bc$qz`wu)ztMp&?dQEceLd|zumku#Jn*9q{Fk}`KfJe> z-zQO$h5r`NH|Bp{{M_xK|5^wBO@z;Td-_h#g?~W@@P~Qe2OankXl&Wj_gs`@wZBIP z@IORuLYu$k_!|zvE`Yoai^Wsj`k*3^ocC{A4S&TGqF4FWkH@#$?qEGlPx0Adg%VUym!BJcZWZ_@h}dEeiAlivU8qrCk`%_j6e>-`2ME))ws#2T^S zgA(FsNV<`hk{n0QaZ^Z&Riu1}dJ06ZJQeRKy^{A98;l(zpnUYoPp^btIomfdWjU(M ze)z`TJ?yIYiy6DcRqq#bSMRF#i=`Xws`rauJ=$IG6KmGjRqq#r_~jK&|NLU-mb>cx zV)PzHy>Tu+k`DeJW0d2g`z>nIfrq_=7iC4z$KZ4UDr{SJd+xbA`eEeZo?C}+D|=R_ z{d4075QJ-g!}sf-n<$QkAn3KB5%jGmH_tz}Kj((IzX4*owZEa${yDz;|DS(uu?#{K zeRsye-e$2G{<()I+4IL5S0De?*7VQij=vV$ME~6DD>u(S7x*n!WS3vrr+-`1Ki5-> znf|#V@y|_`&kLWgwzqa{wttRPuf^T|xy9eRe{Lc9%qIKizEEB{c#-~n{yExlE&rU$ zrVIa^U#!N$%SrQ)-?rR8w;192jyvfG>!17kW%>Mbx1h$7gKYoYsc(0}KQ~e!fc|~` zb4R=2(*abEy#NkE|DFCh{(RQvn; zS|+;MYp&z6er%e5ZUw{f?QMEn?w>1{=ES(1fyLN8yY5 zE)Semfzw(4+*l8s0`Wg})<4(V11BJGI_sZ%_TpUp1O-lK{c{Z-IJE+&v;Mh39yn2f zJvq_3#w{`T&&GXNl22gqYb4SZpqO^bb z`sez(>izt4U;d1(RPX!w=a#$b{rqzeyXyV?bGNwbef)Fvu6jTJ+-O(5pMUOXSG}Kq zt}p71C-EoU1Uq`Jf9|WZ^7!XkS^)MMxqp<<^!g#Lq{Lpj&rGcl>`O z;2W2}H`-~xKX{Cux@?SIu{N@kSubS*%I=hK%u-aSxiHAmD?7X7K?C3WBifiGh*(PqbJI z04UeCdp}BS4vKy4!+p^Z8xJ_ARl!oZb=quLytjiaUJ_Vz+JA`#Yq*Ew;~3eFv>w}M*0U@*c!1gNpt$!} z`tP23Hs9`<-uCx4hYpx_&*Wq6(!p$wXx)jf)~ZmJBkk5^g|h6)*7}9A{QL}JS?CV^ zZW$Z|3JRJB7Z-4+U+e=K(*43A4#jKcJah1+%y@F_q2y5Fy&YzMo7m)i!Xe)MsX5Lz z-WA)v(6;UK-VUo6Ax-jua~t6J&W`D*K>kIa`7sZDB@Jx${Fn~_KJ()q6#LGPFUR=J z57Keu4#jI+G#yF$((^wAhI?M9`E{4wmaO@8t+d5wevP-_So7j{GA|b4c{MKv+w+2% z-dvOxlzH)yO=-Nhca<$8rTOhD`+BrB&YLqYt^(LinHNrc)z+CG)za!t&yOAP+E$t$ z3rAUav-r~H&5tR7<2ygjMTI#(8m8>fMiiOR ztA9Z(V0N+`*{_=%9>94E0lnhW$bt5H;LYELbrAX6Ogyy&;kf4c?ZF^_E1OA&?seJu zzGJ-WF5kz!wVuR3=VIpi{@opZzb%&2Kl-7}{t0~ETl>Uv;cKxWvU1~_`TCdH2TvgW z(Qbdh!QTOFKku#mTJb(8akXEIy(^U89{dG(!VN#@f)8wDXA|j@jUViX>k$4qIq>OU zGx0N&@Of_scORJxpYbBHj_1XXnUBxLPl40^?%+Jx*+f1EZDiqxr+Bmv|BraWjh|Wv z{x1lh_jdFzckXAwKd(dhl{xUE4*U<$TK67gElznS3x3xQ;lCsPVZXhAcb{gjC%$_i zXS(a}@yb{ixa$4(_6>8@`|XW9&{gl}>+9jFuk}gL@!_dX`&)f-fwZ{l{c?re?bPeZ zz7Q3Q^s*)KrpWHv++ig+q2w5CZuePT=3z*|OL`PS#s}_42O3(TRh)=?s)GYKf~aM% zBtUKM(nUuaQAZCL9dI6M?$T8%-Tp>=?BE_1&Goxzb4QoRH;_QO|7T`?>YVQ+*5YgZ z@eO>CUjaQ11AHBg7#?UY0CXMa$+(Z8nOk2n4;wKG%GMs+WzwbSUgaZT4Fv<6D%1Sc zlc%7wFUFs)+h0EQ4!U$1pq&`V>d<9HW_zl%xn0tPS5@|6*(X(n&sQ#6U)8gzp|wXa z`dyDnL1-d{&BIEdMfC*=f`H%m34W)n8E?Kaa2;N+O1#LYsuM4o4=!uX)Cu>)`WT#5 zU$StvgCEV+{_bY`dzkI#?^bL7HTm1m?`)0scQf0+o!Nf=ZngIBoxlD3&emvuSF`=y z%=YtltF>Rt-+q2)YqY=6Y(JJ3p@05vwf1+--+q2)OWKdQp6mGj4%EaPXCzsSuK&_q}3O2Jo-c)yho*dN?=L8=}yl4WHZ{aW` ze5~w6ISuK{CHTOolIVsWlggThg4Hy1FO-KBU+&JbYTzt285W!4DV71=tWk=$;u+kz z`O7J2YEk3@H{-7>%VE2I>^+82EhzX>wXNY1QSQEm9r|k3@tgfhc@F^{3_qHa6guKPrO(ug?e(Y%4Mz6s_K-! zv200V0lKiFISHhT+sn zIMHm!%pO=C6rRxW%#UQTQ23uURN>9)mo}HAR}?|w_+1szVIk*uc1U#gctX(J*zjQ? zhqP(mF6ewqa26zhq2|c`*y^`Mb5Y;|d_?HZ8rNOhrkmqxw$GYR;nd0HAsW^`E;5gu zc;2`Nf*G)WWw&tRnJ2mt7!;PwlL!F&#caRlC%d1QMTF1aAkX8lj<1at$$WE?j4kt<>g4W4+1%rDY!% z8Dma_oe(C_#KOoZJ-(_r2s2Mhv=P<(hf5mv_z#y&av_(Coy#T8HbCQ2PS5NW(GKOA{OnoM{D zmtrguNq$LB+{kYOAnNV!;S+$bmn}dxH9W!hBHQVOFSb3+SKBQ4E50!@h)C6wC+N7| z&iIwihD<3o&WX}o`e-9wEU4QJX5%MXaWyvc)i6=o6+L~nFkM?zqC2{2Ph$1~z*+Xw=MgN-hGAOs7=!LI92fpkG9fL`{OD7{o>4i_C;i`uX(nF_v z)_ibdq-o&Nw&w@(?_!%D;aI}=xd%lZu<;$5!?RxcyH3`qUJUNn@ZAa8bptT#!>LQk zD<7i(7{;JH!Hf&q;~0aV&(j;$p0Hqj*YJ7kYs$U}HGG2%O^5M?#0NY8x%B!Cr16u7 z$DWQHlzk#fC^@Q}r`vT086X(n6e8VU=}7nSrt{k5-kTJ|B#;i z`MkE?$e%pA9E|k4C)jdh^>|iPFUDyB-Q-M~y1n$&&sU7CJd@`wR-S#UUF zkjf+T92k-DST(tTvtHpK$xz}Y8Kx9wb;HL4V0Iq}0{+l7WJo=SlTa2+{RSU9q*PCh z*cj%aIjfE5tMGlGv{g(hm;- z+8d`p;xt+uy2C3Rx?}N`%Tbr_VDupcBAl3jQ4`0*y_i+Xw0eoU!iLl@1jaQ1<6pOMgs;N0 ziDu)PB*^GBR5|0vM(A=-5^@c0&nE*Qxk@HDG@|0~KC=`?w~>ls-ZE|B6V6{4DiA;_CHy*@xce8VP5}me> zTj~ikSQXOYadwAywK^Q5$()p_%|$JkpYjX&*m}QZaF!d$ylRE>YuDb zYKvY~8pJ^3PK(o8cCdAjNY{*J%O9Z>kbIyU$!Giy2Wi>*t3Yd8Wb;>f{+8dk2IW4q zG*bPt@?kB03BIZ0xHAkLj%mUq~r_%cD(~^ zUteJA6ej@Vg#tF^CLZ2IU~}=xY=QG3(v6ypdJSeJZ==*{PJqJ;1!u&;R--Nk9HU#M z;vCle3njkc{ChT>cnVXHi!c_{P%>PK189?q7jo(>Mg>K8w1>SPfLrjJs?u`nLd{C^ zh!`ovTbz`7YFH2M3?%9C9~aP2;>l3ihLcm>b_!Q4(5A0Pak%V7SwhvR9XQ8;j}|Vd z!K^RFkza{xRnkE$xPVLgwm1OiWa6RHs1$*iEb?K_PHCbr0V6zl!^SWU5dpK9P&y!- zc)>UZQEwnnwLeUfw2qrm2$s;Sr-Be;)_0k7Ij7-(ka@sNH+-QIP>TzVjgkQe!05c@ zmqnPo1tx9}?@j`6+%u?)u1BbQQt2ymsOp+2d z$E7U@c^MclLNWmKuM!;a@kt_fG;@9{?)m6;03;6E3Sb&nkW(~bNkO#n7x_8KKFDt3 zxFa;~TsWn}$@4Kiv7Tb-gkWP_eVpQsfl$Sw2-xjo(WJT7<>t#<;OkGm9qo^Hizc~Xrv94D>`?Tph$ z7w5q=-|KLk!ja8*+a9OuTD$s>Q_i=Yaaw`?hZE?UnjpW1U@rXBGfr;)_%L3|njf9x zkL}HmGtht>yj$~wYkE6)zwDwsnB#jL;{Bz|Hsfs@?*|;;#UJlE-?s4{Zv}k`sT&8a zfxPr0ZvFA@o*!et(X;U0x%tr^-d7@bULL%6K<^vI=fPYK&H3}CGcVnYw{5)N@n$FK zJw6WfrSSeB($-{tnwQ?)>%mu)N8Iv2=hlOKtAVi*lPV8i>Vxn5@ujs?9{l-I2kXaa z7v{k<-|KLGJaoxsyls!uq!&B6ez?Y|7n1%s<3vSAiG^XeSg6dz5Eb=I3AIcPmazn> zWimXaClA6pU?}_iGEbLtCbd6dH{@Fe+I!nZ*vl22Whh6}R3+Vh75RHI{q5Ulc)J^J zjp0Wkv?ch4H-2>H5sZ1+;H|ir6;1bsJrSoPQ6c;)oa_O!SFkwN6xjh(W?i8v9KtsIit zp%5N~eU`xQGihhNp`}pFg66wfEG3-cqUj z6@@TIUkd+r^ctdLeK<8*kH9cBOow;5wm?u5PAoSbZzXE#dR7m7I-FR%@E5alar6QD zT!g-$_KG)QGc2-R-M`=(Xdj6M#+3ph(v0^LcNF{XB&dd?*-7=?K_e96`SCeEXq59K-Q6iKLdlu1KaT z(1r8C*2(yw)g9~p(BEyle@EYIyN-61bnPyn>YP~GYX*?2qijvOz^DFf z)H|ZA(772eNvYS4CpLJ)c*%1Gh5huF>8$5J7&9eW>;JL$Ch&1pW&il3Ei@o-BSi>{ zFiMb?MN%w~0))f!Ln4@qHF~$#CE2Ql(wOnp&7=Jpr9xUabr~}i@>lYWl6wS zqyhr32#pBz4q>SvrL6sZzt1`6-aB*eBwgV5_x=Cgd_L{m<=p2y=Q+=Ip7We@Jp8e& z1J5;W!=&xERf;38b-GsK>-oOD{phYd0HZUV%dAp}TlxL*>U&=6Bc2nD`B1?3-SU0I zY~*3j-he#pfu+Qhe}#RVcu{fv5!Sz-s-M>e|DE%#0rgjv)Q>SA2;tA?)p_8a`fqf` zaf<%Pi6XzgUy+!O|3@YFxYWAI0q;vQmz^9mA4 zY0pl6>^e{abaL{)8IcMfsipGF-kN$q?}ZX~jp0qcy$+pz%FCAKu#E-kAb`NL3`i=s{%= zElr;7%6C~NO99)WMub`aL8PU zp=>Yj^EliJ9d4yp@#}$(4*c*BmxRYZkC8O|T>Ql{qAU8*k=sEw zTKkKczuQMK(*7>5wc6SUf0qD^zv}{kzZ}mT zjg|7umzOJFI0nYD1fQz3gU?LV-phNlq%U1xjE|M70)X=JUHBIUNhR=GUHJ0|pZEDM zqA%!md{e=%MkA`F5j+rW82Fd@;di_6pQLu;y>r0r3OoUkT=*@+!=LDfU+cpEA>s4h z(S8?|!e7I={j&P3@E5!;p-&6oLI2`~GG)A%kPy#<v`W1fZyuf9sREKH~f{{0`XY}rdJW|{^^x4 z%+onC=daS!lh^c55A!ynA4m0X3xE5k*M%6LDkq=OtVC_18JNfn0wlRxskHhVX3+y^ zSCE{D2;`-|p=~615pZZUBXIC@CBZH25=b&lU&+^E_pic3)X#)Ozuo^Xo)+8vv!vY8 zYX0PIl^@vE5%d+{%YxP1t@48pMp%bGAovKn*`>2oUGg)qlnvuwzw!%c)x*XwDofwY zt@3r|)>eGozqExgbO0t&(t6jAIJL-+I0lVa!_RWJ$`4iVu^fXq0nK6h*KJP$xjkmw z669Z;wVT6#`5^ydy8B-EvvW!978tNB0Cyb?Oa1=(n#XGI*6TwD8p1#rJX9KVGWz4_ za5Vd!%IHNOucRZQ{eNB?fA-#doYe5-|)Zv_?`u{0`dK70KQocCO;58mf8+7ZC%_4 zJa9icaTNYX@a|{4cgJnfWuUVj_whQ9>?`1nabMq4eq5fb*8Jd%KdbnCBYA4OUS4Zn zNYv)TfAxQVmHwU??niSHzH?zM_BZ(raT;iB!4H31`7118#=Fqa+>6Aibq%Tgn5vc6 zc^r&Mtnbbb2GqKj)GFfy2SSK=XO%4Q+SwZ*L7D0ZfU;_*GX2nx7h2!Sc+xYT=YAq2 zKKvJTRgpkmb3-d`JcBoHe@M&pINIB?X*d_y?>o#u)uMOY@$X1>WcYEkOP>trbDg4a z2-imcU7n9z@5kf89ZUH_=zCcJeJ>z=djeoA0SvGBvA+~OBPN)K_%r6iCV>%ZwVH@5 z0h($IaWiPz%lrJkxS~(}bNph0s}?`}jqukK!;6sa22hBAMBg0M%j^7?Q5f>ec`i83 zQ8?v~ByKhQINZFNR5x^~=%2pnep>zbbEH)Vk;z8_-Y;<9Q~&g#+?J5(1*c;4#2bv% zT8%wZ>D!tXp-UWE+{W<*@160~FYrVbmOP6YX)G-12Bc836*_o1ukhzt%%Nou^pOm6 zLu;~xqV*36KSH*^0nb9~iwykPFS+m&J^2tl+7d;3#SWx^$fFm2E8tnFbHE>pZFujP zmYKpfU-FYPD!`2W_QLBBc)K|8c<=b@qX{n(0B_wmA{PX&2jA=V-v-s%%X{a*wO`-~ z4xGZaAv0!eK%5svBPhygS}U~x)=bl*T%6a_PlcH%Zu~oMdsn*nJ&9iF<-N1t@Cx>D zwh?ik84NBP|Fmp<*+xXvX4J8$H$F8?`7p|3Hx0DsI#|1nXpiJ5O8NX?K-~JQ?Ol0k z-OJAa(>?FQR|4@@*SmH?uo23IXLL~O%H6Ky3*P5( z+`Y)fR>Bvhql1zC^Nk%J=<$*oCvgZcf*r`Zfl6=xmK`r_e7uqr;$PuThhOtO6a4+N ztjg(M>bsTr1pfO63y`zCj5pACS33Hx^Ljjq=Cbkw-rQp(KBKqzn-@eSb>LGt8;?>` zxl8$Q$y)fQ)t>ZkAMUl@>tp|FXM@*fDge&LIDd2QvWoPF2Tm)#wNe~!Y5hi6Uqn5O zN5t?rAKuXqZ+2ODT>{Srbrn3`JIAU21&{N60cjM~W#L^Z@VFjE!Q;IH?-=6Ovx6VM zN46{1-sSk-w_TTe$84#WpWFLw5@|8iOR z*$_U-b}|-#FXRVbDES#i-yvHHi(rZA?>9)_^#MNr3YVa`!PC=T2C6oyy$$#v-^%IV z68n14w(Jt)KVg4C^qr&6c*8$;?m+mx4UaXy53=8sofmz^dp(@7(psN+BM=)DZ^()w zMW}$vbwl*i(mo)G^769*`b@=(HbVckZshz6Da1doKI;pJ$=~@IN1thXLJz9~K5Swq z1ju>AKaV3yd(wkP#?Q(+^uGsBdn35l`2|+`20V#nWlB1h>+0rLU{=STl;c-;vF-3; z+gaGF?}sVhit?=+T;5%xUDye(mE!Mw&ma9`z#nhz&}Swb@HS_>iiJxUuj)A5=)~95 zc=c`}48~L{$tv$yrR#j$O^ugR~Z_LMq7U}6>-M*j=YYfAM_~JL?^_wAim*#|GdB}M}Hm{8sX5fB6+U|>mIVkM7DgpUS8{{ zQeyXfBmLuT7%MZu!0d zI^AQwciL&CI1@6WUMp~`N|XN>QIoOAH()<={Op+zkKmC?V zn^TKZzs2Kx_;5d^MjO1H@nByG9Nrrt)Nl^-!?|ayp`RI7b_g7oUwQAq5q|9nfHTj) zX@EVP3wt=CKR3`&E0h>$i162FcVlN;=RsI{B-Em;h`6=^9Otq{1rLh&p$_xcInl3 zp8x#;c)!u~ieRm!_WeX2d9U->J{@|6SfSxBR;Ch1H&Q7*lDUh%(QUlB~N z&fewd!j16XS}%2IDE=GoojBb8EdQ-}mX|wGJdEk*^?gOdcNv1z}J2Yuk`>1dD(+I`(cb0 z7_bwLy|YsDV96Z6WkkEzjMB<~!Tz*Z4E#R#r#%{;3^HpTd&G%fU`A5SFLqz?zG1;7 zy}Z_w*h%c8TN;cUF}{O=eH+&cW*b|bkV9jwIv`;-NBe{9nUXl+w(qfLr*ceumYzuMC>Cmf-lG(A5Q+y|I(iaRFtKE?%m<&f4;o!Aphip=zp~PUg+No zO;kdEB~Q+J7!^SqWIFFoh>lpP3jw>A_lEV(^Tr8xMZBu)csm=}*!W;KTY^8c1e1I> z7%*SAV6DS*cjJIYu9Z`oPD>q7u&;Eqf0KuiFEU*V@Dzcs;#- zc+b2u41UW!@OWLKuOb2PmJJ7Qr3W6bwFxx%4c_m^?~qb>)5FZ4P@UhxV?4y{&Ftm1 zcA1h*==e$md@C97{i3mF!}PydS;sY-uKjCeOtIAd{oA1z+@`1=2mjLgj#hC`PkmT_ z)ECgk2j6BJ5ocXeWiNvsEC%oBLl3T2>O0=?#Yp%TW^jDrpz zd7a-CltgT6wx`~aQ6rSbh-_`$e@y{+}-f%Q`sr*1x_84jYS+97=UCKsNxJH^+ zoQ`DYqh+b!aP38}hp`U=Mu+PXdwKZR&qvR2U$0l*e(-JNSJEDL)1y)Tkd?|3Df&e7 z@P;#kT21sZ8%j+9R^w?e@AFeom_8BDyMT-G2*1r`s6j#t@bgF;I=%`D=E!tce?Uf$;?q8Mp@ zqm=7h$FFi(`9ZTcK;LCM2h}(7vtj-8Ig#*A;>JIaiH+c&>L-sr^EM#lHsCpw?d84G zfJgBJ{kD?r$YtecgZeGod6)V`en!S0uCppHKO>jdeDOslqmnOn=EXqywrjpP-Om@j zuY33+;Qcjt9~h54!QsblA%1(jpd$M2ui^OXF)2IwFoxG&%HJ%1a=NgFZl32Oh4(|$ia zT{OoPp{eN^1n;`x;0fBge|W9YHvJuh`w2dHp7C-woqG+B*ZD1l39NSh_%@p~fx?HoujDh# z`cdY;)qW}}o+ZmAbpLslOPKx(_xSnYtkn*G75Cq@KyChoa3@A5zKZ|H zB){&VcP-X5SgD&(MCC#7-btpu9FOyZulf7!gI83)v3*A>y&XZ>VhVWMhy0X(%BY9y zA3+6wX@_11lq=zZ7X-k44ga-sNsD8TT40Z61=ypq{lf92;m01(LwmUNXM1_?B<=oN zH94p;9e4!~2K2GSQwV6Wi?EbCq-;4aKCQ$@uSemv(^s+{rSBR)UmX3i!xx@*b>Leo z#lBPh&U>>6I5i%R^Q{4}Mhh&gmkM~d`X#3xp+EL%|6l?A0n)$QPyexH`?*`_@eDV| z3+!n1ek?bMEc4#&zq?4UE0w+Hb$&ba3+#P5-#5`ut39O+UVXGu=)~oUicY*Y^9!jd zLZ<*Y&;3)$hl@v*=*MjwIJ`IWP^ovoius;eKR!S7!C52tJcJJvKD>AO?RSI|3czQE z4^FM%!;?rA9NrtgPMtwGkpO%~YdA_@dF?emH}=29ZJNO;h3QeQJ?_Vf zWZXybj~2dvdL;BDu&L@Syw4zO1 zMd^6wYP{cpr`qJp{Kx3T*I_JVe!h75rLxy;+Fp0F;R}>}@mf1ViPQ6a0e$q~pppyf z#j$L!Z!sp(P_J$wA0r0MK;V~XSLO3qiRk*>qaWvt3iV5FJROCZKqSEdGf4b{qxmFYN z&iG#Sk$3H8TYm6af4lZ@@gM^vua>GFg-QVP1ono~$L|hP!pJ%EOP4$VNL;;G3KKlFlHAr78eF_DE5^=_`9MAGBb?LCBI@m}*Kk~?X!;ieqk3}(r ze9ibGKtJvDyhCpunt{Opm7d~Dgr;QQ%+ZNB+mP73SdbYi#j#dyypedH#b)B*4eTYm z+bv{)Md1*RiqkAGbf1ZfzX`iPbhDxlzXLn2A9^;BB@%xpijmMKg5Lo7SK)Wz@?r2h zn)ui*en%4DYXb3m>bXx4zr9`j{(kc?_}xtWJoLL}U0M1~`XupNM!r<^JA63&EaKy# z-+JB$)9>=XDf%ha`*Al}+X*?eF*9F=NY%Z(HbZ7Pw@sZOm+uSMRP9Irb&Y}aqnCe{ zi~R6Fj*HdRsN@-7`ySrt5E3UMRM4Ao+Fnn(yOqvMIafW5u#X?)hLHJ(OV-UlC@EKj zjNFTU&9=0|KWHbN;Uc(kUBA6o=aENqi^BHFik(|RiSEGp{r&%&WJW#t$Q-|)V&U!o zM0yR7A2*3!`z!V>ORtZf8IE47@V10rS|3-r%-i8G@3>xGm&{K`xa~yA{OB^NwS)Yj z;e}mzAttAocn=d(s!+_;@2$uB;T__G*XqLSB9Ci$ye{#-Llu5_tDh!Sy!d(GwRzz2 z+JtSj{TW>Ex3xcZ;kojOMQUi+*ab+x5=(@k<+B)CntEw3s86&Wy8TA2C$01~_{`Xv zKx5^^AC45iRCzi>@G6b`J>&6jhVE6*T|a9LlXR|DJ{GU_7%`E}cLcQUp1+b-%AT)( z8~GS#qtZYVav4hM^)BA{f0dIKJFb`4CH&L6tG|DyOPyu<$4#?EyxNmytNW+*C4c|C z`;^n)rTw#ow|}bdE$*LFx%I!Y6Fc1C^iSVr^^e;ReI(40svmf5)*%f&yzPH}zudYCAt&9J_Hq&3le%SC=kMg>u z-DpOOYQ`Y0&Gv*-@`L~MH{;u=!{OhX{{^CsJYL#dzcqPPl-~R;!+4{v|L2PrjKFU_ zr~3JK*%J=GF}@VR&V(wy6oC?mg2`N^D}M4aCC9ZOG9^F4Uo+q2=8G&Rp_MV;ZWN3; z@AVkgN`HumA3pViaQMN=J6S`%ds53k`A#kD$GlP`pe^_OMajR5M-}n-q57WJI>9K> zksmz8Pm6`V?`z$5dwgIk{S`A%D zT(|G#y~zhpt;FMe-^qS_|7&Gwd%FeBH4Yr!JM#rygwq-Tr_%?gMc|y^z~Q|U$BGb6 zIDmeKDLDC#fOmVyyAHBTJ`{k%`p3)I_Y(iKmMaUygjV>#{xt{*9QA7BHj*Sb@InF+daX zb8kC)=zHn&4|r`t!aL^&1KL>y07drT*I+6~{>#eGVw7^^$L&A0NN9@%I179kdk(7W z$`bo{vuMr2967wey!=3xHOPj5O#jD6KP$z29;E_2G_+E; z;Bg=wANiA)U%dT6Ub9lnA5!ohs=%S;u}my#r8o|bWw*BO*dE&zRIm!14OE%@N%W%knb2dU{)Yc?^GCUPUfu8` zG)LY1Np2X&!(k0uTB(A%s`%19t16M`05T&r+i12;dw>~y5yEb<+v#C5mCY%_WcXw_@k|br#kQj7h{7z zTEHKDaz@n4IK{{_;n3}#$NLUd<40;dd!&8&kEqH{#&K)&T5tw^)SSG!;9xmrt+6GZ zJp)XO!%#zs8SxAYHHA9ZJD2yVfQdQ79F!2bni-bUX=h-3{qxx#97v@yy3|?G@|S6NOeB^4Ay7MZ$?~Vx2hB6GDUY zPD4{O{qf9t`$n9}fYY+hjNv4-Xgt#w&22MEqy^{UCR$>d<0@mBrmA`X#j)`%gJ9J` zRBByJ$Bf^EV?1D#DAk1p8=hbb7L!9b@$IoS)dgq2F?fbEhHjcmY!$XTr|KAxpb46dJb!Q(yMnd(+&x~b0?pWL!;)&$B#d50F zG@Pn64X0{RFzj;#W@1h>i@kGl^<$#xN6~}P#7R(vh=8>q|NMs?C^+|6IY@bCdtyfR zvze-Bb{>i!zdm}{%vp1{!~ZP{FbzF3+TYkZ#=4_r^osY#bhV6*Wu{fe2BuZ9Cj3_K zhTr=BEh|o}KgIA(W7y;O*Rdd&2P2NgY8HxS#{yba>WRd*sV8{CnU-_3>Vs&mJ<4-? zYQRZoogHe2y1t{Ye{@BraZD^b`b71mK7=g=$W&k-f7V*I82!sY`}&%99uc1aV~^>T zR5#Jg$I;9)Cl*rR4jJd+IrWX>e`Q|4d;1K$<{{6Y$GdFfm=m$6L~s*0?5d%s6~7QJ z_0dqjd(Sow-QnI-9}QjW-c$b!{m8wi{u#R1y{EJk)LK}nkNT%@njkFq)Mo|m&PV?c z^-~{};Qt#iG=%1xoeRfQoTyOO^g(&*D=+?3TVDLBy}bBSoqO@86dU{}_MIqvNIdWu zhkcjcd$bksEh|ro|L1N5|BG1FAA4LpcUC3SbeJU(%e)<*JXkb;Tj~$QCO;+fn6ccs zP$#G1l;_i`7$wfUX^_G_w%V$s@p}^ACw-XF|m0j*m^gtph;jZY7FqUVHNTShg`7)8k?M){V#O zdJ0Aif)UR)RyIw1qIvQ|$(;&Wym9qWb2fy>iSIV&qIPq-ui2XV$NG+iRiWf7fD)en zBAgGsTp7Pw-Bv)+FKi9b+%!_THbOO!XW8U9)VOaJ%xKXwGoy*UQBf>Y58VQ7a$9p| zcl~ko$HsGKMwRi(ye$?3M{(1R+18~z`1=)kR-bv;UjKa>HInowXsv7qYMA?FkTjZ^ z(Vp0AYS%tp4cK(+IIJ9R5~o3If=r;%m?=I5-M#vVY-jWlOd#7bD)C>?PPGhl=(m-w zk@GZN?4rRtnt4}H-VG>|*fAQag`$l?bCMk9%zoi~q4pk7y|Bm+L@ORpIyaiwCYosi zD>m_La-3`~lYUCS*B=+lyaP6eaR-+lY2PhGpk+TzTlRm*nd%EBIhH+%4qptzeiV3H z4Eu>E)3hs#F6z?BSO7VL?YcSC-1u<=)51S^@+ffm+A{Y1O?wU9I?^!R_uX_XdpuZS zT5a?$P?&!mxT}lah5qN?lKTE>WQl2!SmyX@t<9!_&yJ7h=10jDX!eIQ;~*Eaotm*b2gfER zDw}$YGLqYhksM1S+0}@pdWrE=CK9Wdu)?}y$0y(K+OZkF2wMH^nyO~}S6$yfrl!K7 zwCEf1XXad-kgn6Zjje>()t@X@m6)L)-nEybNy>BDHlCZkWo(5lO^;_D=Fys(KC1O+ z%n`=BTp>JWf^h;ml{l$}lYdmht)I2G=Rd|K_9aJ0JMD_-VU4rqZi)X}=1;=$tos1L6%GjwdGg~(*C8jm?LV3BSEW!v zH;>)XHKTRN_yN%@BzhD&E1RfT7tJI_t%E*=re7KDd}Up9!kXxW6&2`loGM=G|fw7T|!Rp@VuV7g!% zu9#*StBV7_{-zd)C*YkP{fdH48*Qa$;sc;uZG@%%RJ0KK0&)`m{WJ6rSJ|!5KeUBV zrBI`l6Oq)s*It+G0XiISEZ=`9-@nmI z7tpTl(m+sxA7`4P5TnWhL&CvZgK3!^D~{SVU6_{|Cnd&(-v8h@u<{0z&SB2>l;8 zJN@v0==L;((X57QDKXGMX5f7tfBUhi4E!PZSaT!M%p%l(1e=mLSk=k1uw17ont@aF zL$p4OM%F4Yjdd*qqZMF0J7-q&DTX*@2w_V z9HZys*@fW6ebIivu2is_G|G+PJwQ{b)aC4m|^Lhe`F zQ!&*@bJEBAY*V%AFUDh0PEnu=a+SSL8=V@UG(gWNR5%oDLjEb@ok1WZ z^e6j7b2}&@nF+3X4sS@u!qd1ovs;?DToZ15*AR|2Z>+**IE~dqKUMam30^7iXPh{7 zFzZ4qq~c?6WAB%LPg-uJ<(=w)A~qnB;b+9d#S&K{QH97kRzEz2t7njz)5TS7NOZwjw zIABiSG!dqk1DepM6TcL{;+KL}V2zp8vFz?d+e$YHff~cXCD(M^HcXNMtkg$QjY*$uB3z73M-?bT?;f zYH(|%P8a<#wFV00rD6s0cf`;}QXns5CY~flSBUAc(r>HID62q5zo{7IO_mb{(t#`3 zxMKZbrI+GqsSbGs<_AGLM~6^$b^O2`$I%hBQtv`d5Gyc7H5CpGV__SmLTNusR4#eQ zs9f^TBvC|)f0Ew|(lZjNK;tN zF=9Nk8vaLJk>VK-|Dy-8PcMTV5zn5BK5MK@98si&(jY;9(`+<*YR!0$i*YVojN@UH z;bPPoO#~MM>!YEEPI{gm#A-W&7>uY18vaTe{wgbd2^)<<=j%eddJ8Ex!%DwJ8AqX| zy3kq-mK{jr38~gfKc)-)L>Kytw@@7mMXdDW=paH`t_%GZg~SnwvOtRfO?PTY59>n9 zOrcqDG-lAzXf4&xnO8vZ)T5vcRKyF#Dxxi(ThtcEvUfRO)9+`f_3rTu3S|}{p$>k= z?2x_v8(Ke5nv~7Iq=T16@nv}9xEqU2{7auTmQ6xUUeFfkZ_qCQ6?}e2E1&l(zoR{# z!PkNh^u_Fo1kT`ORby0J8)c9?$`S0;nkxH-@1bK57_X)f zAmH&n#zHT%Le5vDhWH&0p|(=r#1;7|xkHfHLua+pxLT>Fq$XH(?a@%|3V$aHmG}Ue zrJ_taP#1-;qA=gR7gVK1g3pTz3qaq6Dn#)4KA&luOd@@eZvqrZVJo~a`ba1XG7LSY z`KxnLE86=!VIh6`=UGBu)Iz|mATC^h`J{2KDS{_0vnMwL(+G-^QW#=PSp>zKJrO~b z83^FKFyYVGC)ir{IH6TMLSmuuEmpc4kSL|Mzo0b7mZuWccnya}QAE`cOdC31`PaY) zwBADFv#l2&JOe%t@s-A>r4*mvT^NMVktO(~&clOvhG;jn7N((VTz!rDM>F~~U|)t| zr#3XLWF@wD5!{)=9{9k}6I9VAjogRcAd(Ij+WXsz`_lNNb5TtNf=z|6Jq2glmAU$fnOE^9=qq?vK8YDeJt|+`*ba$4}Dk8oABlLdZBfPfz z0W=?GZ6(W~KKiXpnO7E$N2+_Y9eTRVxKR8#)DQg}+8lqbQu%X_ zgC$&lZUydQxv87z&wUQYONq1b=VV`Whxz>j!mogQ)Vpd_%>iKtFn}s8_UDpcE%oJg zfpMl6>hb63kfx6m^#---xGAuRoe#MKCD9+EpwZtla325H=RD)T8~x+I>4d3OXyKc< z;pbL5E>-zK&@YwoslCNbI)5cNKKrGURpZOVXUAgVZlw6^gR>Nf&5O@|bi;p8e75TA z;+tV+yAtu)is9n351+u+C;m4+ySedM&V;-+)fsh1FSTodO9kUlq;Dlik#QUirRotW#59rhB z2<#@uP2L~eL_7PR5jWYjZ~;6T$6xz|;wQg(rPSVz6hC?JdBrH36hFE48=qGEgsf!7 zjh{yRRv?Xzu(dQ(-te%?ba7BH+oLq8U94aU*8UI2nYY2^N~t>7RuNHG`{| z==4k^V*Z-n?~1T7EY)<3rZEEQQYPb>$L+^N9VB<=bp>i>s6*0!ug_;bDO9~>o#?~GB<*F66(izW&CE0 zSLW1m9&22Ir|n_9qUW!U!rdm%U!D06r)PBdnT+6$)&0Yj)U!%`=2%X`&qf|g#w%Yg z9j}}N1yVYHWZlAmiVqK^>}#$z%8iTof`G_~1S16}9%1rd znFMC$r-Ot?jfe+_oi9~+Ve!lv7#E-6jEj$YTJu?H98*o1TFXX?V{&}FS#iv7wSn)P zaq{NGG3Q{Y{93ZQz;T+=pNjupvr@FTvD_R4GGD(7mu?^v^QR+Df4uSnRi8{@s~9Gx z%wHvtDctdl^8wZseb9}}tCJCN1_NZ3$u3)Se$29ZhE+v}R@*QBRdJ~7!^tR_u&JZ~ z=|OcXzJj)^MU-eSRs&GU6HEk4fmvnW1EmH#z;+gmuwS#%+X|C;6{VGC9(IY6bjR6u z8TgBg`G*Lt7wZicp#C z*4<(7DR~I(ARToH=0A!oR1I z%T9oyr))F6nK%bs(Fz^VLXunQ9>6Vh<3G@uTu?X!4bb*HAGCgU>`xg@=s?}jJ-+-D z0_UXc&@TWF7A8UqbJ44`K`+=Bu0vgm06!n%!rYQz+3$by-g^7%fbRGorS>184kYM^ zKk*%02iogL*3$l0l(E-dTaA2crduDOP$1zPVq&slyv^a?$*JW}XJb@sE`j{fkfZ zU}rq6^mtn7fb-xy_IW()bFJ9tFy?=rLM@vTPpsW6`;7WwpTnDDpT{fv%&ogz`^wmNf_SyAskRSVNoghy$Lapt)>m#7&@o|-c#!~ZBzs?GNO;0lqc zTb1fW$m%GQyJaoAh!33!)%i+a45<9ASeAe`F;G7jNxByjk0VrzhRNZ&RGUZ%fT7Jr zIb6-zZ=*?Yes?TP5pxj{yDa%z`?>N}e=iymid#*C;!Ps|Vj(=TJwXNllmsrW=FyW2 zI)m$UcxlpmoRcAzm7x2b03$_d?C6CcDHrR3@UfG}b>U-5&PY&pjW=%3f^~Q<9EVh{ z8H8I~A&(WrRrX0o6-(QG=xXr?Fkb3dLp!oHzta3wxC*fo*PrM&{zQ?Vyqw<)E^Z=4 zBftvYM5k~n?(DfgG{QI)w?U8uM&Urbb^Y@adpM`bwTHg|oIrbc7gAL^`$h-b!+`wN z>Q>?tkfCn!SL4}cE|^4~ShRcstM-fh{z2)wGlUMnN4aCL?5sY#?sdxgGxp_Z3=Dmk z*U<(o=a^=y&oqr0y2L{d=z(W3+0)tgImvqE`vUWwwSU5Fx6=IFx>NtZYu`tbga3?u zJ2=9$&pvYa_N{xJ?b|Z2eI@*GvH~mq(Pav()9u2yr04YlZ>;me8*fqc`ZtGSNE?%= zll?4wi&*D}TVP!lG;hQDnwMwYhdm~ge(GEZU5=bj2Fd}^N>^a+nF-ERn6nOnTiRF^ zvL8N~KIs`y7vHXFk(Gc*JQvT@S|+)*6)U;S533qAXIZJQp{_H#nP$&vZ~xjxoj+{q zr$9^nFVl$V`qv$->u(yS{yaW~cU)Y5@?yi0_vjuQ1umrZc@@P;#alIb8>_IKZ3mN| zj_v#uJvaj|_#E!RXS|`uA5JPyj|m=pkhUA*QV`^$LBArC5!pM_!cQ~NdlViNo)FNHGI1;t1q;Ho0rPN91o;0x1)uAP>`M{1A19}5A16!kRHSvqi;T{NS@~VYWFsJ_s3Q|4P3f1A0{K08zNz(DPp!$%nRW>KF4Gi|X3F|($pQdGVDqkBjiejRU#8x_=6k;4A0A(N z33@#e@M1n+bR6ja;$*%U40tgWFKBmz^nKSUqVK^WzXyG-i@Dkw`X9+$i%I3q55XlV zJac-%(K*!FM&}qVu^&C5oa|f69wr#AdtIH=&8J?Lx^^|>{{lSicItHW>u*_D>p8YE@$zW>0(;# zTDG-tOF zjcNQKahk2vb@QOPS?VFbA21Dw)h;9pW$x zA&_A%HE}z`#SWi5>Z!-rZG~?d!X&;29dr^hp82zV8;C}rl3(PZw}I=(=PVCg$ROHT*@5b?)#30`yyUqe#^jfbPOkq4Lyusqv74`fk$73@Xp1gm*DvWfd~KLGG3Ve zrQW~tMW_EYnOy(Ikl6SOAA+RDZ*M!el)Q!g0bBTia3ca&`~m}aTf7gn+qb8{&OuJY zReTZT8!Y9EAm89@z6f$NTJVDNE%DrvN~QNdpr6n9C$=+Y#^JhQ=T~%|cqk5=}_-To+Bh97NOqbx{>v#$jU|7ZLC*BCJ4sW zPEm|Yo&8+=>m9IM!L#178tWaFvpT)rK~|7qJ~#?LwlWbbiZee8335`0IBCq;VJzR& z3oIe;pes-u?^*d^_?u1L{U7jp^yV%2)q$6$FgpXu(Ct_Zfv6e4n#IE>KzN(e&!H-$ z)aLK%xQGAGM=6yQa`VbOV5QGs=mD9kD=5wgRm4YR{@Fgt7ycRr>k zpB3}NbKr@u<_x&~gNcf#*2-oMQ;goyd z_9yhj?Gc4Zwn*GQ60*N>FW~s%_IkI4;ns(4a(*(QXC6DehS)w4i40Ae#QD~=(3y`nzcdcI(vlKc&7-6xV zplIRHB@(v;p3Kd!BBE+{OST6!gk)n@`-8^Ol|Jz)I>n_AcbFJ*k7*Kfr#A0ZX# zJm&Vud>K-Siu4(rP{eMtuT{+)utSe^T!;JZFUx-3OIr%P!;bxQP)8^k_DvnQ~MpqpD z`7W3LLCNAumK!eL#V3y!K;;f2kFeucK1(?p11c##DsWMlu{U_%?!0%orm&ZkQ46d_ zlt;8j#8L7Jj5u=t3j5m&jX27?a^m#yEj%I$K1N9^7!hPN0P_N zzYZ^tHZl{Gyt-WTNy+2i7i^?FZt8vtom8%f)Y|Maa#y97Gb zlPOmkpMgEQ{x6iD&wE+nWU*$jFTzZHL2lvDhO9@kf0i)vBWu;l*|USZ_6+NNWKpDS zQKUB~vVRDBh;jLnxXyF0?~S1O_Pr5d<7jSHMQp;VIMNz0^na=Tex?%nApd@$Bu4Q&AG2)XR~P>&vU^#TL8uK6@mI0`+Y!7_2HqFdK_=< zS8*TDonBKVTQ;CMAQ^)caYQnzxf38qBlc78lPlTARdyvr$?Weiw6oT4+)WR3^FFZ|A@xZF*SFmRsNK5?zySSjN1&lh7ar-lgQ5YE0zYewEz=>m+|FNic} zrp-c-LRw+`^9!)CQc09z1pj<~3wJm8Y~fi5vDw$)PrS~Zhuu)rz6SB4eGTG8`x;?&#Av}=bGQ%5h+@O>eXNNFes%HFl9TINT zraN%3k?Wg&52DFSd9FaMvY&#u%b3v9$pwto96uae{vDMYv!&kg&q_6;ffM^CKB4_| z>yB-9ge=KQmFQNF#3rv?@LFMCl<^Jmeun|JE3-oS!qt4H;Q$~#{di5{|n8rw?E%#;<-{@r6PMX zl~_mNM7(s#Q4+tzs2|D;J&O>rKYqC;3_MEp*EFyH-gO81x4u8!0n9{&xlv1{!oG*l zVM*jt^+R)R5lFt8isx*Zsz1!W2-Q*XthUk@LoM3h(bcQ`cIX*)5-748mSV#!*vItK zR5YT;=2c>zS8dm2rJv9t%J~9zHK;n9*x|QL|F-iN9NHSPx0O1r)JOQJM1`{F-#C=I zuMHbl4#ZZxQMz&E)XZ86#SObEq4+v01{+Vs+E!=lN-NcX$K1XW(ZrJNE3Kv5;ho;X z68rzNU}hkmdCPwK+j^PwI&Ne6Wnn(ET5@Y{V`*Ld5V&DRE>X)7nX`eT-op~xp>Sgr zFlTe7X*OG0yhj<=vXD`A&q4BedJ^cYEUh*+yQpZa+B|ma1jFZyF$Zj$Dk=(b0S%q352jxee z^lQa@+^1uN{75U!skML{$vSum-U!NgQOhaPAY>2iMq>^K7>XcDYhNOT|Aok_xT6pk zYppJeLPI;KxVG2sx5sGnUo%2mmDYRUX=2;^ZE`vHfh}ADWh-gOwezX9QG~_)bwJ&w>O_B}H**D}9(UP~Mod=G#^F znn^zXT0@uIWBb1?Jq!N9IvDJ))EM4pl?>hy>a1dSGvuj%!~Eq`oIUGap?q;<`b0n~ zFsDGZYh&P52En@)y-nsv!=c}QhC8F*G5B}p?E=?}IQt3Ka=s4TLgLvk{sJI;^G<=` zG}1%sZzP#)@_J4g_oM#JT+ew1Ci%FZ;FVx$cmJ77aJT96O;^CAk-FHSKriUL6J0l4 zfcv(qm7-qDauVR~AVZYSH(6=!j9xnD^dqYDDBU>UA#NxS(|Wg7w@6?IbeP< zxS!v@Ca9k`AindT(a)G)gvxdNaVNgB9=2oC`};S)Dedp;*?G=b$v>g-;LlWluVT6K z{hgd%+SfPkT-?`iL50<@sE|Dzps@@8zzZ@$av{p-yD}LQ5 ze57A9ZWJ&Skx@wUeb|%leaqMrSiwN-2wl$DBZgKwRHhM9>)`4HxIde-y} zV}Bx;)Z_qy_Gc2VH^KfiBXxe`?9YFV^H=l<*`GE<(o6iC5$(^`8(@FhIZ;_UGg`*} zYzVyZLGV6t`}3`Nl{h_L{9k ze{<)aD2Bl+UOeJ@>;;bb2#n~k8umLF`*8bHjtQ{2{Ps?8{MJe}Ucn}+scj^vRGh`q zwG5*Wo)w@1s+@pmth9gd3Tx9tr(K==K=1h5>iRjo5ystR3^nJ>ZhOY?Nd62T1S0wT zSQkl^f?k5;6Bt=}ki^@Ptj1M1H>)%@*v&y;JEk&A?B0)A)-&#^gR>!it;Vf_w5kQ& zyoAi0gi;*;$l+XST;(mlu(bR#jFP1M_i>@eVeqK4gBa6gn^_&jM(o?`^# zrYIPtA8~Q})vbXlIDn?>0g_(=U~^3lthMwq=@U$h%tJP2iZ>J=Py6Jgz*uSS$;tZQ}{>d3Q|AhIiXJTB0PM{Q~i8_R^7Xd5%nN1)nNs- zg?Ha|%X42F@`Wk?>S%xYFQSYJ2mGi^IH0fyFI17!fJ{(aqi~eGD4IuI4TI#wHbVaQ z&mh3yyk8?Xjo~wC-^&DS5xdswC#JdUC;mXemZRxlvFV6o4p|OCv_JYh7g1~pXll*| ziznb@;C)iUgs}ba24_?iZdt2{w2@WMovo`)oa$70$p%*WlXs-bYE`AmPS3-wLem?C z5mbu$%*w)D3b_p^c|S|~XR0MU^i$Ml&uKC4`MG5}TH-#(JDq(jtw=zOONt#y^X3T; zO~rK9M#P80qbMILKC}a_-T2UHaLGA8F`q)_InAl-eLSEO%LH}`%Kpz0y^WclxT(Tl zQAvEL9je@^q-1{LxnbrfT6QBcp1cHWSvQM&{AAz!#DN!2>( z{kC4k-6pROI3At}iR(_EaGKK5nmiAU-i*#XieiwENGsd+u4CJjf3;!rC&xqDOYNKD zJGYA$Yim&2#T)Ct-hFXUKmQN#XUzG1NorZwf7Sb+o{FcN+}~%yGb!%x8=xG9>+e*j z>hD386W=wszy0$k=fLcH`}$BQ8rJ=Z&7T}Yx1#*~NrR}04VXXqD?CIy9y11VNAXtt zSzKcIn5Uo`!F6(F4dmv{pM*a6*s+iQ#txR7U>~=Air8(8ear?_^aC)nSfX%RvR|1|$n-9OMF@oQC{Gvhled6|U=|!Nz|Jp}6 z@ATkhx(A)~f|2awv5PmyJ{}Co_v*}pp>94c`}or(LH+#ywtbui??xon>F<&3Pcs c3fW5i{~CV8=T#+;dw7PQ68lr(35tB4}&t6zg> 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%0A?qx6s+bb7}jn4^;^(( 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 DKhMcT literal 0 HcmV?d00001 diff --git a/E2Manager/x2_setup_message/tests/xsetup_codec_test b/E2Manager/x2_setup_message/tests/xsetup_codec_test new file mode 100644 index 0000000000000000000000000000000000000000..eba9297becdaec5d5741ce8820e2dd897975d5f3 GIT binary patch literal 1697840 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 czJaStIEvD(=Xey7*%hZ){` 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 z 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

&H?62!TC8d5WE9#%1>sO9W<<-+t>j&oZ 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 bGHzo3Xn&{f|M*}12EW}ePs0I-@BjY+9l*|# literal 0 HcmV?d00001 diff --git a/LICENSES.txt b/LICENSES.txt new file mode 100644 index 0000000..84c6851 --- /dev/null +++ b/LICENSES.txt @@ -0,0 +1,28 @@ +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the "Software License"); +you may not use this software except in compliance with the Software +License. You may obtain a copy of the Software License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the Software License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the Software License for the specific language governing permissions +and limitations under the Software License. + + + +Unless otherwise specified, all documentation contained herein is licensed +under the Creative Commons License, Attribution 4.0 Intl. (the +"Documentation License"); you may not use this documentation except in +compliance with the Documentation License. You may obtain a copy of the +Documentation License at + +https://creativecommons.org/licenses/by/4.0/ + +Unless required by applicable law or agreed to in writing, documentation +distributed under the Documentation License is distributed on an "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the Documentation License for the specific language governing +permissions and limitations under the Documentation License. diff --git a/router.txt b/router.txt new file mode 100644 index 0000000..0a643f9 --- /dev/null +++ b/router.txt @@ -0,0 +1,17 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 + +newrt|end -- 2.16.6